serial模块使用方法
新建打开一个serial实例
import serial if __name__ == '__main__': ser = serial.Serial() ser.port = 'COM1' ser.baudrate = 115200 print(ser) ''' # 打印内容如下: Serial<id=0x1c695f0d340, open=True> (port='COM1', -> 读或者写端口 baudrate=115200, -> 波特率 bytesize=8, -> 字节大小 parity='N', -> 校验位 stopbits=1, -> 停止位 timeout=None, -> 超时设置 xonxoff=False, -> 软件流控 rtscts=False, -> 硬件流控 dsrdtr=False) -> 硬件流控 '''
serial模块常用方法
方法 | 说明 |
ser.isOpen() | 查看端口是否被打开 |
ser.open() | 打开端口 |
ser.close() | 关闭端口 |
ser.read() | 从端口读字节数据,默认1个字节 |
ser.read_all() | 从端口接收全部数据 |
ser.write(‘hello’) | 向端口写数据 |
ser.readline() | 读一行数据 |
ser.readlines() | 读多行数据 |
in_waiting() | 返回接收缓存中的字节数 |
flush() | 等待所有数据写出 |
flushInput() | 丢弃接收缓存中的所有数据 |
flushOutput() | 终止当前写操作,并丢弃发送缓存中的数据 |
发送数据
import serial if __name__ == '__main__': ser = serial.Serial('COM1', 115200) success_bytes = ser.write(b'This is data for test\r\n') # b表示bytes类型, 直接发送字符串报错 print(success_bytes) # 发送数据长度
接收数据
- read方法接收
- read(size),接收size单位的字符,默认接收一个字节
- 该方法是阻塞的,在没设置超时时间下,不接收到size单位的字符就一直等待接收
- 如果设置了超时时间,时间未到则一直等待import serial if __name__ == '__main__': ser = serial.Serial('COM1', 115200) data = ser.read(11) # 读取11字符 print(data) # 打印格式 :b'hello world'
- readline方法接收
- readline()是按行读取,即读到换行符是停止读取
- 该方法是阻塞的,在没设置超时时间下,不接收到size单位的字符就一直等待接收
- 如果设置了超时时间,时间未到则一直等待
import serial if __name__ == '__main__': ser = serial.Serial('COM1', 115200) data = ser.readline() # 读取到换行符为止 print(data) # 打印格式 :b'hello world\n'