【问题标题】:Qt and virtual serial portsQt 和虚拟串口
【发布时间】:2015-12-10 21:40:48
【问题描述】:

我已关注this 以创建一对串行端口。它工作正常。

现在我正在开发一个 Qt 应用程序(使用QtSerialPort)通过串口发送数据,而我真正想要的是这样一个虚拟串口链接。但似乎QSerialPortInfo::availablePorts() 找不到 /dev/pts/... 端口。

我应该尝试哪种方法才能在 linux 上建立这样的串行端口链接?

【问题讨论】:

    标签: linux qt qtserialport


    【解决方案1】:

    因为 /dev/pts 不是串行端口,并且 SOCAT 会创建到 /dev/pts 设备的符号链接。所以,一切都正确。

    但是,使用 SOCAT 并不是一个好主意,因为它不稳定(在我的实践中,在重新打开等之后)。最好改用 tty0tty 项目(但不幸的是, QSerialPort::availablePorts() 也没有枚举它)。但这不是问题,因为 tty0tty 的串口可以很容易地为 QSerialPort 修复(需要一个小补丁)。

    所以,目前还没有方法可以简单地枚举。可能在 Qt 5.6 上会为 QSerialPort 枚举添加 tty0tty。

    作为解决方法,您可以在 /dev 目录上使用 QDir 来枚举所有符号链接(当然,如果您在 /dev 目录中创建此符号链接)。

    【讨论】:

    • “不幸的是,QSerialPort::availablePorts() 也没有枚举它”意味着我什至不能使用它?如果明确告诉 Qt 地址,我希望能够使用它们。我试过cat < /dev/tnt1,然后在Qt中,将数据写入/dev/tnt0,但cat侧没有显示任何内容。
    • "tty0tty 的串口可以很容易地为 QSerialPort 修复(需要一个小补丁)",你能告诉我更多关于这个补丁的信息吗?
    【解决方案2】:

    我什至不能使用它?

    您可以使用任何自定义串行端口名称并将其传递给 QSerialPort。

    但是猫这边什么都没有显示

    您可以尝试使用终端示例,它是 qtserialport 示例的一部分。

    你能告诉我更多关于这个补丁的信息吗?

    https://codereview.qt-project.org/#/c/125856/

    【讨论】:

      猜你喜欢
      • 2021-01-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-28
      • 1970-01-01
      • 2023-03-11
      相关资源
      最近更新 更多