如何遍历 com 端口并在 Linux 和 C++ 上打印到控制台?
How to iterate through com ports and print to console on Linux & C++?
我觉得这应该很容易,但它仍然困扰着我,所以就在这里。我一直在尝试找到一个简单的解决方案来遍历 linux 上的可用 UART 串行端口(我是 运行 最新版本的 Manjaro Linux),然后将它们打印到控制台。然而,到目前为止,我发现的所有解决方案都非常复杂,或者它们最终会抛出一堆我在测试时无法弄清楚的错误。
所以,我不得不回到这里看看其他人是否有任何想法。在 Windows 上,有一个 GetPortNames()
of Windows' System::IO::Ports
,也许类似的 API 调用是最理想的。
更新:
因此,在收到答案并使用该信息了解更多有关与 linux 上的串行端口交互的信息后,我最终 运行 找到了一种实现迭代效果的好方法可用端口。它不像单行命令那么简单,但它可以工作,所以对我来说没问题。我通过 /sys/class/tty 目录找到了 iteration/sorting 这个方法作为另一个问题的答案(我使用的代码的作者叫 Søren Holm),你可以看看 here .
两种简单的可能性:
linux上的串口是字符设备文件,可以在/dev/ttyS*
上看到。 USB 设备创建的串行端口在 /dev/ttyUSB*
中。这将您的问题减少到直接迭代。
还有一个名为 sysfs 的东西,它本质上是一个运行时的、非持久的、内核内部的注册表,通过虚拟文件系统导出给用户space。通常它安装在 /sys
下面。您可以在 /sys/bus/serio/devices
下面找到这些设备。
我觉得这应该很容易,但它仍然困扰着我,所以就在这里。我一直在尝试找到一个简单的解决方案来遍历 linux 上的可用 UART 串行端口(我是 运行 最新版本的 Manjaro Linux),然后将它们打印到控制台。然而,到目前为止,我发现的所有解决方案都非常复杂,或者它们最终会抛出一堆我在测试时无法弄清楚的错误。
所以,我不得不回到这里看看其他人是否有任何想法。在 Windows 上,有一个 GetPortNames()
of Windows' System::IO::Ports
,也许类似的 API 调用是最理想的。
更新:
因此,在收到答案并使用该信息了解更多有关与 linux 上的串行端口交互的信息后,我最终 运行 找到了一种实现迭代效果的好方法可用端口。它不像单行命令那么简单,但它可以工作,所以对我来说没问题。我通过 /sys/class/tty 目录找到了 iteration/sorting 这个方法作为另一个问题的答案(我使用的代码的作者叫 Søren Holm),你可以看看 here .
两种简单的可能性:
linux上的串口是字符设备文件,可以在
/dev/ttyS*
上看到。 USB 设备创建的串行端口在/dev/ttyUSB*
中。这将您的问题减少到直接迭代。还有一个名为 sysfs 的东西,它本质上是一个运行时的、非持久的、内核内部的注册表,通过虚拟文件系统导出给用户space。通常它安装在
/sys
下面。您可以在/sys/bus/serio/devices
下面找到这些设备。