我已經給QSerialPort
和QExtSerialPort
一個嘗試,似乎都不能正確支持250k。 QExtSerialPort
似乎對它有支持,因爲它是一種列出的波特率類型,但是每當我使用它連接到電路板時,我所得到的就是像波特率設置不正確的垃圾數據。我已經驗證了所有其他設置,並且由於我已經使用miniterm對其進行了測試,因此主板可以工作超過250k。是否還有其他庫或者我應該嘗試與QExtSerialPort
不同?Qt:串行庫,支持波特率250k
回答
我推測你的平臺必須是Linux,因爲在Windows上實際上只有一種設置波特率的方法,如果它不起作用,那麼它不適用於所有人。
存在舍入的問題。 QSerialPort
代碼簡單地將波特率發生器的基準頻率除以波特率。這是一個整數除法,並用截斷完成。如果您選擇的波特率不完全支持硬件,則截斷可能會將其轉向無效方向 - 可能會有更大的更小的除數。您應該檢查波特率發生器的基本頻率並相應地選擇您的波特率。
在Linux上有設置波特率的many ways。 QSerialPort
在引用的答案中不支持三種方法中的兩種方法。因此它不會支持偶爾支持三種方法中的兩種的驅動程序。我不知道有多少司機可能會遇到這個問題 - 畢竟,這可能是一個紅鯡魚。
請分享您的設備在Linux上使用的確切驅動程序是什麼,以及內核版本是什麼。我可以看看,並檢查這個驅動程序是否會導致目前QSerialPort
代碼的問題。
爲了避免四捨五入問題,作爲臨時解決方法,你可以通過下面的技巧提取基本波特率發生器頻率:
// This must be at the very top of the .cpp file
#define private public
#include <QSerialPort>
#include "private/qserialport_p.h"
#include "private/qserialport_unix_p.h"
#undef private
QSerialPort * port;
...
// after the port was opened
int baudBase = port->d_ptr->currentSerialInfo.baud_base;
在.pro
文件,你需要QT += core-private
,這是Qt的5。 Qt 4你需要有可用來源的Qt。
真正的修復當然屬於QSerialPort
。我對QExtSerialPort
一無所知。
今天我會說這個。它工作正常,如果董事會是在波特率115k但20萬隻似乎是不行,所以至少有一個備份選項。 –
只是我忘了提到的一件事,它是一個跨平臺的應用程序,這就是爲什麼我試圖使用Qt的QSerialPort將其抽象出來。目前在OS X上構建它。 –
在OS X上,'QSerialPort'代碼也只使用兩種設置自定義波特率的方法之一,實際上它跳過了更簡單的方式,可能會受到更多驅動程序的支持。它使用'IOSSIOSPEED' ioctl,而不是在'termios'結構中使用'c_ispeed'和'c_ospeed'(可通過'cfsetpspeed(...)'訪問)。 –
- 1. Qt - 設置自定義波特率
- 2. 有沒有辦法在C中獲得支持的波特率?
- 3. 用於Arduino®的MATLAB支持包硬件波特率變化
- 4. 波特率arduino
- 5. 設置linux串口波特率高於4兆波特
- 6. 串口不接受波特率
- 7. 波特率計算
- 8. 輸入波特率vs輸出波特率
- 9. Qt支持VNC
- 10. 以100波特率處理串行端口
- 11. 無法爲Ubuntu的USB串行端口設置波特率12.04
- 12. 串行編程爲POSIX,非標準波特率
- 13. Arduino作爲100k波特率的77位串行'snoop'工具?
- 14. Java:讀取串行端口(波特率921600)
- 15. 串行端口緩衝器/波特率/數據丟失
- 16. 用於串行通信的「奇怪」波特率的起源
- 17. 設置UsbDeviceConnection的波特率
- 18. stm32f4 uart波特率設置?
- 19. UBoot波特率參數
- 20. 自定義波特率
- 21. Xbee波特率配置
- 22. 調整pic24的波特率
- 23. 示波器不支持STI
- 24. 在Android上可以實現大於115200波特率的USB波特率嗎?
- 25. 快速插入250k行
- 26. 通過Comport以14400波特率與Java進行通信 - 串行通信
- 27. 支持庫不支持aar
- 28. OPC UA支持QT mobile
- 29. 不Qt的擴展支持
- 30. Qt要求C++ 11支持
你確定你在談論Miniterm,而不是Minicom或其他? Miniterm是OS/X上的一個輔助應用程序,它本身並不真正可用。如果你在談論Minicom,那麼我可以看看它的源代碼並與'QSerialPort'進行比較。 –
對不起,我應該更準確,它是miniterm.py。 –
你能準確的告訴我你下載你的miniterm.py的地方以及它的版本嗎?似乎有很多副本在那裏。 –