serial库串口通讯

前言

Python的pyserial库允许与不同的设备进行通信。

安装

python >= 3.4

pip install pyserial

基本流程

python 复制代码
import serial

# 1. 打开串口
ser = serial.Serial()

# 2. 设置串口参数(例如波特率、数据位、校验位、停止位)
ser.port = '/dev/ttyS0'  # 这是一个示例端口号,实际应替换为你的设备对应的串口名称
ser.baudrate = 9600  # 波特率设置为 9600
ser.bytesize = serial.EIGHTBITS  # 数据位数为 8 位
ser.parity = serial.PARITY_NONE  # 无奇偶校验位
ser.stopbits = serial.STOPBITS_ONE  # 停止位为 1 位

# 3. 打开串口连接
ser.open()


# 检查是否成功打开
if ser.is_open:
    print("串口已成功打开!")
else:
    print("无法打开串口!")



# 4. 发送数据
data_to_send = b"Hello, Serial World!"  # 要发送的数据,必须是字节类型
ser.write(data_to_send)


# 5. 接收数据(可读时)
while True:
    if ser.in_waiting > 0:  # 如果有数据可读
        received_data = ser.read(ser.in_waiting)  # 读取所有可用的数据
        print(f"接收的数据:{received_data.decode('utf-8')}")

    
    # 在这里可以添加适当的条件来退出循环或处理数据后继续等待新数据

# 6. 关闭串口连接
ser.close()

使用心得

1.注意不同的python版本安装方式不一样;

2.串口配置:打开串口前需要正确配置参数,包括端口号(如COM1或/dev/ttyUSB0)、波特率(如9600、115200等)、数据位(通常8位)、校验位(无、奇、偶、标记)、停止位(1位或2位)以及流控方式(硬件或软件控制)等。

3.串口使用结束后,记得关闭串口.否则可能会导致资源占用问题。

4.读写操作 读取时,先用in_waiting属性判断是否有可读数据. 写入时,记得字符串需先转为字节. 方法为 my_string.encode('utf-8')

5.设备响应需要一定时间 记得设置超时时间

6.换行符 Arduino等设备通常使用\r\n作为一行数据的结束标志,所以在Python端编写数据发送时要注意匹配这一约定,或者根据实际设备调整消息格式。

7.清理缓冲区 在开始正式读取新的数据之前,有时需要清除串口缓冲区中的残留数据,可以通过连续读取直至没有更多数据的方式实现

相关推荐
清风6666669 小时前
基于单片机的智能家居多参数环境监测与联动报警系统设计
数据库·单片机·毕业设计·智能家居·课程设计·期末大作业
自小吃多10 小时前
TMC2209与UART通信控制之搞不定
stm32·嵌入式硬件
普中科技11 小时前
【普中51单片机开发攻略--基于普中-2&普中-3&普中-4】-- 第 8 章 51 单片机工程模板创建
单片机·嵌入式硬件·51单片机·keil·普中科技·工程模版
请叫我7plus14 小时前
用QEMU进行嵌入式Linux开发
linux·驱动开发·嵌入式硬件
d111111111d14 小时前
锁相环是什么,为什么可以用来放大时钟频率,怎么做到的,还有预分频起,为什么可以进行分频和倍频?
笔记·stm32·单片机·嵌入式硬件·学习
1379号监听员_16 小时前
hc05蓝牙模块
stm32·单片机·物联网
error:(16 小时前
【保姆级】WSL 2 中使用 PlatformIO 开发 ESP32 完整教程
stm32·单片机·嵌入式硬件
就是蠢啊16 小时前
51单片机——DS18B02(二)
单片机·嵌入式硬件·51单片机
沧海一条狗16 小时前
Ecat从站SSC代码与GD32H75E接口的适配注意事项
单片机·嵌入式硬件
minglie117 小时前
clion+RP2040-Zero的ws2812
单片机