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灯和机器人移动的功能。需要注意的是,这里要根据具体的串口连接情况修改串口号和波特率等参数。