Qt串口實現921600傳輸速率的方法

來源:互聯網
上載者:User

標籤:

環境配置:主機: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傳輸速率的方法

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.