一、运行结果

二、实现过程

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串口打印工具相关推荐

  1. 具备过滤串口打印信息的串口工具SerialTools

    纯属找乐,不用勿喷.......免费下载,下载方式在最后! 设计初衷: 做嵌入式硬件同事应该都遇到过查看设备串口打印信息,有时打印的内容太多,总是找不到自己关注的log,因此花了一下午设计了这个简单的 ...

  2. 读芯片信息出错3_十分钟看懂串口打印信息(1)

    一.软件串口打印信息加载流程 不管何种机芯方案,在上电开机后,软件 总会初始化复位和加载相关内容和应用,这部 分的信息通常我们采用串口工具来进行读写的 操作. 针对我们工作的需求和作为问题处理的可 靠 ...

  3. 分析arm linux启动打印信息

    ===================================================== arm linux系统启动相关文章列表: arm linux系统启动流程 http://bl ...

  4. 基于嵌入式linux电子相册设计,用于LINUX或者嵌入式LINUX的电子相册程序,基于QT开发...

    用于LINUX或者嵌入式LINUX的电子相册程序,基于QT开发,包含源代码和编译好的可执行程序 linux_project\album\album.pro .............\.....\al ...

  5. Linux串口输出启动信息,linux开发板启动过程串口打印信息

    满意答案 板子软件分三部分: 1.uboot (负责初始化基本硬件,如串口,网卡,usb口等,然后引导系统运行) 2.linux系统 (真正的操作系统) 3.你的应用程序 (基于操作系统的软件应用) ...

  6. linux内存硬件检测工具,13种在 Linux 系统上检测 CPU 信息的工具

    1. /proc/cpuinfo 最简单的方法就是查看 /proc/cpuinfo ,这个虚拟文件展示的是可用CPU硬件的配置.$ more/proc/cpuinfo 通过查看这个文件,你能识别出物理 ...

  7. openwrt关闭串口打印信息

    mt7620n仅有一个串口 由于开发板只有一个UART lite接口,在原生的OpenWrt中作为了内核打印和tty控制台所用. 而在很多情况下,需要使用串口与外部芯片进行通讯,这时就需要从OpenW ...

  8. linux打印信息命令行,技术|从 Linux 命令行进行打印

    在 Linux 命令行进行打印的内容比单单一个 lp 命令多得多,让我们来看一些可用选项. Linux 命令行打印很容易.你可以使用 lp 命令来请求打印,并使用 lpq 命令来查看队列中有哪些打印作 ...

  9. linux隔行打印文本,详解正则表达式及Linux三大文本处理工具

    grep.sed和awk都是文本处理工具,虽然都是文本处理工具但却都有各自的优缺点,一种文本处理命令是不能被另一个完全替换的,否则也不会出现三个文本处理命令了. 一.正则表达式 1.匹配字符的类型 [ ...

最新文章

  1. Linux上oracle的安装
  2. java面试的基本问题_java面试常见基础问题之一
  3. Spring详解(一):简介
  4. 获得C币规则(截止2017年10月已失效,万恶的CSDN)
  5. 爬虫goodreads数据_使用Python从Goodreads数据中预测好书
  6. java批量提取文件夹名称_bat 批量提取指定目录下的文件名
  7. 循环序列模型 —— 1.3循环神经网络
  8. 分析及解决SQLServer死锁问题
  9. 设置iis网页服务器cpu占比,asp.net-如何防止由于iis中的工作进程而导致CPU使用率100%...
  10. Linux命令查看电脑,linux查看文件大小命令
  11. 关于近十年来N-S方程的研究结果
  12. 学习笔记——最小生成树
  13. html下拉加载原理,GitHub - gavinjzx/wxPull: 原生JS实现微信公众号或网页使用下拉加载和上拉刷新...
  14. 详解typora配置华为云图床
  15. 【洛谷】P5149 会议座位
  16. Java 金额信息存储、精度运算及显示的处理
  17. WPS word表格中的神秘的底色
  18. star测试软件,PSTAR准备
  19. 微信公众号签到,签到后在活动大屏中实时展示签到人信息,也可以导出签到人信息用于抽奖
  20. 将Windows XP 中文版变为英文版

热门文章

  1. PHP 8.0 源码编译安装 JIT 尝鲜
  2. 微服务设计模式(上)
  3. 大规模分布式系统资源管理(二)
  4. C语言文件指针的基本函数介绍包含了fpoen、fclose、fgetc、fputc、fscanf、fprintf、fgets、fputs、fread、fwrite函数以及文件定位函数.
  5. 关于netty的FastThreadLocal的思考
  6. 收获,不止SQL优化——抓住SQL的本质--第十章
  7. win10系统:VMware无法在Windows运行该怎么办?
  8. BootStrap入门教程 (二)
  9. zookeeper专题:zookeeper集群模式下,leader选举流程分析
  10. netsh命令恢复网络_实例的状态检查和自动恢复