Qt - 设置自定义波特率

Posted

技术标签:

【中文标题】Qt - 设置自定义波特率【英文标题】:Qt - Setting a custom baud rate 【发布时间】:2016-07-11 19:36:22 【问题描述】:

我正在尝试使用 Qt 在 Linux 上为我的设备设置 10400 的自定义波特率。但是,当我运行应用程序时,控制台输出会不断报告

串口/dev/ttyUSB0的波特率设置为10403而不是10400:不支持除数2307.692383

我还将数据位设置为 8,奇偶校验设置为无奇偶校验,停止位设置为 1,这是非常标准的。

顺便说一下,这是我的代码:

serial -> setBaudRate(10400); // Set Baud Rate
serial -> setDataBits(QSerialPort::Data8);  
serial -> setStopBits(QSerialPort::OneStop);
serial -> setParity(QSerialPort::NoParity);

但是,当我在 Windows 上运行该应用程序时,它运行良好。

我的设备无法连接除 10400 以外的任何其他波特率。应用程序能够编译和运行,但结果全是垃圾。我想知道是否有办法可以毫无问题地指定此波特率?

【问题讨论】:

那么,它在 linux 上不起作用,或者你只是对这个消息感到恼火? @hyde 我的设备无法连接除 10400 以外的任何其他波特率。应用程序能够编译和运行,但结果全是垃圾。我想知道是否有办法可以毫无问题地指定此波特率? 这似乎是 Qt 中的一个错误,正如我在回答中所说,它已在 Qt 5.6 中修复。 【参考方案1】:

相关错误报告here。基本上这意味着,确切的波特率不可用,因为配置到硬件的实际东西是某个时钟频率的 integer 除数,并且对于请求的波特率没有确切的整数除数。警告消息对此非常有描述性。

没关系,波特率有一定的容忍度,但如果它确实会导致问题(错误下的讨论表明它可能...),错误报告中建议升级到 Qt 5.6 .

【讨论】:

【参考方案2】:

这是一个警告;这意味着您应该修复代码,但代码仍然可以正常工作。您运行的硬件不支持您尝试做的事情。 Windows 只是对此更安静,它也不支持它。

【讨论】:

哦。有没有办法让我可以毫无问题地将波特率指定为 10400? @ChrisL。不,因为硬件不支持它。 从进一步研究看来,我可能需要重置/修改/计算除数才能手动更改比率?这可能吗?

以上是关于Qt - 设置自定义波特率的主要内容,如果未能解决你的问题,请参考以下文章

请教个Qt相关问题:对于QSlider如何自定义设置滑块滑动区域?

自定义波特率

QT for symbian 中自定义菜单怎么实现?

QT 自定义处理调试信息

QT如何实现自定义下拉列表

51单片机自定义串口通讯协议控制流水灯+Proteus仿真