前言
Qt写上位机时,串口通信是个常用功能,在Qt4的时候有第三方模块QextSerialPort,到了Qt5.1官方提供了QSerialPort模块。
目录
前言
获取串口信息:QSerialPortInfo
串口IO操作:QSerialPort
实例操作
补充:16进制文本(如“0A 13 EF”)转16进制数据(如0x0A 0x13 0xEF)
使用该模块需要在pro文件中添加:QT += serialport
主要使用两个类:QSerialPort和QSerialPortInfo
获取串口信息:QSerialPortInfo获取串口名列表
QStringList slist;
foreach (const QSerialPortInfo &info, QSerialPortInfo::availablePorts()) {
//检测是否可用
f(!info.isBusy())
slistsetBaudRate(115200); //波特率
serialIo->setDataBits(QSerialPort::Data8); //数据位
serialIo->setParity(QSerialPort::NoParity); //校验位
serialIo->setStopBits(QSerialPort::OneStop); //停止位
serialIo->setFlowControl(QSerialPort::NoFlowControl);//流控制一般没用
//[2]串口开启
if(serialIo->open(QIODevice::ReadWrite)){
qDebug()write(send_data);
qDebug()setDataBits(databit);
serialIo->setParity(parity);
serialIo->setStopBits(stopbit);
serialIo->setFlowControl(flowcontrol);//这个我一般没用
if(serialIo->open(QIODevice::ReadWrite)){
qDebug()setEnabled(enabled);
ui->boxDataBits->setEnabled(enabled);
ui->boxParity->setEnabled(enabled);
ui->boxStopBits->setEnabled(enabled);
ui->boxFlowControl->setEnabled(enabled);
}
void MainWidget::sendData()
{
//注意收发的编码问题,我一般只是发命令吗和字节数据,没怎么发字符串,用latin1就行了
const QByteArray send_data=ui->textSend->toPlainText().toUtf8();
if(send_data.size()isOpen()){
serialIo->write(send_data);
qDebug()
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?