標籤:
環境配置:主機:XPQT:5.4.0
寫在這裡的重點並不是告訴人如何在Qt的串口編程中實現921600的Bps。
1、在Qt中使用串口,我們需要一個第三方的串口類:qextserialport。在其qextserialbase.h檔案中,提供了如下常用的傳輸速率:
enum BaudRateType { BAUD50, //POSIX ONLY BAUD75, //POSIX ONLY BAUD110, BAUD134, //POSIX ONLY BAUD150, //POSIX ONLY BAUD200, //POSIX ONLY BAUD300, BAUD600, BAUD1200, BAUD1800, //POSIX ONLY BAUD2400, BAUD4800, BAUD9600, BAUD14400, //WINDOWS ONLY BAUD19200, BAUD38400, BAUD56000, //WINDOWS ONLY BAUD57600, BAUD76800, //POSIX ONLY BAUD115200, BAUD128000, //WINDOWS ONLY BAUD256000 //WINDOWS ONLY};
2、其實要做的簡單來說就是添加一種我們需要的傳輸速率,不需要特別的知識,考慮下從應用程式層到OS層串口實現的流程,我們只要按照這個流程,添加相應的資料—宏定義/枚舉值即可。
3、那麼,動手吧。以921600bps為例。
1)在Qt編程時,設定串口傳輸速率調用BaudRateType裡的枚舉值,那麼就在BaudRateType中添加921600的枚舉值:
enum BaudRateType{......BAUD921600}
2)BAUD921600底層的調用在win_qextserialport.cpp檔案的void Win_QextSerialPort::setBaudRate(BaudRateType baudRate)中,那麼我們就添加其對應的case語句:
void Win_QextSerialPort::setBaudRate(BaudRateType baudRate){ ...... /* 921600 baud */ case BAUD921600: TTY_PORTABILITY_WARNING("Win_QextSerialPort Portability Warning: POSIX does not support 921600 baud operation."); Win_CommConfig.dcb.BaudRate=CBR_921600; break;}
3)現在,我們需要找到CBR_921600的底層調用,它在Qt安裝目錄C:\Qt\Qt5.4.0\Tools\mingw491_32\i686-w64-mingw32\include下面的winbase.h檔案中:
C:\Qt\Qt5.4.0\Tools\mingw491_32\i686-w64-mingw32\include\winbase.h:#define CBR_110 110#define CBR_300 300#define CBR_600 600#define CBR_1200 1200#define CBR_2400 2400#define CBR_4800 4800#define CBR_9600 9600#define CBR_14400 14400#define CBR_19200 19200#define CBR_38400 38400#define CBR_56000 56000#define CBR_57600 57600#define CBR_115200 115200#define CBR_128000 128000#define CBR_256000 256000#define CBR_460800 460800#define CBR_921600 921600
我們只需要添加自己需要的傳輸速率對應的CBR_921600即可。
4)大功告成
4、寫到這裡,重點是體會到,面對問題時的思考方式。或者是思路,是非常重要的。簡單來說就是,多動腦。
Qt串口實現921600傳輸速率的方法