c++ - 如何在 Linux 和 C++ 上迭代 com 端口并打印到控制台?

标签 c++ linux loops serial-port

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

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

更新:

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

最佳答案

两种简单的可能性:

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

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

关于c++ - 如何在 Linux 和 C++ 上迭代 com 端口并打印到控制台?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38064930/

相关文章:

C++:reinterpret_cast 的奇怪行为

python - 使用 uWSGI 在 nginx 下部署的 Flask 在哪里获取我的 Python 打印件?

windows - 使用 SSH 从 Linux Box 执行 Perl 脚本导致 "The local device name is already in use"

swift - 带持续时间的循环动画,Swift 4

c++ - 从初始化列表中推导出参数

c++ - STL vector 的默认构造函数

linux - 如何 SED 到下一行值

python - 找到预期结果时是否可以从 lambda 中断

java - 如何在java中创建一个循环,在每行上打印略有不同的字符串?

c++ - 关于在 constexpr 指针和引用的上下文中需要固定地址的说明