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