PySerial - 搞定串口通信so easy!
串口通信听起来挺高大上,但用Python搞起来真的很简单!PySerial这个库就是专门干这事的,支持Windows、Linux、Mac这些系统,装上就能用。我觉得这玩意儿特别实用,要是你在搞硬件开发、传感器数据采集啥的,肯定用得着。
先整一个环境
安装贼简单,一行命令搞定:
pip install pyserial
要是装不上,可能是pip版本太老,升级一下:
python -m pip install --upgrade pip
串口长啥样?
串口有几个重要参数要记住:
端口号:就是COM几,Linux下可能是/dev/ttyUSB0这种
波特率:传输速率,常用9600、115200
数据位:一般是8位
校验位:检查数据对不对,一般不用(NONE)
停止位:一般设1位就行
温馨提示:端口号找不着?设备管理器里瞅瞅!
上手撸代码
来个最基础的读写操作:
import serial
import time
# 创建串口对象,我这用的COM3,你要改成你自己的
ser = serial.Serial('COM3', 9600, timeout=1)
try:
# 发送点数据
ser.write(b'hello') # 记得加个b,转成bytes
# 等会儿,让数据发完
time.sleep(0.1)
# 读取数据
if ser.in_waiting: # 有数据才读
msg = ser.read(ser.in_waiting)
print(f“收到:{msg.decode()}”) # 转成字符串打印
except Exception as e:
print(f“哎呀,出错了:{e}”)
finally:
ser.close() # 记得关串口!
找串口神器
不知道电脑上有啥串口?PySerial自带扫描功能:
for p in ports:
print(p.device, p.description) # 打印端口信息
一些骚操作
读取时设超时,免得一直卡着:
读一行数据:
msg = ser.readline() # 读到换行符为止
清掉缓冲区:
ser.reset_input_buffer() # 清输入
ser.reset_output_buffer() # 清输出
温馨提示:串口要是一直读不到数据,检查下波特率对不对!这个坑我踩过好多次…
用PySerial搞串口通信就是这么简单!记得写代码时加上异常处理,串口这玩意儿容易出意外。要是想看更多花样,翻翻官方文档,里面有不少高级玩法。
代码写得不对?串口连不上?别急,这都是成长必经之路!慢慢来,总能整明白~
领取专属 10元无门槛券
私享最新 技术干货