Python读取Arduino串口数据

在物联网应用中,往往需要将Arduino与Python进行串口通信。Python提供了许多库来读取和写入串口数据,其中最常用的是pySerial库。本文将介绍如何使用pySerial库读取Arduino串口数据,并提供示例代码说明。

1. pySerial库简介

pySerial是一个Python的串口通信库,可以用于在计算机和外部设备之间进行串口通信。它提供了许多功能,包括打开、读取和写入串口数据,设置串口参数等。

1.1 安装pySerial库

要使用pySerial库,首先需要安装它。可以通过以下命令使用pip安装:

pip install pyserial

1.2 打开串口

在Python中,要与串口进行通信,首先需要打开串口。可以使用serial.Serial()函数打开串口,并指定串口的名称、波特率等参数。例如,要打开COM1串口,波特率为9600,可以使用以下代码:

import serial

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

1.3 读取串口数据

打开串口后,就可以使用ser.read()函数读取串口数据。ser.read()函数将返回接收到的数据,并将光标移动到下一个可用位置。如果没有可用的数据,则该函数将被阻塞,直到有数据可读。

以下是一个读取串口数据的示例代码:

import serial

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

while True:
    data = ser.read()
    print(f'Received: {data}')

1.4 写入串口数据

要写入串口数据,可以使用ser.write()函数。ser.write()函数将数据写入串口,并返回写入的字节数。

以下是一个写入串口数据的示例代码:

import serial

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

data = b'Hello Arduino!'
ser.write(data)

2. 使用pySerial读取Arduino串口数据的示例

在本节中,将提供一个完整的示例,演示如何使用pySerial库读取Arduino串口数据。

2.1 硬件准备

首先,需要准备以下硬件设备:

  • Arduino开发板
  • USB数据线

2.2 Arduino代码

在Arduino开发板上,编写以下代码:

void setup() {
  Serial.begin(9600);
}

void loop() {
  int sensorValue = analogRead(A0);
  Serial.println(sensorValue);
  delay(1000);
}

以上代码将读取模拟输入A0的值,并通过串口发送给计算机。

2.3 Python代码

在Python中,使用pySerial库读取Arduino发送的数据。以下是一个示例代码:

import serial

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

while True:
    data = ser.readline()
    sensorValue = int(data.decode().strip())
    print(f'Received: {sensorValue}')

以上代码将打开COM1串口,波特率为9600,并循环读取串口数据。每次读取一行数据,将其转换为整数,并打印出来。

3. 类图

以下是示例代码中使用的类图:

classDiagram
    class serial.Serial
    class serial.Serial {
        +Serial(port: str, baudrate: int)
        +read(size: int) : bytes
        +write(data: bytes) : int
    }

结论

本文介绍了如何使用pySerial库读取Arduino串口数据,并提供了示例代码进行演示。通过这些代码,可以在Python中轻松地与Arduino进行串口通信,实现物联网应用的开发。希望本文对你有所帮助!