参数 | 功能 |
---|---|
port | 设置端口名称,例如’COM1’。类型:str |
baudrate | 设置波特率。类型:int |
bytesize | 设置数据位。可能的值:FIVEBITS , SIXBITS , SEVENBITS , EIGHTBITS |
parity | 设置校验。可能的值: PARITY_NONE , PARITY_EVEN , ,PARITY_ODD PARITY_MARK PARITY_SPACE |
stopbits | 设置停止位。可能的值: STOPBITS_ONE , STOPBITS_ONE_POINT_FIVE , STOPBITS_TWO |
timeout | 设置接收超时时间。以秒为单位。类型:float,默认None禁用。 |
xonxoff | 设置是否启用软件流量控制。类型:bool |
rtscts | 设置是否启用硬件(RTS/CTS)流量控制。类型:bool |
dsrdtr | 设置是否启用硬件 (DSR/DTR) 流量控制。类型:bool |
write_timeout | 设置写入超时时间。以秒为单位。类型:float |
inter_byte_timeout | 设置插入字符超时时间。以秒为单位。类型:float,默认None禁用。 |
exclusive | 设置独占访问模式(仅限 POSIX)。 |
timeout = None
:永远等待/直到收到请求的字节数timeout = 0
: 非阻塞模式,任何情况下立即返回,返回零个或多个,直到请求的字节数timeout = x
: set timeout to x
seconds (float allowed) 当请求的字节数可用时立即返回,否则等到超时到期并返回到那时为止收到的所有字节。write()
默认情况下是阻塞的,除非设置了write_timeout
(设置的值同上)。dsrdtr
(已忽略)。将其设置为具有其状态遵循rtscts
的None
效果。serial_for_url()
而不是直接创建 Serial 实例。dsrdtr
现在默认为False
(而不是None
)exclusive
标志常量 | 名称 | 说明 |
---|---|---|
BAUDRATES | 波特率 | 有效波特率列表。该列表可能不完整,因此设备也可能支持更高和/或中等波特率(只读)。 |
BYTESIZES | 数据位 | 设备的有效字节大小列表(只读)。 |
PARITIES | 校验 | 设备的有效奇偶校验列表(只读)。 |
STOPBITS | 停止位 | 设备的有效停止位宽度列表(只读)。 |
方法 | 参数 | 功能 | 注意 |
---|---|---|---|
open() | 打开端口,rts 和的状态dtr 被应用 | 一旦端口打开,某些操作系统和/或驱动程序可能会自动激活 RTS 和/或 DTR。当rts 或 dtr 的设置值与其默认值 ( True /active)不同时,RTS/DTR 可能会出现故障。 | |
close() | 立即关闭端口 | ||
__del__ | 销毁Serial实例 | 当串行端口实例被释放时关闭端口。 | |
read(size=1) | · size 为读取字节数· 返回读取到的字节,类型: bytes | 从缓存区读取指定字节数的字节流 | 如果设置了超时,则返回的字符数可能少于请求的字符数。如果没有超时,它将阻塞直到读取请求的字节数。 |
read_intil(expected=LF, size=None) | · expected 设置结束码,类型:bytes · size 设置接收字节数 | 从缓存区读取以指定序列结尾的字节流,如果达到size 指定的大小也会停止阻塞返回数据 | 读取直到找到指定的序列(默认为’\n’),直到超过大小或发生超时。如果设置了超时,则返回的字符数可能少于请求的字符数。如果没有超时,它将阻塞直到达到请求的字节数或指定的序列。 |
cancel_read() | 从另一个线程取消挂起的读取操作。阻塞调用的 read() 会立即中止。 | · read() 不会报告任何错误,但会返回到该点为止收到的所有数据(类似于超时)。· Posix和Windows平台支持 | |
write(date) | · date 为要发送的数据,类型为bytes · 返回以发送的字节数,类型: int | 发送数据,返回已发送的字节数 | · SerialTimeoutException: 如果为端口配置了写超时并且超过了时间则引发该报错。 · 必须对 Unicode 字符串进行编码,例如 'hello'.encode('utf-8') |
cancel_write() | 从另一个线程取消挂起的写操作。该 write() 方法将立即返回(未指示错误)。 | · 操作系统可能仍在从缓冲区发送, reset_output_buffer() 可能需要单独调用 清楚发送缓存区· Posix和Windows平台支持 | |
flush() | 直到所有数据都被写入再刷新文件流对象 | ||
in_waiting | 返回接收缓存区的字节数 | ||
out_waiting | 返回写入缓存区的字节数 | Windows和Posix平台支持 | |
reset_input_buffer() | 清除接收缓存区的所有数据 | 3.0版本更名为flushInput() | |
reset_output_buffer() | 清除发送缓存区的所有数据 | 3.0版本更名为flushOutput() | |
send_break(duration=0.25) | duration 以秒为单位 | 也没搞清楚这个方法的作用 | |
break_condition | 返回当前是否处于空闲状态 | ||
rts | 设置rts 是否使用,类型:bool返回 rts 状态,类型:bool | ||
cts | 获取cts 状态,类型:bool | ||
dtr | 设置drt 是否使用,类型:bool返回 rts 状态,类型:bool | ||
dsr | 获取dsr 状态,类型:bool | ||
ri | 获取ri 状态,类型:bool | RI是由外部设备通过串口发送给计算机的一个控制信号,表示外部设备中有来电或呼叫等事件发生。 | |
cd | 获取cd 状态,类型:bool | CD是指调制解调器通过串口向计算机发送的一个信号,表示调制解调器已经连接到远程通信方,可以进行数据传输。在计算机与远程通信方进行数据传输之前,需要等待CD信号的到来,以确保通信连接已经建立成功。 | |
name | 获取串口的名字,类型:str | ||
is_open | 返回串口是否被打开,类型:bool | ||
port | 设置端口名。如果端口已经打开的话会关闭端口并根据新的设置重新打开端口 | ||
baudrate | 设置波特率,或者获取波特率,类型:int | ||
bytesize | 设置数据位,或者获取数据位,类型:int | 可能设置的值:FIVEBITS , SIXBITS , SEVENBITS , EIGHTBITS Type:int | |
parity | 设置校验,或者获取校验 | 可能设置的值:PARITY_NONE , PARITY_EVEN , PARITY_ODD PARITY_MARK , PARITY_SPACE | |
stopbits | 设置停止位,或者获取停止位 | 可能设置的值STOPBITS_ONE , STOPBITS_ONE_POINT_FIVE , | |
timeout | 设置接收超时时间,或者获取接收超时时间,类型:float | ||
write_timeout | 设置写入超时时间,或者获取写入超时时间,类型:float | ||
inter_byte_timeout | 没懂什么意思 | ||
xonxoff | 设置是否启用软件流控,或者获取是否启用软件流控,类型:bool | ||
rtscts | 设置是否启用硬件流控,或者获取是否启用硬件流控,类型:bool | ||
dsrdtr | 设置是否启用硬件流控,或者获取是否启用硬件流控,类型:bool | ||
rs485_mode | 设置是否启用RS485 设置,或者获取是否启用RS485 设置,类型:rs485.RS485Settings orNone | 平台: · Posix (Linux, limited set of hardware) · Windows (only RTS on TX possible) | |
readable() | 返回是否可读 | ||
writeable() | 返回是否可写 | ||
seekable() | 没懂啥意思 | ||
readinto(b) | b为列表,数组 返回b | 将读取到的数据写入到b中,然后返回b | |
readline(size=-1) | size为读取到的最大字节数 | 从字节流中读取一行数据(b’\n’结尾的),如果设定了size则最大长度不超过该值 | |
readlines(hint=-1) | hint为读取的行数 | 从字节流中读取多行,行数由hint设定 | |
writelines(lines) | lines为写入的行数 | 写入多行 | 行的末尾需要加分行符 |
get_settings() | 返回带有端口设置的字典 | 这对于备份当前设置很有用,以便以后可以使用 恢复它们apply_settings() 。请注意,控制线 (RTS/DTR) 的状态不是设置的一部分。 | |
apply_settings(d) | d为带有端口设置的字典(该字典通常由get_settings()创建 ) | 设置端口参数 | |
__enter__ | 在使用with 语句时,返回Serial instance | ||
__exit__ | 关闭串口 | ||
fileno() | 返回此对象打开的端口的文件描述符编号 | 没懂什么意思 | |
set_input_flow_control(enable) | enable为是否启用软件流量控制,类型:bool | 设置是否启动软件流控 | · 如果启用会将 XON (true) 和 XOFF (false) 发送到其他设备。 · *在 3.0 版中更改:*重命名为 flowControlOut |
set_output_flow_control(enable) | enable类型:bool | 当软件或者硬件流量控制启用时,设置在输出数据时是否手动进行流量控制 |
可以执行此模块以获取端口列表 (python -m serial.tools.list_ports)。
使用serial.tools.list_ports.comports(include_links=False)
方法获取端口信息,返回由ListPortInfo
类组成的列表。
方法 | 参数 | 功能 |
---|---|---|
serial.tools.list_ports.comports(include_links=False) | include_links符号链接是否在/dev 下,类型:bool | 获取串口信息并返回由serial.tools.list_ports.ListPortInfo 类组成的列表 |
ListPortInfo类包含的方法 | 功能 | 说明 |
---|---|---|
device | 返回完整的设备名称/路径, e.g: /dev/ttyUSB0 | |
name | 返回设备的名称,e.g: COM3 | 常用 |
description | 返回设备描述信息,e.g:USB Serial Port (COM3) | |
hwid | 返回技术信息,e.g:USB VID:PID=0403:6001 SER=FTDWFGQCA | |
vid | 返回USB的厂家ID(integer, 0…65535) | |
pid | 返回USB的产品ID(integer, 0…65535) | |
serial_number | 字符串格式返回USB串口序号,e.g: FTDWFGQCA | |
location | 字符串格式返回USB串口的位置 | |
manufacture | 返回USB串口制造商,由制造商提供 | |
product | 返回USB产品字符串,有制造商提供 | |
interface | 返回接口特定描述 |
p = serial.tools.list_ports.comports(include_links=True)
print('端口列表:', p)
print('device = ', p[0].device)
print('name = ', p[0].name)
print('description = ', p[0].description)
print('hwid = ', p[0].hwid)
print('vid = ', p[0].vid)
print('pid = ', p[0].pid)
print('serial_number = ', p[0].serial_number)
print('location = ', p[0].location)
print('manufacturer', p[0].manufacturer)
print('product = ', p[0].product)
print('interface = ', p[0].interface)
运行结果:
端口列表: [<serial.tools.list_ports_common.ListPortInfo object at 0x000001846B2EFFA0>, <serial.tools.list_ports_common.ListPortInfo object at 0x000001846B2EFF70>, <serial.tools.list_ports_common.ListPortInfo object at 0x000001846B2EFF40>]
**************************************************
device = COM1
name = COM1
description = ELTIMA Virtual Serial Port (COM1->COM2)
hwid = VSBC7\DEVICES\0000
vid = None
pid = None
serial_number = None
location = None
manufacturer ELTIMA Software
product = None
interface = None