【发布时间】:2013-03-11 15:46:29
【问题描述】:
有没有一种好方法可以检测所有连接在 linux 串口上的连接设备?我用 C++ 编程,但也欢迎其他示例。
您可以尝试打开每个端口,并在成功后将其添加到端口列表中,但这似乎不是一个很好的解决方案。
您可以进入开发总监,因为我的串行端口是 USB 端口,我可以检查哪些 ttyUSB.. 文件已制作。但这不适用于非 USB 串行端口,因为 tty0 到 tty63 的文件始终在此目录中。
我的例子:
std::string port;
int fd
std::vector<std::string>> list;
for(int i = 0; i < 256; ++i)
{
port.clear();
port.append("/dev/ttyUSB");
port.append(std::to_string(i));
fd = open(port.c_str(), O_RDWR | O_NOCTTY | O_DELAY);
if(fd != -1)
{
list.push_back(port);
}
}
谢谢!
【问题讨论】:
-
串口通常命名为
ttyS0等等。 -
这给我一种XY问题的感觉,你的实际问题是X,而你认为解决方案是Y,所以你问Y。你为什么想知道关于串口系统?
-
在其中一个端口上连接了一个 zigbee 设备。因为我想让它对用户友好,所以我想列出所有可能性,以便用户可以选择。通常,如果您插入您的 zigbee 设备,您应该会得到一个返回给您的端口号。 @Hasturkun 在我的情况下,因为我的串行设备使用 USB 连接,所以它被命名为 ttyUSB0。
-
@RoelStorms:我主要是回应关于非 USB 串口不工作的部分。
-
理论上,如果你想要普通的串口,你可以对 /dev/ttyX 做同样的事情。但同样不是最好的方法。
标签: c++ ubuntu serial-port