Qt串口通信

1. Qt串口通信类QSerialPort

在Qt5的的更新中,新增了串口通信的相关接口类QSerialPort,这使得在开发者在使用Qt进行UI开发时,可以更加简单有效地实现串口通信的相关功能。
开发者可以简单地通过#include<QSerialPort>,来使用系统包含的库函数。然而这里有一个非常容易忽略的问题,会导致编译时的报错。在使用QSerialPort类之前,需要在Qt的配置文件即.pro文件中添加Qt += serialport
详细的介绍请戳官方文档:http://doc.qt.io/qt-5/qserialport.html

2. 代码示例

a. 串口的初始化:

QSerialPort *serial = new QSerialPort();
QObject::connect(serial, SIGNAL(readyRead()), this, SLOT(recSerialData())); // 连接串口收到数据事件与读取数据函数
serial->setPortName("COM3");
serial->setBaudRate(QSerialPort::Baud9600);
serial->setParity(QSerialPort::NoParity);
serial->setDataBits(QSerialPort::Data8);
serial->setStopBits(QSerialPort::OneStop);
serial->setFlowControl(QSerialPort::NoFlowControl);
if (serial->open(QIODevice::ReadWrite)) {
    qDebug()<<"open success";
} else {
    qDebug()<<"open failed";
}

b. 向串口发送数据

serial->write("test");

c. 接收串口返回的数据

void MySerial::recSerialData()
{
    QByteArray ba;
    ba = serial->readAll();
    display(ba);
}
3. 总结

总的来说,使用Qt5进行串口通信是较为简单的。大致步骤为:配置串口参数->打开串口->收发数据。

4. 附录(Mac下的串口使用Tip)

在Mac下使用串口,基本流程和步骤同Windows差异不是很大,但是有一些细节,还是想逼叨两句,让受到困扰的同志们少走弯路。
首先是串口驱动程序的下载和安装CH341SER_for_Mac。在安装完成后,由于Yosemite10以后的版本,默认开机不加载第三方驱动程序,所以在驱动安装完成后,需要在terminal中输入sudo nvram boot-args=”kext-dev-mode=1来默认加载驱动程序。如果重启开机后,在网络设置中看到下图中的“USB2.0”,那么证明你的Mac安装串口驱动成功。

pic_usb
pic_usb

之后插入相应的设备,在terminal中输入ls /dev/ | grep ch则可以看到设备的名称,在串口初始化的步骤中进行更改serial->setPortName("your-port-name");,现在你就可以顺利地使用Mac进行串口的相关操作了!
Mac串口通信参考资料:http://0xcf.com/2015/03/13/chinese-arduinos-with-ch340-ch341-serial-usb-chip-on-os-x-yosemite/


By tjt
2015.09.02

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 174,143评论 25 709
  • Qt是属于一个跨平台的GUI开发软件,支持的平台有Unix、Linux、Windows/WinCE、IOS等。 Q...
    一叶之界阅读 8,275评论 0 17
  • 因手机壳测量工作需要多个小市场多次测量拼接,拟采用位移平台+标致点的方法,现记录一些通过Qt5(C++)控制位移平...
    LCCCC_0523阅读 1,440评论 0 1
  • 最近总有两个小人在我的脑袋里对峙。一个人想一些东西,另一个人就反驳回去。两个人都有道理,简直了。 比如我们为什么要...
    Daring_dd阅读 1,945评论 0 0
  • 姓名:李俊秀 公司:宁波大发化纤有限公司 期数:六项精进259期学员 组别:感谢一组 【日精进打卡第67天】 【知...
    花语花香9阅读 184评论 0 0