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安裝串口驅動成功。

之后插入相應的設備,在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