一、基础知识点
- Linux中万物皆文件,串口设备在
/dev目录下,Linux中的/dev文件目录的全称是device,这个目录包含了所有linux中使用的外部设备,但是不包含外部设备的驱动信息。 - 串口以/dev/ttyS*的格式显示;
- USB转串口适配,没有额外驱动,它们会显示为/dev/ttyUSB*,如/dev/ttyUSB0
/dev目录文件说明:- /dev/hd[a-t]——>IDE设备
- /dev/sd[a-z]——>SCSI设备
- /dev/fd[0-7]——>标准软驱
- /dev/md[0-31]——>软raid设备
- /dev/loop[0-7]——>本地回环设备
- /dev/ram[0-15]——>内存
- /dev/null——>无限数据接收设备,相当于黑洞
- /dev/zero——>无限零资源
- /dev/tty[0-63]——>虚拟终端 /dev/ttyUSB*是U转串
- /dev/ttyS[0-3]——>串口
- /dev/lp[0-3]——>并口
- /dev/console——>控制台
- /dev/fb[0-31]——>framebuffer
- /dev/cdrom => /dev/hdc
- /dev/modem => /dev/ttyS[0-9]
- /dev/pilot => /dev/ttyS[0-9]
- /dev/random——>随机数设备
- /dev/urandom——>随机数设备
二、串口命令
1、查看串口名称使用:ls -l /dev/ttyS*,直接用ls或ll也可以。
2、查看串口驱动:cat /proc/tty/drivers/serial
3、查看串口设备:dmesg | grep ttyS*
4、发送:echo “hello” > /dev/tty*
5、读取:cat /dev/tty*
6、读取并保存文件中:cat /dev/ttyUSB0 > file.txt
7、stty命令:修改终端命令行的相关设置。
- stty 命令说明及使用讲解
- 显示某个串口参数信息:
stty -F /dev/ttyS7 -a - 设置某个串口参数信息:
stty -F /dev/ttyS7 speed 115200 cs7 -parenb -cstopb -echo(7位数据位,无校验,1位停止位,无回显) - 设置串口参数:
stty -F /dev/ttyS0 ispeed 115200 ospeed 115200 cs8 - stty命令的几项主要选项功能为:
- 选项
parenb使终端进行奇偶校验,-parenb则是禁止校验; - 选项cs5、cs6、cs7和cs8分别将字符大小设为5、6、7和8比特;
- 选项300、600、1200、2400、4800、9600和19200设置波特率;
cstopb和-cstopb分别设置两个或一个停止位;- tabs使系统使用制表符而不是空格序列,因此减少了输出量,选项-tabs仅使用空格,当终端不能正确处理制表符(tab)时应使用该项。
- 选项
三、权限问题
- 在Linux中,对于非root用户,默认没有串口设备的读写权限。
ls -l /dev/ttyS*可以看到owner 是 root,所属用户组为 dialout- 当前用户加入dialout组:
sudo usermod -aG dialout $USER - 查看是否已添加成功:
grep 'dialout' /etc/group
四、虚拟串口
1、安装socat:sudo apt-get install socat
2、两种方式生成虚拟串口:
- 2.1-直接生成:
socat -d -d pty,b115200 pty,b115200
free600@linux-dell-5820T:~$ socat -d -d pty,b115200 pty,b115200
2022/04/18 22:11:23 socat[27763] N PTY is /dev/pts/3
2022/04/18 22:11:23 socat[27763] N PTY is /dev/pts/4
2022/04/18 22:11:23 socat[27763] N starting data transfer loop with FDs [5,5] and [7,7]
- 2.2-连接到现有串口:
socat PTY,link=/dev/ttyS10 PTY,link=/dev/ttyS11 - 2.3-获取临时权限:
sudo chmod 777 /dev/ttyS10
3、使用echo和cat进行测试,要注意权限问题。