Qt串口实战
初步小结
我在疫情期间学习了Qt,现在在团队里做上位机,所以最近选择写一款Qt的串口助手来加深一下自己对Qt的理解。起先是以为很简单的,但是工程问题和在课堂上学习的课本知识是不一样的,总会遇到种种的困难。但是,但是,但是某位伟大的思想家(疯狂暗示本人)说过 “遇事不决,先问百度!”。
开发环境
MacOS,QtCreator版本Qt5.14.2,C++11。
框架的搭建
由于串口助手会使用到GUI界面,所以UI界面的开发我都是使用QtCreator下自带的设计师界面开发的。
总体的框架是:
配置栏:串口号,波特率,数据位,停止位,校验位。
按钮:开启,关闭,发送,清除。
数据:接收栏,发送栏。
具体实现
1.Qt串口的读取
foreach(const QSerialPortInfo &info , QSerialPortInfo::availablePorts())
{
list << info.portName();
}
其中的foreach是C++中对元素的遍历与访问,将读取到的数据保存在list这个变量里面
2.QSerialPort类的使用
在我自己写的串口中我自己定义了一个SerialPort的类(其继承自QSerialPor),包含了四个成员变量
public:
// 串口所需的成员
QSerialPort::BaudRate baudRate ; // 设置波特率
QSerialPort::DataBits dataBits ; //设置数据位
QSerialPort::StopBits stopBits ; //设置停止位
QSerialPort::Parity parity ; //设置校验位
该类包含了一个成员函数 SerialPort::QStringList getSerialPortList(); 其作用就是读取当前的串口号并返回。
3.MainWindow
MainWindow 是该程序的主界面,几乎所有控件是在该页面实现的。
配置SerialPort的基本信息
/*---------------.h文件-------------------*/
//在.h类priavate内创建SerialPort 的指针变量,及其构造函数 void SerialInit();
private:
SerialPort *serial;
/*---------------.cpp文件-------------------*/
void MainWindow::SerialInit(){
/*配置单端口信息*/
serial = new SerialPort;
/*配置端口号*/
ui->serialCb->addItems(serial->getSerialPortList());
//设置波特率
if(ui->baudCb->currentText() == "4800")
serial