1.概述
因为项目需要,对Qt的串口通信进行了一些学习,这个项目的一个需求是将一个测温仪器的数据读取到电脑进行处理,根据这个仪器的通信协议,每次读取前都需要对它写入命令。这里用到了Qt进行了读写操作,其中遇到了关于十六进制Write问题并得以解决。使用到的Qt库:QtSerialPort
2.详细
首先需要在mainwindow.h中添加头文件和串口类的声明,并写一个槽函数用来读取数据:
#include <QtSerialPort/QSerialPort>
#include <QtSerialPort/QSerialPortInfo>
....
private slots:
void readData();
....
QSerialPort *serial;
然后在构造函数中进行初始化:
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { serial = new QtserialPort; serial->setPortName((QString)"COM13"); // 指定端口 serial->setBaudRate(QSerialPort::Baud19200); // 设置波特率 serial->setDataBits(QSerialPort::Data8); // 设置位数 serial->setParity(QSerialPort::EvenParity); // 设置偶校验 serial->setStopBits(QSerialPort::OneStop); // 设置一个停止位 serial->setFlowControl(Q