github连接
向前辈致敬。
一个串口收发的小程序
功能就是串口数据的收发;
设置标题
Serial::setWindowTitle();
串口对象使用
比较基础的串口使用过程;
查找可用串口端口
通过QSerialPortInfo 类实现当前串口信息的显示,主要包括串口号和串口名称;
foreach (const QSerialPortInfo &info, QSerialPortInfo::availablePorts())
{
qDebug() << "Name : " << info.portName();
qDebug() << "Description :"<<info.description();
}
串口的连接
setPortName 指示端口名称(端口号)
setBaudRate 设置波特率
setDataBits(QSerialPort::Data8); 设置数据位数
setStopBits(QSerialPort::OneStop); 设置停止位数
setParity(QSerialPort::NoParity) 设置校验数
最后调用open(QIODevice::ReadWrite);打开串口。
串口断开
m_serialPort.close();
串口发送
m_serialPort.write(QByteArray);
接收回调以及接收
通过信号-槽的方式连接串口的接收信号和处理函数。
对象globlePort 的readyRead信号连接到 该UI对象this的ReciveDate方法上;
connect(&globlePort,&QSerialPort::readyRead,this,&Serial::ReciveDate);//串口打开就接收消息
与常规需要建立接收回调进程的思想有点新,比较灵活;
通过直接读取实现接收
m_serialPort.readAll()
QT中导入模块
在peo文件中,导入模块 QT += serialport
UI按键的手动绑定
绑定“openButton”按键的clicked事件,到本this线程的ButtonOpenPort任务
connect(ui->openButton,&QPushButton::clicked,this,&Serial::ButtonOpenPort);//打开串口信号
QTimer
常规操作
myTime = new QTimer();//新建
myTime->stop();//停止
myTime->setInterval(1000);//1ms定时器,类似于单片机的中断函数
connect(myTime,SIGNAL(timeout()),this,SLOT(Timer0_callback()));
myTime->start();//启动
获取button的字符串+比较两个字符串
ui->pushButton_3->text() == QString(“暂停显示”)
for循环
foreach(qlist)
{…
}
TODO
HEX数据的处理
数据发送解析
数据接收解析