我目前正在开发一个串口库,它已经使用特殊的框架来获取有关系统上串行端口的信息.虽然串口是Unix中的基本设计 – 作为答案,如this one证明 – 我认为测试文件是否是串口的好方法是测试字符设备的主要模式
并检查这是否真的是一个TTY.
在互联网上爬行,我找不到任何文件谈论整个统一的TTY主要模式.好吧,只有一个Linux手册页说明ptmx具有主模式5.
虽然我已经询问了基于this Stack Overflow的tty字符设备的实现细节
问题,我想我可能会要求Unix Stack Exchange社区了解tty值在Unix版本中的稳定性.
所以,我要求你的帮助建立一个所有tty的主要模式的知识库
系统上的文件,即:主要模式是什么
>真正的串口?
>伪终端(PTS)端口?
> FTDI USB串口?
>其他USB串口?
要获取字符设备主要模式的值,您应该使用:
% stat -f " * %N: %Hr%n" /dev/tty* /dev/pts/*
* /dev/ttys001: 16
^^- major mode
或使用好老ls:
% ls -l /dev/ttys001
crw--w---- 1 tty 16, 1 Apr 30 03:25 /dev/ttys001
major mode -^^ ^^- minor mode
您可以将信息放在自己的答案中,或者通过其他信息扩展社区维基答案.
解决方法:
Unix版本7(1979):
# ls -l /dev/console /dev/tty?*
crw--w--w- 1 root 0, 0 Sep 22 06:46 /dev/console
crw-rw-r-- 1 root 0, 1 Sep 22 05:47 /dev/tty1
crw-rw-r-- 1 root 0, 2 Sep 22 05:47 /dev/tty2
(还没有pty)
Linux 3.2.0(debian wheezy).
注意:您也可以通过搜索/ dev由group tty和dialout拥有来查找这些内容.这是Debian的事情.
>虚拟控制台
> / dev / tty [0-9] *:4
>真正的串口:
> / dev / ttyS [0-9]:4
>伪终端:
> / dev / pts / [0-9]:136
> / dev / pts / ptmx:5
> FTDI USB串口:
> / dev / ttyUSB [0-9]:188
> USB串口:(AVR嵌入式USB / Arduino Uno)
> / dev / ttyACM [0-9]:166
Linux 3.4.0(Android 4.4.2 / Nexus 5)
注意:所有linux加上:
> ttyACM(单元调制解调器控制)
>(显然没有/ dev条目):166
> ttyHSL(蓝牙)
> / dev / ttyHSL0:247
> ttyHS(蓝牙)
> / dev / ttyHS99:248
达尔文13.1.0(MacOS 10.9.2):
>真正的串口:
> / dev / ttys [0-9a-f]:4
>伪终端:
> / dev / ttys [0-9] {3}:16
> FTDI USB串口:
> /dev/tty.usbserial.*:18
> USB串口:(AVR嵌入式USB / Arduino Uno)
> /dev/tty.usbmodem.*:18
Solaris 10 x86 / amd64:
>伪终端:
> / dev / pty [p-r] [0-9a-f](pty master):25
> / dev / tty [p-r] [0-9a-f](pty slave):26
> / dev / pts / [0-9]:24
> / dev / ptmx:23
>串口设备:
> / dev / tty [abc …] aka / dev / term / [abc …]或/ dev / tty0 [012 ..](uart serial,also):106
>也作为/ dev / ttyd [012 …],但是不同的接口(拨号,调制解调器)也在106但高的未成年人.
OpenBSD 6.0
如/ dev / MAKEDEV中的注释所述
> PC / AT UART串口:
> / dev / tty [0-7] [0-9a-f]:8
> / dev / cua [0-7] [0-9a-f]:8
> Cyclades串口:
> / dev / ttyc *:38
> / dev / cuac *:38
> Virtio串口:
> / dev / ttyVI *:94
> USB串口:
> / dev / ttyU [0-3]:66
> / dev / cuaU [0-3]:66
> wscons终端:
> / dev / tty [C-J] [0-b]:12
>伪终端主站和从站(非UNIX 98)
> / dev / pty [p-zP-T] [0-9a-zA-Z]:6
> / dev / tty [p-zP-T] [0-9a-zA-Z]:5
FreeBSD 10.0和TrueOS
FreeBSD(及其衍生产品,如TrueOS)是您的想法显示致命缺陷的地方. FreeBSD中没有主要的次要设备编号方案.
传统上安装在/ dev的FreeBSD上的devfs伪文件系统根本不使用主要的次要系统将设备分组为“主要”类.相反,设备的rdev与伪文件系统中的i-node编号相同,i-nodes在生成设备节点时按升序简单分配,具体取决于当时手头机器上的确切硬件.
因此设备号不能用作isatty()的快捷方式.
标签:bsd,linux,solaris,serial-port,tty
来源: https://codeday.me/bug/20190810/1637100.html