Linux串口打印信息工具,基于Qt实现Linux或Windows串口打印工具
一、运行结果
二、实现过程
1.打开串口
首先我们需要创建一个QSerialPort对象,然后调用它的open函数打开串口设备,然后再调用它的bool setBaudRate(qint32 baudRate, Directions directions = AllDirections);
bool setDataBits(DataBits dataBits);
bool setParity(Parity parity);
bool setStopBits(StopBits stopBits);
等函数,设置串口波特率,数据位数,校验方式,停止位等参数。
代码如下:m_device->setPortName(session.device);
m_deviceState = DEVICE_OPENING;
if (m_device->open(session.openMode)) {
m_reconnectTimer.stop();
m_deviceState = DEVICE_OPEN;
// printDeviceInfo(); // debugging
m_device->setBaudRate(static_cast(session.baudRate));
m_device->setDataBits(session.dataBits);
m_device->setParity(session.parity);
m_device->setStopBits(session.stopBits);
m_device->setFlowControl(session.flowControl);
/* Disable RTS/DTR when no flow control or software flow control is used */
if (QSerialPort::FlowControl::HardwareControl != session.flowControl) {
// Force to emit QCheckBox::stateChanged signals to set proper logic levels on DTR/RTS lines.
// Note that on Linux when opening serial device even with no flow control, DTR and RTS lines are set to
// logic high, in RS232 that means a negative voltage on these lines (or just 0V for TTL based USB-UARTs).
// So this applies the same settings after reopen the device, and sets RTS/DTR to logic low when opening for
// first time when no flow control or software flow control is set.
emit controlPanel->m_dtr_line->stateChanged(controlPanel->m_dtr_line->checkState());
emit controlPanel->m_rts_line->stateChanged(controlPanel->m_rts_line->checkState());
}
m_device->flush();
controlPanel->m_combo_device->setEnabled(false);
m_previousChar = '\0';
// display connection parameter on status bar
m_device_statusbar->setDeviceInfo(m_device);
// enable all inputs if writing to the device is enabled
if (session.openMode == QIODevice::WriteOnly || session.openMode == QIODevice::ReadWrite) {
m_input_edit->setEnabled(true);
m_input_edit->setFocus();
m_bt_sendfile->setEnabled(true);
m_command_history->setEnabled(true);
}
}
2. 读取串口数据
首先调用QSerialPort对象的readAll函数读取数据。QByteArray readAll();
然后写数据到日记文件中,最后将数据显示在屏幕上。
具体代码如下:QByteArray data = m_device->readAll();
if (m_logFile.isOpen()) {
m_logFile.write(data);
m_logFile.flush();
}
m_output_display->displayData(data);
3.给串口发送数据
先从QLineEdit控件获取需要发送的数据,再添加一下换行符之类的数据,然后调用write函数,写数据到串口.
具体代码如下:QString cmd = m_input_edit->text();
m_input_edit->clear();
if (!m_device->isOpen()) {
return;
}
sendString(&cmd);
bool MainWindow::sendString(QString *s)
{
Settings::LineTerminator lineMode = m_combo_lineterm->currentData().value<:lineterminator>();
// ToDo
unsigned int charDelay = static_cast(m_spinner_chardelay->value());
// converts QString into QByteArray, this supports converting control characters being shown in input field as
// QChars
// of Control Pictures from Unicode block.
QByteArray bytes;
bytes.reserve(s->size());
for (auto &c : *s) {
bytes.append(static_cast(c.unicode()));
}
for (int i = 0; i
if (!sendByte(bytes[i], charDelay))
return false;
}
switch (lineMode) {
case Settings::LF:
if (!sendByte('\n', charDelay))
return false;
break;
case Settings::CR:
if (!sendByte('\r', charDelay))
return false;
break;
case Settings::CRLF:
if (!sendByte('\r', charDelay))
return false;
if (!sendByte('\n', charDelay))
return false;
break;
default:
break;
}
return true;
}
bool MainWindow::sendByte(const char c, unsigned long delay)
{
if (!m_device->isOpen()) {
return false;
}
if ((m_device->write(&c, 1))
qDebug() <errorString();
return false;
}
if (delay) {
millisleep(delay);
m_device->flush();
}
return true;
}
三、项目结构图
四、使用介绍
1.首先选择需要打开的串口设备,Linux系统下通常是/dev/tty? 或 /dev/ttyUSB? , Windows系统下可以通过在我的电脑>右键>管理>设备管理器>串口设备>查看哪个是你需要打开的设备。
2.设置波特率,位数,校验码,停止位等参数。
3.如果需要将打印写到文件中,则需勾选程序下发Logging to 前面的复选框。
4.按open按钮打开设备
5.如果需要发送数据,则在Input后的输入框数据需要发送的数据,然后按回车键,即可发送数据。
Linux串口打印信息工具,基于Qt实现Linux或Windows串口打印工具相关推荐
- 具备过滤串口打印信息的串口工具SerialTools
纯属找乐,不用勿喷.......免费下载,下载方式在最后! 设计初衷: 做嵌入式硬件同事应该都遇到过查看设备串口打印信息,有时打印的内容太多,总是找不到自己关注的log,因此花了一下午设计了这个简单的 ...
- 读芯片信息出错3_十分钟看懂串口打印信息(1)
一.软件串口打印信息加载流程 不管何种机芯方案,在上电开机后,软件 总会初始化复位和加载相关内容和应用,这部 分的信息通常我们采用串口工具来进行读写的 操作. 针对我们工作的需求和作为问题处理的可 靠 ...
- 分析arm linux启动打印信息
===================================================== arm linux系统启动相关文章列表: arm linux系统启动流程 http://bl ...
- 基于嵌入式linux电子相册设计,用于LINUX或者嵌入式LINUX的电子相册程序,基于QT开发...
用于LINUX或者嵌入式LINUX的电子相册程序,基于QT开发,包含源代码和编译好的可执行程序 linux_project\album\album.pro .............\.....\al ...
- Linux串口输出启动信息,linux开发板启动过程串口打印信息
满意答案 板子软件分三部分: 1.uboot (负责初始化基本硬件,如串口,网卡,usb口等,然后引导系统运行) 2.linux系统 (真正的操作系统) 3.你的应用程序 (基于操作系统的软件应用) ...
- linux内存硬件检测工具,13种在 Linux 系统上检测 CPU 信息的工具
1. /proc/cpuinfo 最简单的方法就是查看 /proc/cpuinfo ,这个虚拟文件展示的是可用CPU硬件的配置.$ more/proc/cpuinfo 通过查看这个文件,你能识别出物理 ...
- openwrt关闭串口打印信息
mt7620n仅有一个串口 由于开发板只有一个UART lite接口,在原生的OpenWrt中作为了内核打印和tty控制台所用. 而在很多情况下,需要使用串口与外部芯片进行通讯,这时就需要从OpenW ...
- linux打印信息命令行,技术|从 Linux 命令行进行打印
在 Linux 命令行进行打印的内容比单单一个 lp 命令多得多,让我们来看一些可用选项. Linux 命令行打印很容易.你可以使用 lp 命令来请求打印,并使用 lpq 命令来查看队列中有哪些打印作 ...
- linux隔行打印文本,详解正则表达式及Linux三大文本处理工具
grep.sed和awk都是文本处理工具,虽然都是文本处理工具但却都有各自的优缺点,一种文本处理命令是不能被另一个完全替换的,否则也不会出现三个文本处理命令了. 一.正则表达式 1.匹配字符的类型 [ ...
最新文章
- Linux上oracle的安装
- java面试的基本问题_java面试常见基础问题之一
- Spring详解(一):简介
- 获得C币规则(截止2017年10月已失效,万恶的CSDN)
- 爬虫goodreads数据_使用Python从Goodreads数据中预测好书
- java批量提取文件夹名称_bat 批量提取指定目录下的文件名
- 循环序列模型 —— 1.3循环神经网络
- 分析及解决SQLServer死锁问题
- 设置iis网页服务器cpu占比,asp.net-如何防止由于iis中的工作进程而导致CPU使用率100%...
- Linux命令查看电脑,linux查看文件大小命令
- 关于近十年来N-S方程的研究结果
- 学习笔记——最小生成树
- html下拉加载原理,GitHub - gavinjzx/wxPull: 原生JS实现微信公众号或网页使用下拉加载和上拉刷新...
- 详解typora配置华为云图床
- 【洛谷】P5149 会议座位
- Java 金额信息存储、精度运算及显示的处理
- WPS word表格中的神秘的底色
- star测试软件,PSTAR准备
- 微信公众号签到,签到后在活动大屏中实时展示签到人信息,也可以导出签到人信息用于抽奖
- 将Windows XP 中文版变为英文版
热门文章
- PHP 8.0 源码编译安装 JIT 尝鲜
- 微服务设计模式(上)
- 大规模分布式系统资源管理(二)
- C语言文件指针的基本函数介绍包含了fpoen、fclose、fgetc、fputc、fscanf、fprintf、fgets、fputs、fread、fwrite函数以及文件定位函数.
- 关于netty的FastThreadLocal的思考
- 收获,不止SQL优化——抓住SQL的本质--第十章
- win10系统:VMware无法在Windows运行该怎么办?
- BootStrap入门教程 (二)
- zookeeper专题:zookeeper集群模式下,leader选举流程分析
- netsh命令恢复网络_实例的状态检查和自动恢复