UNIX - 列出所有现有串行端口

时间:2014-11-06 10:21:31

标签: c unix terminal serial-port

我正在编写一个C程序,它自动登录到某个连接的Linux设备(通过串行端口)并读取所有日志文件等。
这就是问题所在:我不想将串口(在我的情况下是/ dev / ttyS0)硬编码到我的代码中,但在开头提供某种提示,列出所有 < em>实际存在的 设备,我可以从中选择并将其作为参数传递 有没有办法区分/ dev文件夹中的逻辑设备和物理设备?我不想在/ dev文件夹中使用ls并且显示所有(在我的情况下)不必要的信息;我只希望显示实际存在的串口。

1 个答案:

答案 0 :(得分:1)

您可以通过阅读目录/sys/class/tty/中的符号链接来枚举系统中的所有ttys。

然后您可以阅读type伪文件以检查它是真正的串行端口还是虚拟串行端口。可能的值位于<linux/serial.h>

#define PORT_UNKNOWN    0
#define PORT_8250       1
#define PORT_16450      2
#define PORT_16550      3
#define PORT_16550A     4
#define PORT_CIRRUS     5       /* usurped by cyclades.c */
#define PORT_16650      6
#define PORT_16650V2    7
#define PORT_16750      8
#define PORT_STARTECH   9       /* usurped by cyclades.c */
#define PORT_16C950     10      /* Oxford Semiconductor */
#define PORT_16654      11
#define PORT_16850      12
#define PORT_RSA        13      /* RSA-DV II/S card */

大多数虚拟端口甚至没有type个文件。无论如何,0可能意味着虚拟或模拟端口。