赞
踩
pip install pyserial
可通过list_ports查看当前的各个端口,代码如下:
- from serial.tools import list_ports
-
- com_ports = list_ports.comports() #列出当前所有串口,返回数据类型为列表
- for com in com_ports:
- print(com[0]) #com[0],串口号
- #print(com.name) #同com[0],打印串口号
- print(com[1]) #com[1],对应的端口名
- import serial
- ser = serial.Serial(port = 'COM1', #串口COM1,windows
- #port = ‘/dev/ttyS0’, #Linux
- baudrate = 9600, #波特率,默认9600
- bytesize = 8, #数据位,默认8位
- parity = 'N', #校验位,可选‘N’、‘E’、‘O’,默认‘N’,无校验
- stopbits = 1, #停止位,可选1,1.5,2,默认为1位
- timeout = 1 #超时,单位为秒,默认为NONE,一直等待
- )
方法write(),参数需要是字节bytes类型,如果是字符串类型需进行‘utf-8’编码。
该函数有一个返回值,返回值为发送的数据长度,int型。
- 1. ser.write(b'123456')
- 2. ser.write('123456'.encode('utf-8'))
方法read(),参数为size,即接收字符长度,默认为1,如果没接收到指定长度会一直等待,如果设置了超时,会等待到超时时间。
read()接数的数据为字节bytes类型,要字符串类型需要进行‘utf-8’解码。
- recv_str = ser.read(6).decode('utf-8') #接收6个字节,‘utf-8’解码,转换为字符串
- recv_hex = ser.read(6).hex() #转换为hex类型
- print(recv_str)
readline(),读取一行,以\n结束,如果没有\n会一直读,阻塞,需要设定timeout,否则接收不到新行会一直等待。
close(), 关闭串口
open(), 打开串口
isOpen(), 查看串口是否打开
inWaiting(), 返回接收缓存中的字节数
flush(), 等待所有数据写出
flushInput(), 丢弃接收缓存中的所有数据
flushOutput(), 终止当前写操作,丢弃发送缓存中的所有数据
- import serial
- #实例化串口
- ser = serial.Serial('COM13')
- #串口发送数据
- len = ser.write('123456'.encode('utf-8'))
- #串口接收数据
- recv = ser.read(len).decode('utf-8')
- print(recv)
- #关闭串口
- ser.close()
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。