首页 > 编程知识 正文

Python与串口通信

时间:2023-11-20 02:01:38 阅读:301025 作者:XPOG

本文将详细介绍如何使用Python与串口进行通信。

一、串口通信简介

串口通信是一种常见的设备通信方式,用于在电脑与外部设备之间传输数据。串口通信常用于嵌入式系统、传感器、机器人等领域。

在Python中,我们可以使用Pyserial库来实现与串口的通信。Pyserial库提供了一组功能强大的API,用于读写串口数据。

import serial

# 创建串口对象
ser = serial.Serial('COM1', 9600)

# 向串口发送数据
ser.write(b'Hello World')

# 从串口读取数据
data = ser.read(10)
print(data)

# 关闭串口
ser.close()

二、设置串口参数

在与串口通信之前,我们需要设置串口的参数,包括串口号、波特率、校验位等。

import serial

ser = serial.Serial()
ser.port = 'COM1'  # 串口号
ser.baudrate = 9600  # 波特率
ser.parity = serial.PARITY_NONE  # 校验位
ser.stopbits = serial.STOPBITS_ONE  # 停止位
ser.bytesize = serial.EIGHTBITS  # 数据位
ser.timeout = 1  # 超时时间

# 打开串口
ser.open()

# 读写数据...

# 关闭串口
ser.close()

三、读取串口数据

在本节中,我们将介绍如何从串口读取数据。

1. 通过串口对象的`read()`方法,可以指定要读取的字节数。

import serial

ser = serial.Serial('COM1', 9600)

# 从串口读取数据
data = ser.read(10)
print(data)

ser.close()

2. 可以通过设置超时时间,实现在没有数据可读时的阻塞或非阻塞读取。

import serial

ser = serial.Serial('COM1', 9600)
ser.timeout = 1  # 设置超时时间为1秒

# 阻塞读取
data = ser.read(10)
print(data)

# 非阻塞读取
data = ser.read(10)
if len(data) == 0:
    print('No data available')

ser.close()

四、写入串口数据

在本节中,我们将介绍如何向串口写入数据。

1. 通过串口对象的`write()`方法,我们可以向串口写入数据。

import serial

ser = serial.Serial('COM1', 9600)

# 向串口写入数据
ser.write(b'Hello World')

ser.close()

2. 可以将字符串转化为字节数组,再进行写入。

import serial

ser = serial.Serial('COM1', 9600)

# 向串口写入数据
ser.write('Hello World'.encode('utf-8'))

ser.close()

五、串口通信实例

下面是一个使用Pyserial库进行串口通信的简单示例。

import serial

ser = serial.Serial('COM1', 9600)

while True:
    # 从串口读取数据
    data = ser.readline().decode().strip()
    
    # 处理数据
    if data == 'Hello':
        response = 'Hi there'
    else:
        response = 'Unknown command'
    
    # 向串口写入数据
    ser.write(response.encode('utf-8'))
    
ser.close()

本文介绍了如何使用Python与串口进行通信,包括设置串口参数、读取串口数据和写入串口数据。通过这些知识,我们可以方便地与外部设备进行数据交互,实现更多有趣的应用。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。