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

时间:2012-10-04 20:06:54

标签: c linux serial-port

我将在C中编写一个程序,它将通过串口打开连接,并“监听”传入的命令,然后它将采取一些操作并报告状态。

连接将通过RS232(串行端口),我试图了解如何知道打开哪个端口。

当使用Windows时,如果我连接我的USB串口设备,我看到“Prolific USB-to-Serial Comm Port(COM4)”出现在设备管理器中......但是在Linux端我看不到/sys/class/tty/dev区域中的任何更改,我都会ttyS0ttyS7始终显示(我假设S代表基于的/sys what I've read)。

那我怎么知道要连接哪一个?

修改
当我在OpenSUSE 12.1框(3.1内核)上开发时,最终的程序将在运行2.4Linux内核的主板上的uCLinux上运行,所以我正在寻找纯C解决方案将适用于较旧的内核

仅供参考:this post的答案中提到的{{1}}文件系统在2.6内核之前不存在,我的约束迫使我坚持使用2.4内核中可用的东西。

3 个答案:

答案 0 :(得分:3)

命令dmesg将在插入模块时显示内核消息,该消息将提供设备名称。

/proc文件系统就像是Windows上的设备管理器 - 在某处会有一个tty设备列表

答案 1 :(得分:1)

我使用了两件事:(a)寻找控制线(DTR,DSR等)和(b)打开'所有'端口并找出哪一个看起来是活动的。在后一种情况下,如果您可以向串行设备发送消息并让它响应,则会有所帮助;这显然只有在设备响应消息时才有效。

答案 2 :(得分:0)

结帐/proc/tty/driver/serial - 你应该看到像16550A而不是unknownrx的uart应该是> 0表示现有端口。如果您必须猜测将使用哪个端口,请打开所有可用端口。之后,您需要根据需要设置端口(波特率,奇偶校验,位等)或尝试猜测传入的波特率等。