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

相关推荐
森旺电子1 小时前
51单片机仿真摇号抽奖机源程序 12864液晶显示
单片机·嵌入式硬件·51单片机
不过四级不改名6773 小时前
蓝桥杯嵌入式备赛教程(1、led,2、lcd,3、key)
stm32·嵌入式硬件·蓝桥杯
小A1593 小时前
STM32完全学习——SPI接口的FLASH(DMA模式)
stm32·嵌入式硬件·学习
Rorsion3 小时前
各种电机原理介绍
单片机·嵌入式硬件
善 .6 小时前
单片机的内存是指RAM还是ROM
单片机·嵌入式硬件
超级码农ProMax6 小时前
STM32——“SPI Flash”
stm32·单片机·嵌入式硬件
Asa3197 小时前
stm32点灯Hal库
stm32·单片机·嵌入式硬件
end_SJ8 小时前
初学stm32 --- 外部中断
stm32·单片机·嵌入式硬件
gantengsheng9 小时前
基于51单片机和OLED12864的小游戏《贪吃蛇》
单片机·嵌入式硬件·游戏·51单片机
嵌入式小强工作室10 小时前
stm32 查找进硬件错误方法
stm32·单片机·嵌入式硬件