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 小时前
Linux上位机开发实践(SoC和MCU的差异)
单片机·嵌入式硬件
Geek__19921 小时前
STM32 调试口STM32CUBEMX配置
stm32·单片机·嵌入式硬件
每月一号准时摆烂1 小时前
数字电子技术基础(四十七)——使用Mutlisim软件来模拟74LS85芯片
单片机·嵌入式硬件
雯宝2 小时前
IO 口作为外部中断输入
单片机·嵌入式硬件
宁子希2 小时前
如何将 ESP32 快速接入高德、心知、和风天气API 获取天气信息
android·单片机·嵌入式硬件·esp32
SuperW2 小时前
蓝桥杯嵌入式十五届模拟三(串口、双ADC)
单片机·职场和发展·蓝桥杯
应以大橘为重2 小时前
中断的硬件框架
单片机·嵌入式硬件·中断框架
cmcTypedef2 小时前
VsCode-配置C/C++开发环境
单片机·嵌入式
正点原子3 小时前
【正点原子STM32MP257连载】第四章 ATK-DLMP257B功能测试——4G模块EC20测试 #MINI PCIE #GPS
功能测试·stm32·单片机·嵌入式硬件·4g模块
Despacito0o3 小时前
FreeRTOS教程 - 任务间通信:使用队列(Queue)
驱动开发·stm32·单片机·嵌入式硬件·51单片机·freertos·嵌入式实时数据库