在 Python 中进行串口通信的常用库是 pyserial。这个库提供了对串口的简单而强大的操作接口,能够让我们轻松地与各种串口设备进行通信,如 Arduino、单片机、PLC 等。

安装 PySerial

首先,你需要安装 pyserial 库。可以使用以下命令通过 pip 进行安装:

pip install pyserial

基础概念

在串口通信中,通常需要设置以下参数: - 波特率(Baudrate):有效的传输速率,通常为 9600、115200 等。 - 数据位(Data bits):通常为 8 位。 - 停止位(Stop bits):通常为 1 位。 - 奇偶校验(Parity):可选项,一般设置为没有(None)。

基本使用示例

下面,我们将构建一个简单的串口通信示例,包括发送和接收数据。

发送数据

首先,我们需要打开指定的串口,并设定通信参数。在这个示例中,我们将发送一条简单的消息。

import serial
import time

# 创建串口对象
ser = serial.Serial('COM3', baudrate=9600, bytesize=8, parity=serial.PARITY_NONE, stopbits=1, timeout=1)

# 检查是否打开串口
if ser.is_open:
    print("串口已经打开,开始发送数据...")

# 发送数据
message = "Hello, Serial Communication!"
ser.write(message.encode('utf-8'))  # 编码为字节流并发送
print("发送的数据:", message)

# 延迟一段时间确保数据被发送
time.sleep(1)

# 关闭串口
ser.close()
print("串口已关闭。")

接收数据

接下来,我们实现一个接收数据的示例,接收数据的过程通常是循环进行的。

import serial
import time

# 创建串口对象
ser = serial.Serial('COM3', baudrate=9600, bytesize=8, parity=serial.PARITY_NONE, stopbits=1, timeout=1)

# 检查是否打开串口
if ser.is_open:
    print("串口已经打开,开始接收数据...")

# 接收数据
try:
    while True:
        if ser.in_waiting > 0:  # 检查是否有数据可读
            data = ser.readline()  # 读取一行数据
            print("接收到的数据:", data.decode('utf-8').strip())  # 解码并去掉换行符
except KeyboardInterrupt:
    print("接收中断")

# 关闭串口
ser.close()
print("串口已关闭。")

代码解析

  1. 串口初始化:通过 serial.Serial 创建串口对象,需要传入通信参数。
  2. 发送数据:使用 ser.write 方法发送字节流数据。
  3. 接收数据:通过 ser.in_waiting 检查是否有数据可读,使用 ser.readline 读取数据,并进行解码。
  4. 关闭串口:操作完成后,需要关闭串口以释放资源。

注意事项

  • 在使用串口通信时,首先要确保设备连接正确,并对应串口号(如 COM3)设置正确。
  • 波特率等参数需与外部设备设置一致。
  • 处理异常:在实际应用中,可以考虑使用 try...except 结构来处理串口打开失败等异常情况。

通过 pyserial 库,Python 用户可以方便地实现串口数据的发送与接收,结合其他硬件平台,能够构建出丰富的应用场景。无论是简单的设备控制还是复杂的数据处理,都是一项非常有用的技能。

点赞(0) 打赏

微信小程序

微信扫一扫体验

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部