python3的串口读写函数

  • Post category:Python

Python中的串口读写需要通过pyserial模块来实现,该模块支持Python 2.x和3.x版本。下面是Python3中串口读写的完整攻略:

引入pyserial模块

import serial

1.打开串口

打开串口并指定端口号,波特率等参数

ser = serial.Serial(port=’/dev/ttyUSB0′, baudrate=115200)

或者 ser = serial.Serial(‘/dev/ttyUSB0’, 115200)

2.写入数据

将字符串写入到串口中,需要先将字符串编码成bytes

ser.write(“hello”.encode())

3.读取数据

读取指定字节数的数据

data = ser.read(10)

还可以使用readline()方法读取以’\n’为结尾的一行数据

line = ser.readline()

或者使用readlines()方法读取所有可用的数据

all_data = ser.readlines()

4.关闭串口

ser.close()

上面的代码提供了一个完整的串口读写攻略,其中重点在于打开串口、写入数据、读取数据和关闭串口。

下面提供两个简单的代码示例:

示例1:连接Arduino,控制亮灭LED

import serial
import time

ser = serial.Serial(port=’/dev/ttyUSB0′, baudrate=9600)

while True:
data = input(“请输入指令:”) # 加上input函数,控制LED亮灭
ser.write(data.encode()) # 将用户指令写入串口
time.sleep(1) # 等待1s,因为Arduino需要一定时间处理指令
res = ser.read(ser.in_waiting) # 读取串口中的数据
if res:
print(res.decode(‘UTF-8’)) # 打印接收到的数据

ser.close()

示例2:Python向串口发送多条指令控制机器人移动

import serial
import time

ser = serial.Serial(port=’/dev/ttyUSB0′, baudrate=115200)

while True:
cmds = [“forward”, “turn_left”, “stop”, “backward”, “turn_right”]
for cmd in cmds:
ser.write(cmd.encode())
time.sleep(0.5)

ser.close()

以上示例代码分别演示了Python通过串口控制Arduino上的LED灯和机器人移动的功能。需要注意的是,这里要根据具体的串口连接情况修改串口号和波特率等参数。