上一篇
想象一下,你正在捣鼓一个树莓派项目,需要通过串口连接传感器或单片机,或者你在调试一台嵌入式设备,得用串口查看日志,这时候,Ubuntu系统下的串口通信就成了关键技能,别担心,今天我们就来聊聊如何在Ubuntu上玩转串口通信,从基础配置到代码实现,一步步搞定!
串口(Serial Port)是一种古老但依然广泛使用的通信接口,通过RX(接收)和TX(发送)两根线实现设备间的数据传输,虽然速度比不上USB或网络,但胜在简单可靠,尤其在嵌入式开发、工业控制等领域不可或缺。
常见的串口类型:
插上USB转串口模块后,在终端输入:
ls /dev/tty*
你会看到类似/dev/ttyUSB0
或/dev/ttyACM0
的设备文件,这就是你的串口。
默认情况下,普通用户可能无法直接访问串口,需要添加权限:
sudo chmod 666 /dev/ttyUSB0 # 临时生效
或者将用户加入dialout
组(永久生效):
sudo usermod -aG dialout $USER
记得注销重新登录!
推荐用minicom
或screen
快速测试串口:
sudo apt install minicom minicom -D /dev/ttyUSB0 -b 9600 # 波特率按需调整
按Ctrl+A
,再按X
退出。
Python的pyserial
库是串口通信的神器,先安装:
pip install pyserial
import serial # 打开串口 ser = serial.Serial('/dev/ttyUSB0', baudrate=9600, timeout=1) # 发送字符串 ser.write(b"Hello, Serial!\n") # 关闭串口 ser.close()
import serial ser = serial.Serial('/dev/ttyUSB0', baudrate=9600, timeout=1) while True: if ser.in_waiting > 0: data = ser.readline().decode('utf-8').strip() print(f"Received: {data}") ser.close()
如果你更习惯C,可以用termios
库:
#include <stdio.h> #include <fcntl.h> #include <termios.h> #include <unistd.h> int main() { int fd = open("/dev/ttyUSB0", O_RDWR | O_NOCTTY); struct termios options; tcgetattr(fd, &options); cfsetispeed(&options, B9600); // 输入波特率 cfsetospeed(&options, B9600); // 输出波特率 options.c_cflag |= (CLOCAL | CREAD); tcsetattr(fd, TCSANOW, &options); write(fd, "Hello from C!\n", 14); close(fd); return 0; }
编译运行:
gcc serial_example.c -o serial ./serial
/dev/ttyUSB0
?dmesg | grep tty
查看内核日志。 sudo apt install ch340
)。 8N1
:8数据位、无校验、1停止位)。 echo 'KERNEL=="ttyUSB*", MODE="0666"' | sudo tee /etc/udev/rules.d/50-serial.rules sudo udevadm control --reload
串口通信在Linux下并不复杂,关键是设备权限、参数配置和稳定的连接,无论是用Python快速原型开发,还是C语言追求性能,Ubuntu都能完美胜任,下次遇到硬件调试,不妨试试这些方法吧!
本文由 亥蕴涵 于2025-07-29发表在【云服务器提供商】,文中图片由(亥蕴涵)上传,本平台仅提供信息存储服务;作者观点、意见不代表本站立场,如有侵权,请联系我们删除;若有图片侵权,请您准备原始证明材料和公证书后联系我方删除!
本文链接:https://vps.7tqx.com/wenda/476475.html
发表评论