Sil*_*ver 5 c++ ubuntu serial-port
有没有一种很好的方法来检测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);
}
}
Run Code Online (Sandbox Code Playgroud)
谢谢!
在Linux中枚举设备的标准方法是浏览/sys文件系统.在这种情况下,您可以执行以下操作:
/sys/class/tty/sys/class/tty/foo,检查是否/sys/class/tty/foo/device存在使用lstat().
foo.您应该留下实际串行端口列表.
| 归档时间: |
|
| 查看次数: |
5222 次 |
| 最近记录: |