当前位置: 首页 > 工具软件 > pySerial > 使用案例 >

python3串口通信模块pyserial

商天逸
2023-12-01

原文链接:[Electrical_IT]原创:python库之pyserial用法,pyserial和serial的区别

pyserial和serial的区别

python3版本以上涉及串行端口访问的应用均使用pyserial库,不需要serial库。
不过在python程序中,要import serial。但实际上settings中不安装serial,只需pyserial。

安装

python3使用serial模块需要安装pyserial模块,且不能安装serial模块,如遇到安装了pyserial后仍无法import,按一下方式处理:
1、确保py3.4以上
2、卸载serial和pyserial

pip uninstall serial
pip uninstall pyserial

3、再安装pyserial

pip install pyserial

如果不行,多试几次。。能行的

示例

官方示例

The port is opened automatically:
(Changed in version 3.4: the port is automatically opened)

port = serial.Serial()
port.port = '...'
with port as s:
...     s.write(b'hello')

打开串口示例

除此示例外,其他示例省略import serial、ser定义和close()等必要程序,请自行补全,灵活使用。
可用参数在后面。

import serial // 安装pyserial,但import serial,且不能安装serial

# ser为串口对象,后续调用均用点运算符
ser = serial.Serial('COM7', 3000000, 8, 'N', 1) # 'COM7', 3000000, bytesize=8, 
# 上文也可后设参数
ser = serial.Serial()
ser.port = 'COM7'
ser.baudrate = 3000000
...
parity='N', stopbits=1
flag = ser.is_open

if flag:
	print('success\n')
	ser.close()
else:
	print('Open Error\n')

写入串口示例

向串口ser写入help字符串:

ser.write("help".encode('utf-8'))

注意,字符串要编码成utf-8,否则会报错,详细参考下文中的write(data)说明。

读取串口示例

读取串口4个字节的数据:

print(ser.read(4))

发送串口命令示例

发送命令help:

command = "help\n"   # 命令要加\n,否则识别为普通字符串
ser.write(command.encode('utf-8'))   # 命令也同样要编码

可用参数

在使用 serial.Serial() 创建串口实例时,可以传入的参数很多,常用的参数如下(默认值用红色标记):

port - 串口设备名或 None。
baudrate - 波特率,可以是50, 75, 110, 134, 150, 200, 300, 600, 1200, 1800, 2400, 4800, 9600, 19200, 38400, 57600, 115200, 230400, 460800, 500000, 576000, 921600, 1000000, 1152000, 1500000, 2000000, 2500000, 3000000, 3500000, 4000000。
bytesize - 数据位,可取值为:FIVEBITS, SIXBITS, SEVENBITS, EIGHTBITS。
parity - 校验位,可取值为:PARITY_NONE, PARITY_EVEN, PARITY_ODD, PARITY_MARK, PARITY_SPACE。
stopbits - 停止位,可取值为:STOPBITS_ONE, STOPBITS_ONE_POINT_FIVE, STOPBITS_TOW。
xonxoff - 软件流控,可取值为 True, False。
rtscts - 硬件(RTS/CTS)流控,可取值为 True, False。
dsr/dtr - 硬件(DSR/DTR)流控,可取值为 True, False。
timeout - 读超时时间,可取值为 None, 0 或者其他具体数值
 类似资料: