- QtSerialPort
QtSerialPort
簡介
QtSerialPort模塊是Qt5庫的附加部分,為硬件和虛擬的串口提供了統一的接口。注意:該模塊也增加了對Qt4的支持。
串口由於其簡單和可靠,目前在像嵌入式系統,機器人等工業中依舊用得很多。使用QtSerialPort模塊,開發者可以大大縮短開發串口相關的應用程序的周期。使用QtSerialPort模塊最初是來源於第三方庫QSerialDevice(2.0分支),現在QtSerialPort已經移到了https://codereview.qt-project.org/代碼庫上。
功能介紹
目前,該模塊API只包括兩個類:Serial和SerialPortInfo。
【SerialPort】
SerialPort是該模塊的基礎類,提供了一系列基礎的方法和屬性來訪問串口資源。
SerialPort類對操作系統的支持如下:
對Symbian平台的支持只是部分的,是因為缺乏開發者,因為諾基亞已經決定放棄該平台,Qt5也不會包括對該平台的支持。
【SerialPortInfo】
SerialPortInfo是一個幫助類。它提供了系統上可用的串口的信息。
SerialPortInfo類對操作系統的支持如下:
對Symbian平台的支持只是部分的,是因為缺乏開發者,因為諾基亞已經決定放棄該平台,Qt5也不會包括對該平台的支持。
源代碼
目前,QtSerialPort相關的源代碼都可以通過瀏覽器瀏覽:https://qt.gitorious.org/qt/qtserialport
也可以通過git下載:git clone git://gitorious.org/qt/qtserialport.git
編譯和安裝
注意:最好選擇影子構建,因為這樣的話構建目錄和源代碼目錄是分開的,這樣就允許你保持源代碼目錄是干凈的。
編譯步驟:
1、配置編譯環境
*安裝Perl
*確保環境變量設置正確:Qt4/Qt5;編譯器;Perl
*創建編譯目錄:跟源代碼目錄同級
/
|- /serialport-src
|- /serialport-build
2、Perl只是在Qt5的時候才需要,Qt4的情況下可以不配置
3、使用如下推薦步驟在Qt4/Qt5下編譯和安裝QtSerialPort庫
cd serialport-build
qmake ../serialport-src/qtserialport.pro
make [or 'nmake' for MSVC compiler, or 'mingw32-make' for MinGW compiler]
make install [or 'nmake install' for MSVC compiler, or 'mingw32-make install' for MinGW compiler]
注意:在*nix系統上,你可能需要超級用戶的權限才能執行安裝這一步驟:
sudo make install
使用方法
QtSerialPort提供相應的庫文件,我們在編寫自己的應用程序的時候可以使用這些庫,使用方法如下:
Qt4
CONFIG += serialport
Qt5
QT += serialport
然后在工程中包含相應的頭文件就行:
...
#include <QtSerialPort/QSerialPort>
#include <QtSerialPort/QSerialPortInfo>
...
示例代碼
#include <QtCore/QCoreApplication> #include <QtCore/QDebug> #include <QtSerialPort/QSerialPort> #include <QtSerialPort/QSerialPortInfo> QT_USE_NAMESPACE int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); // Example use QSerialPortInfo foreach (const QSerialPortInfo &info, QSerialPortInfo::availablePorts()) { qDebug() << "Name : " << info.portName(); qDebug() << "Description : " << info.description(); qDebug() << "Manufacturer: " << info.manufacturer(); // Example use QSerialPort QSerialPort serial; serial.setPort(info); if (serial.open(QIODevice::ReadWrite)) serial.close(); } return a.exec(); }
注意:CONFIG += serialport必須是.pro文件中的第一行或者第二行。
實際操作
1、代碼下載:
2、編譯:
3、安裝:
sudo make install后,我的系統上因為設置了Qt5的環境變量:
頭文件安裝到了:/opt/Qt5.0.1/5.0.1/gcc/include/QtSerialPort
庫文件安裝到了:/opt/Qt5.0.1/5.0.1/gcc/lib
4、測試,運行自帶的examples:
5、使用QSerialPort庫
(1)創建一個Qt Console應用程序
修改.pro文件,添加serialport庫,如下:
(2)修改main函數
如下:添加QtSerialPort庫的相應頭文件,並實現簡單的代碼:
#include <QtCore/QDebug> #include "QSerialPort" #include "QSerialPortInfo" int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); // Example use QSerialPortInfo foreach (const QSerialPortInfo &info, QSerialPortInfo::availablePorts()) { qDebug() << "Name : " << info.portName(); qDebug() << "Description : " << info.description(); qDebug() << "Manufacturer: " << info.manufacturer(); // Example use QSerialPort QSerialPort serial; serial.setPort(info); if (serial.open(QIODevice::ReadWrite)) serial.close(); } return a.exec(); }