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

相关推荐
景彡先生26 分钟前
STM32 USB开发详解:CDC虚拟串口与HID键盘鼠标(基于CubeUSB库)
stm32·嵌入式硬件·计算机外设
weixin_580382069 小时前
UART寄存器介绍
stm32·单片机·嵌入式硬件
wind_one113 小时前
STM32小实验1--点亮LED
stm32·单片机·嵌入式硬件
szxinmai主板定制专家14 小时前
基于光栅传感器+FPGA+ARM的测量控制解决方案
arm开发·人工智能·嵌入式硬件·fpga开发
Ronin-Lotus16 小时前
嵌入式硬件篇---单稳态&多谐&施密特电路
单片机·嵌入式硬件
逼子格16 小时前
权电阻网络DAC实现电压输出型数模转换Multisim电路仿真——硬件工程师笔记
笔记·嵌入式硬件·硬件工程·硬件工程师·adc·硬件工程师真题·权电阻网络dac
Cyrus_柯18 小时前
单片机(STM32-串口通信)
stm32·单片机·嵌入式硬件·串口通信协议
Ronin-Lotus20 小时前
嵌入式硬件篇---晶体管的分类
嵌入式硬件·晶体管·bjt(双级结性晶体管)·fet(场效应晶体管)
会编程的小孩1 天前
STM32用PWM驱动步进电机
stm32·单片机·嵌入式硬件
努力做小白1 天前
Linux驱动11 --- buildroot&杂项驱动开发方法
linux·运维·驱动开发·单片机·嵌入式硬件