如何在 Linux 和C++ 上遍历 com 端口并打印到控制台?

How to iterate through com ports and print to console on Linux & C++?

本文关键字:打印 控制台 com 遍历 Linux C++      更新时间:2023-10-16

我觉得这应该很容易,但它一直困扰着我,所以就这样。我一直在努力寻找一个简单的解决方案,在linux上迭代可用的UART串行端口(我运行的是最新版本的Manjaro linux(,然后将这些端口打印到控制台。然而,到目前为止,我发现的所有解决方案都非常复杂,或者它们最终会抛出一堆错误,我在测试它们时无法弄清楚。

所以,我不得不回到这里,看看是否有其他人有任何想法。在Windows上,有一个Windows的System::IO::PortsGetPortNames(),也许类似的API调用将是最理想的。

更新:

因此,在收到答案并使用这些信息了解更多关于在linux上与串行端口交互的信息后,我最终找到了一种很好的方法来实现在可用端口中迭代的效果。它不像一行命令那么简单,但它很有效,所以对我来说很好。我发现这种在/sys/class/tty目录中迭代/排序的方法是对另一个问题的回答(我使用的代码的作者名叫søren Holm(,你可以在这里看一下。

两种简单的可能性:

  1. linux上的串行端口是字符设备文件,您可以在/dev/ttyS*上看到它们。usb设备创建的串行端口位于/dev/ttyUSB*中。这将问题简化为直接迭代。

  2. 还有一个名为sysfs的东西,它本质上是一个运行时、非持久性的内核内部注册表,通过虚拟文件系统导出到用户空间。通常安装在/sys下方。在/sys/bus/serio/devices下面,您可以找到这些设备。