当前位置: 技术问答>linux和unix
如何枚举串口
来源: 互联网 发布时间:2016-07-30
本文导语: 在windows中可以通过查找注册表知道系统目前有多少个串口,不知道在linux中如何做到这一点。 查找/dev文件夹中有多少个类似/dev/ttyS0、/dev/ttyS1这样的文件名是否可行? | 不知道为什么,/dev/t...
在windows中可以通过查找注册表知道系统目前有多少个串口,不知道在linux中如何做到这一点。
查找/dev文件夹中有多少个类似/dev/ttyS0、/dev/ttyS1这样的文件名是否可行?
查找/dev文件夹中有多少个类似/dev/ttyS0、/dev/ttyS1这样的文件名是否可行?
|
不知道为什么,/dev/ttyS* 有一大堆
还是这个比较可靠
# dmesg | grep ttyS
[ 25.942157] serial8250: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
[ 25.942840] 00:08: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
setserial 命令用来调整或报告与串口有关的设置,包括串口所使用的I/O端口和中断:
# setserial -g /dev/ttyS[0123]
/dev/ttyS0, UART: 16550A, Port: 0x03f8, IRQ: 4
/dev/ttyS1, UART: unknown, Port: 0x02f8, IRQ: 3
/dev/ttyS2, UART: unknown, Port: 0x03e8, IRQ: 4
/dev/ttyS3, UART: unknown, Port: 0x02e8, IRQ: 3
还是这个比较可靠
# dmesg | grep ttyS
[ 25.942157] serial8250: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
[ 25.942840] 00:08: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
setserial 命令用来调整或报告与串口有关的设置,包括串口所使用的I/O端口和中断:
# setserial -g /dev/ttyS[0123]
/dev/ttyS0, UART: 16550A, Port: 0x03f8, IRQ: 4
/dev/ttyS1, UART: unknown, Port: 0x02f8, IRQ: 3
/dev/ttyS2, UART: unknown, Port: 0x03e8, IRQ: 4
/dev/ttyS3, UART: unknown, Port: 0x02e8, IRQ: 3
|
注意ttys 和 ttyS 的区别
lz可以ls -al 看看
ttys的主设备号为3
ttyS的主设备号都为4
只有设备号都4的才是I/O设备
而我的机器上,ttyS后面都是数字
ttys后面才有字母
lz可以ls -al 看看
ttys的主设备号为3
ttyS的主设备号都为4
只有设备号都4的才是I/O设备
而我的机器上,ttyS后面都是数字
ttys后面才有字母
|
那就先遍历下 /dev/ttyS* 有多少个,然后一个一个 fd = open("/dev/ttyf1", O_RDWR | O_NOCTTY | O_NDELAY);
正常打开的就是能用的
没有找到遍历的api
正常打开的就是能用的
没有找到遍历的api
|
ttyS1,2,3,4
一个一个的打开来试,成功的是可用的,
呵呵,笨方法
一个一个的打开来试,成功的是可用的,
呵呵,笨方法
|
楼上说的比较详细了 对这方面不是很了解
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。