我已经给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. 用于Arduino®的MATLAB支持包硬件波特率变化
- 2. 有没有办法在C中获得支持的波特率?
- 3. 波特率arduino
- 4. 设置linux串口波特率高于4兆波特
- 5. 串口不接受波特率
- 6. 输入波特率vs输出波特率
- 7. Qt支持VNC
- 8. 用于串行通信的“奇怪”波特率的起源
- 9. Arduino作为100k波特率的77位串行'snoop'工具?
- 10. 以100波特率处理串行端口
- 11. 串行端口缓冲器/波特率/数据丢失
- 12. Java:读取串行端口(波特率921600)
- 13. 无法为Ubuntu的USB串行端口设置波特率12.04
- 14. 串行编程为POSIX,非标准波特率
- 15. 设置UsbDeviceConnection的波特率
- 16. Xbee波特率配置
- 17. 调整pic24的波特率
- 18. stm32f4 uart波特率设置?
- 19. UBoot波特率参数
- 20. 自定义波特率
- 21. 示波器不支持STI
- 22. 快速插入250k行
- 23. 通过Comport以14400波特率与Java进行通信 - 串行通信
- 24. 缺少Qt SSL支持
- 25. Qt是否支持OpenMP?
- 26. 在Linux上qt openGL支持
- 27. Qt支持windows bluetooth API吗?
- 28. 带VS2012的OpenCV(Qt支持)
- 29. QT多语言支持?
- 30. 构建Qt 4.8支持QtDBus
你确定你在谈论Miniterm,而不是Minicom或其他? Miniterm是OS/X上的一个辅助应用程序,它本身并不真正可用。如果你在谈论Minicom,那么我可以看看它的源代码并与'QSerialPort'进行比较。 –
对不起,我应该更准确,它是miniterm.py。 –
你能准确的告诉我你下载你的miniterm.py的地方以及它的版本吗?似乎有很多副本在那里。 –