繁体   English   中英

我如何知道在Linux上使用哪个串口?

[英]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区域,我看到ttyS0ttyS7存在(我假设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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM