雖然網路上很多人使用 Redhat 或者Fedora 作為上位機操作系統,但是我覺得使用Ubuntu最為方便,因為需要的軟體包大部分都可以通過 apt-get 方式來安裝,而不必從源代碼開始自己編譯。
雖然網路上很多人使用 Redhat 或者Fedora 作為上位機操作系統,但是我覺得使用Ubuntu最為方便,因為需要的軟體包大部分都可以通過 apt-get 方式來安裝,而不必從源代碼開始自己編譯。要知道,自己編譯源代碼可不是一件輕松的事,因為在編譯過程中經常會出現令人意外而且莫名其妙的錯誤。
我們使用的操作系統是 Ubuntu 8.04,使用目前最新版本的QT 4.4.0,安裝起來即為簡單,只要在命令編輯運行以下命令就行:
sudo apt-get install qt4-dev-tools qt4-doc qt4-qtconfig qt4-demos qt4-designer
注意在這個版本的軟體包中,qt4-dev-tools 包含了Qt Assistant及Qt Linguist等工具,因此不需要單獨安裝這兩個工具。其它的,qt4-doc 是幫助文檔,包含了Qt中各個類庫的詳細說明以及豐富的例子程序,可以使用Qt Assistant 工具來打開閱讀。qt4-qtconfig 是配置Qt環境的一個對話框,一般默認就行了,很少有必要去更改。qt4-demos 包含很多可以運行起來的可執行文件以及源代碼。qt4-designer是用來設計GUI界面的設計器。
為了連接MySQL資料庫,需要安裝連接MySQL的驅動程序:
sudo apt-get install libqt4-sql-mysql
比起在Windows下安裝和配置Qt的MySQL驅動來說,簡直太方便了。如果還需要其它的沒有默認安裝的Qt庫,可以在命令行輸入 sudo apt-get install libqt4- 然後按tab鍵自動補全,就會列出所有以libqt4- 開頭的軟體包,如下圖所示:
這些都可以使用一個命令搞定,而不需要自己從源碼開始編譯。在記不準或不知道名字的情況下,使用tab鍵列出所有可選的軟體包是一個很實用的小技巧。
在我的項目中,還需要畫一些數據曲線和統計圖表等,而第三方的QWT庫提供了這些功能。同樣,只需要一個命令即可完成安裝:
sudo apt-get install libqwt5-qt4 libqwt5-qt4-dev
這時,打開Qt Designer,就會發現左邊的Widget列表裡面多了「Qwt Widget」這一組。
最後,關於集成開發環境我覺得QDevelop很不錯,它跟Qt Designer結合的很好,而且有提示類成員函數的功能。運行以下命令安裝:
sudo apt-get install qdevelop
這樣,使用Qdevelop編寫代碼和編譯、調試,使用Qt Designer設計界面,開發效率較高。
㈡ Qt串口編程,上位機如果要同時進行速度溫度測量,需要兩個串口還是一個串口
請參考:
1、PC電腦的串口可以同時存在很多個(幾十個)。
2、數據採集,如果你的速度和溫度能在一個採集模塊或者通過單片機什麼的進行採集,然後通過一個串口進行數據上報,那麼此時你就可以只用一個串口就連接上位機。
3、如果你的速度和溫度是2個採集模塊,那麼用2個串口就行了,Qt裡面僅僅就是多開一個串口採集線程而已。
4、Qt裡面可以使用的串口數沒有限制。可多個。
㈢ QT開發(五十)——QT串口編程基礎
一、QtSerialPort簡介
1、串口通信基礎
目前使用最廣泛的串口為DB9介面,適用於較近距離的通信。一般小於10米。DB9介面有9個針腳。
串口通信的主要參數如下:
A、波特率:衡量通信速度的參數,表示每秒鍾傳送的bit的個數。例如9600波特表示每秒鍾發送9600個bit。
B、數據位:衡量通信中實際數據位的參數,當計算機發送一個信息包,實際包含的有效數據位個數。
C、停止位:用於表示單個包的最後一位。典型的值為1和2位。
D、奇偶校驗位:串口通信中一種檢錯方式。常用的檢錯方式有:偶、奇校驗。
2、QtSerialPort模塊簡介
QtSerialPort模塊是QT5中附加模塊的一個模塊,為硬體和虛擬的串口提供統一的介面。
串口由於其簡單和可靠,目前在像嵌入式系統、機器人等工業中依舊用得很多。使用QtSerialPort模塊,開發者可以大大縮短開發串口相關的應用程的周期。
Qt SerialPort提供了基本的功能,包括配置、I/O操作、獲取和設置RS-232引腳的信號。
Qt SerialPort模塊暫不支持以下特性:
A、終端的特性,例如回顯,控制CR/LF等等
B、文本模式段飢
C、讀或寫操作的超時和延時配置
D、當RS-232引腳信號變化通知
#include <QtSerialPort/QtSerialPort>
要鏈接QtSerialPort模塊,需要在.pro文件中添加如下內容:
QT += serialport
二、QSerialPort
1、QSerialPort簡介仔賀
QSerialPort提供了訪問串口的介面函數。使用輔助類QSerialPortInfo可以獲取可用的串口信息。將QSerialPortInfo輔助類對象做為參數,使用setPort()或setPortName()函數可以設置要訪問的串口設備。
設置好埠後,可以使用open()函數以只讀、只寫或讀寫的模式打開使用。
注意,串口使用獨占方式打開。
使用close()函數關閉串口並且取消IO操作。
串口成功打開後,QSerialPort會嘗試確定串握戚返口的當前配置並初始化。可以使用setBaudRate()、setDataBits()、setParity()、setStopBits()和setFlowControl()函數重新配置埠設置。
有一對名為QSerialPort::dataTerminalReady、QSerialPort::requestToSend的屬性
QSerialPort提供了中止正在調用線程直到信號觸發的一系列函數。這些函數用於阻塞串口。
waitForReadyRead():阻塞調用,直到有新的數據可讀
waitForBytesWritten():阻塞調用,直到數據以及寫入串口
阻塞串口編程與非阻塞串口編程完全不同。阻塞串口不會要求時間循環並且通常會簡化代碼。然而,在GUI程序中,為了避免凍結用戶界面,阻塞串口編程只能用於非GUI線程。
QSerialPort也能使用QTextStream和QDataStream的流操作符。在試圖使用流操作符>>讀時,需要確保有足夠可用的數據。
2、QSerialPort成員函數
QSerialPort::QSerialPort(QObject *parent = Q_NULLPTR)
QSerialPort::QSerialPort(const QString &name, QObject *parent = Q_NULLPTR)
QSerialPort::QSerialPort(const QSerialPortInfo &serialPortInfo, QObject *parent = Q_NULLPTR)
[virtual] bool QSerialPort::atEnd() const
[signal] void QSerialPort::baudRateChanged(qint32 baudRate, QSerialPort::Directions directions)
[virtual] qint64 QSerialPort::bytesAvailable() const
[virtual] qint64 QSerialPort::bytesToWrite() const
[virtual] void QSerialPort::close()
void QSerialPort::setPort(const QSerialPortInfo &serialPortInfo)
void QSerialPort::setPortName(const QString &name)
三、QSerialPortInfo
1、QSerialPortInfo簡介
QSerialPortInfo類提供已有串口設備的信息。使用QSerialPortInfo類的靜態成員函數生成QSerialPortInfo對象的鏈表。鏈表中的每個QSerialPortInfo對象代表一個串口,每個串口可以使用埠名、系統定位、描述、製造商查詢。QSerialPortInfo類對象也可以用做QSerialPort類的setPort()成員函數的參數。
2、QSerialPortInfo成員函數
QSerialPortInfo::QSerialPortInfo(const QSerialPort &port)
QSerialPortInfo::QSerialPortInfo(const QString &name)
QSerialPortInfo::QSerialPortInfo(const QSerialPortInfo &other)
[static] QList<QSerialPortInfo> QSerialPortInfo::availablePorts()
QString QSerialPortInfo::description() const
bool QSerialPortInfo::hasProctIdentifier() const
bool QSerialPortInfo::hasVendorIdentifier() const
bool QSerialPortInfo::isBusy() const
QString QSerialPortInfo::manufacturer() const
QString QSerialPortInfo::portName() const
quint16 QSerialPortInfo::proctIdentifier() const
QString QSerialPortInfo::serialNumber() const
[static] QList<qint32> QSerialPortInfo::standardBaudRates()
void QSerialPortInfo::swap(QSerialPortInfo &other)
QString QSerialPortInfo::systemLocation() const
quint16 QSerialPortInfo::vendorIdentifier() const
3、QSerialPortInfo顯示串口信息實例