【问题标题】:Qt - Setting a custom baud rateQt - 设置自定义波特率
【发布时间】: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 中修复。

标签: linux qt serial-port bitrate


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 哦。有没有办法让我可以毫无问题地将波特率指定为 10400?
    • @ChrisL。不,因为硬件不支持它。
    • 从进一步研究看来,我可能需要重置/修改/计算除数才能手动更改比率?这可能吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多