安装
pip install pyserial
方法
# 获取当前系统内的所有检测到的串口信息
serial.tools.list_ports.comports()
"""
- 根据设置的波特率发送数量,bytes_data数量不会影响效率
- 传入字节类型数据, 成功时返回传入数据长度
- 当被cancel_write函数中断后(结果见测试代码1输出)
- Windows、Linux返回0
- Mac返回已写入数据长度
- 超时抛出异常(serial.serialutil.SerialTimeoutException: Write timeout)
- 异常出现情况
- 设置超时时间(write_timeout)后,单次写入超过超时时间
- (???, 见测试代码2)同时进行多次write, 当耗时长的write结束时将抛出该异常
"""
serial.write(bytes_data)
"""
- 从串行端口读取大小字节。如果设置了超时,则可以按要求返回较少的字符。
如果没有超时,它将阻塞直到读取请求的字节数。
- 当被cancel_read函数中断后
- Windows返回0
- Linux、Mac返回已读取的数据
- 设置超时时间(timeout), 不会抛出异常
- 超时后继续read不丢包
"""
serial.read(size)
# 中断write
cancel_write()
# 中断read
cancel_read()
串口每秒传输的字节数 = 波特率 / 10 , 10为 8 bit + 2bit的帧头帧尾
- 测试代码如下
import serial, threading
import serial.tools.list_ports
import time
# 读取当前系统内的串口信息
for i in serial.tools.list_ports.comports():
print(i)
def write(ser, data):
# 超时后跑出异常(serial.serialutil.SerialTimeoutException: Write timeout)
st = time.time()
write_length = ser.write(data)
print("write length: ", write_length)
write_time = time.time() - st
print("write time: ", write_time)</