识别串口设备
- 物理连接
将串口设备(如USB转TTL模块)插入电脑,系统通常自动识别。 - 查看设备节点
终端执行:dmesg | grep tty # 查看内核日志 ls /dev/tty* # 列出所有串口设备
常见设备名:
/dev/ttyS0
:主板原生串口/dev/ttyUSB0
:USB转串口设备/dev/ttyACM0
:CDC-ACM设备(如Arduino)
配置访问权限
普通用户默认无串口访问权限,需以下操作:
- 临时添加权限
sudo chmod 666 /dev/ttyUSB0 # 开放读写权限
- 永久解决方案(推荐)
将用户加入dialout
组:sudo usermod -aG dialout $USER # $USER替换为当前用户名 sudo reboot # 重启生效
安装串口通信工具
常用工具安装命令:
sudo apt install minicom screen picocom # Debian/Ubuntu sudo yum install minicom screen picocom # CentOS/RHEL
配置串口参数
串口通信需统一参数:波特率、数据位、停止位、校验位、流控。
常用配置:115200 8N1
(波特率115200,8数据位,无校验,1停止位)。
工具配置示例
-
使用
minicom
minicom -s # 进入配置模式
- 选择 “Serial port setup”
- 设置设备(如
/dev/ttyUSB0
)和参数(按E
键修改波特率) - 保存为默认配置(Save setup as dfl)
-
使用
screen
(快速连接)screen /dev/ttyUSB0 115200 # 连接后按Ctrl+A, 再按K退出
-
使用
picocom
(轻量级)picocom -b 115200 /dev/ttyUSB0 # 按Ctrl+A, 再按Ctrl+X退出
发送与接收数据
- 发送文件
cat file.txt > /dev/ttyUSB0
- 接收数据保存
cat /dev/ttyUSB0 > received.log # Ctrl+C终止
编程访问串口(Python示例)
使用pyserial
库:
pip install pyserial
示例代码:
import serial ser = serial.Serial( port='/dev/ttyUSB0', baudrate=115200, bytesize=serial.EIGHTBITS, parity=serial.PARITY_NONE, stopbits=serial.STOPBITS_ONE ) ser.write(b'Hello Serial!\n') # 发送数据 response = ser.readline() # 读取一行 print(response.decode('utf-8')) ser.close()
常见问题解决
- 权限不足
确认用户是否在dialout
组:groups $USER
。 - 无数据接收
- 检查接线(RX/TX是否交叉连接)
- 确认设备波特率匹配(使用
stty -F /dev/ttyUSB0
查看当前配置)
- 设备未识别
- 执行
lsusb
查看USB设备 - 检查驱动:
dmesg | grep usb
- 执行
安全注意事项
- 避免在root下直接操作串口,优先使用用户组权限。
- 关键设备操作前断开电源,防止误操作损坏硬件。
- 工业环境使用隔离转换器,防止电压损坏电脑接口。
进阶学习
- 调试工具:
stty -F /dev/ttyUSB0
查看/修改参数
setserial -g /dev/ttyS*
查看原生串口信息 - 内核文档:
访问 /usr/src/linux/Documentation/serial/(需安装内核头文件)
引用说明:
- Linux Man Pages:
man screen
,man minicom
- PySerial官方文档:pyserial.readthedocs.io
- Linux内核串口文档(Kernel.org)
- 遵循IEEE 1284串口通信标准
通过以上步骤,您可高效管理Linux串口设备,实际应用需结合硬件规格调整参数,复杂场景建议结合逻辑分析仪验证数据。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/7393.html