先安装sudo
apt-get
install
python3-serial
一、打开串口
import serial
ser=serial.Serial("/dev/ttyUSB0",9600,timeout=0.5) #使用USB连接串行口
ser=serial.Serial("/dev/ttyAMA0",9600,timeout=0.5) #使用树莓派的GPIO口连接串行口
二、打开端口
ser.open () #打开端口
ser.close() #关闭端口
三、读取
s = ser.read(10) #从端口读10个字节
从串行端口读取大小字节。如果设置了超时,它可能会按要求返回更少的字符。在没有超时的情况下,它将阻塞,直到读取请求的字节数为止。
data = ser.readline() #是读一行,以/n结束,要是没有/n就一直读,阻塞。
data = ser.readlines()和ser.xreadlines() #都需要设置超时时间
四、写入
ser.write("hello") #向端口些数据
五、获得串行口状态
串行口的属性:
name:设备名字
portstr:已废弃,用name代替
port:读或者写端口
baudrate:波特率
bytesize:字节大小
parity:校验位
stopbits:停止位
timeout:读超时设置
writeTimeout:写超时
xonxoff:软件流控
rtscts:硬件流控
dsrdtr:硬件流控
interCharTimeout:字符间隔超时
属性的使用方法:
ser=serial.Serial("/dev/ttyAMA0",9600,timeout=0.5)
ser.open()
print(ser.name)
print(ser.port)
print(ser.baudrate) #波特率
print(ser.bytesize) #字节大小
print(ser.parity) #校验位N-无校验,E-偶校验,O-奇校验
print(ser.stopbits) #停止位
print(ser.timeout) #读超时设置
print(ser.writeTimeout) #写超时
print(ser.xonxoff) #软件流控
print(ser.rtscts) #硬件流控
print(ser.dsrdtr) #硬件流控
print(ser.interCharTimeout) #字符间隔超时
ser.close()
六、设置串行口状态
需要用的常量
bytesize:FIVE BITS、SIXBITS、SEVENBITS、EIGHTBITS
parity: PARITY_NONE, PARITY_EVEN, PARITY_ODD, PARITY_MARK, PARITY_SPACE
stopbits: STOPBITS_ONE, STOPBITS_ONE_POINT_FIVE, STOPBITS_TWO
异常:
ValueError:参数错误
SerialException:找不到设备或不能配置
ser.baudrate=9600 #设置波特率
ser.bytesize=8 #字节大小
ser.bytesize=serial.EiGHTBITS #8位数据位
ser.parity=serial.PARITY_EVEN #偶校验
ser.parity=serial.PARITY_NONE #无校验
ser.parity=serial.PARITY_ODD #奇校验
ser.stopbits=1 #停止位
ser.timeout=0.5 #读超时设置
ser.writeTimeout=0.5 #写超时
ser.xonxoff #软件流控
ser.rtscts #硬件流控
ser.dsrdtr #硬件流控
ser.interCharTimeout #字符间隔超时
七、缓存区清理
flush():等待所有数据写出。
flushInput():丢弃接收缓存中的所有数据
flushOutput():终止当前写操作,并丢弃发送缓存中的数据。