[英]How do I know which serial port to use on Linux?
我将在C中编写一个程序,它将通过串口打开连接,并“监听”传入的命令,然后它将采取一些操作并报告状态。
连接将通过RS232(串行端口),我试图了解如何知道打开哪个端口。
当使用Windows时,如果我连接我的USB串口设备,我看到“Prolific USB-to-Serial Comm Port(COM4)”出现在设备管理器中...但在Linux端我没有看到任何变化在/sys/class/tty
或/dev
区域,我看到ttyS0
到ttyS7
存在(我假设S
代表基于我读过的串行)。
那我怎么知道要连接哪一个?
编辑
当我在OpenSUSE 12.1盒子(3.1内核)上开发它时,最终的程序将在运行2.4Linux内核的主板上的uCLinux上运行,所以我正在寻找适用于旧内核的纯C解决方案
仅供参考:在这篇文章的答案中提到的/sys
文件系统直到2.6内核才存在,我的约束迫使我坚持2.4内核中可用的东西。
插入模块时,命令dmesg
将显示内核消息,该消息将提供设备名称。
/proc
文件系统就像Windows上的设备管理器 - 在某处会有一个tty设备列表
我使用了两件事:(a)寻找控制线(DTR,DSR等)和(b)打开'所有'端口并找出哪一个似乎是活动的。 在后一种情况下,如果您可以向串行设备发送消息并让它响应,则会有所帮助; 这显然只有在设备响应消息时才有效。
检查/proc/tty/driver/serial
- 您应该看到像16550A
这样的uart而不是unknown
并且对于现有端口, rx
应该> 0。 如果您必须猜测将使用哪个端口,请打开所有可用端口。 之后,您需要根据需要设置端口(波特率,奇偶校验,位等)或尝试猜测传入的波特率等。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.