PySerial模块的使用

serial.Serial类

serial.Serial的参数

参数 功能
port 设置端口名称,例如’COM1’。类型:str
baudrate 设置波特率。类型:int
bytesize 设置数据位。可能的值:FIVEBITS, SIXBITS, SEVENBITS, EIGHTBITS
parity 设置校验。可能的值: PARITY_NONE, PARITY_EVEN, ,PARITY_ODD PARITY_MARKPARITY_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)。

注意

  • ValueError – 当参数超出范围时将引发,例如波特率、数据位。
  • SerialException – 如果找不到或无法配置设备。
  • 在创建Serial对象时,如果port指定了端口名称,那么在创建对象后串口会自动打开。如果没有指定port,那么需要调用open()方法打开端口。
  • 波特率全平台支持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、400000
  • timeout的说明:
    • timeout = None:永远等待/直到收到请求的字节数
    • timeout = 0: 非阻塞模式,任何情况下立即返回,返回零个或多个,直到请求的字节数
    • timeout = x: set timeout to xseconds (float allowed) 当请求的字节数可用时立即返回,否则等到超时到期并返回到那时为止收到的所有字节。
  • write()默认情况下是阻塞的,除非设置了write_timeout (设置的值同上)。
  • 可能不支持同时启用两种流量控制方法(xonxoff和*rtscts )。*通常一次使用其中一种方法,而不是同时使用两种方法。
  • 并非所有平台都支持dsrdtr (已忽略)。将其设置为具有其状态遵循rtsctsNone效果。
  • 还可以考虑使用函数serial_for_url()而不是直接创建 Serial 实例。
  • 在 2.5 版中更改:dsrdtr现在默认为False(而不是None
  • 在 3.0 版更改:不再支持数字作为端口参数
  • 3.3 新版功能:exclusive标志

常量

常量 名称 说明
BAUDRATES 波特率 有效波特率列表。该列表可能不完整,因此设备也可能支持更高和/或中等波特率(只读)。
BYTESIZES 数据位 设备的有效字节大小列表(只读)。
PARITIES 校验 设备的有效奇偶校验列表(只读)。
STOPBITS 停止位 设备的有效停止位宽度列表(只读)。

常用方法

方法 参数 功能 注意
open() 打开端口,rts和的状态dtr被应用 一旦端口打开,某些操作系统和/或驱动程序可能会自动激活 RTS 和/或 DTR。当rtsdtr的设置值与其默认值 ( 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, EIGHTBITSType: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.RS485SettingsorNone 平台:
· 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 当软件或者硬件流量控制启用时,设置在输出数据时是否手动进行流量控制

serial.tools.list_ports

可以执行此模块以获取端口列表 (python -m serial.tools.list_ports)。

serial.tools.list_ports.comports方法

使用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类组成的列表

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

PySerial模块的使用相关推荐

  1. rosserial_java_ros系统下通过pyserial模块实现串口通讯(Python)

    经过几天的摸索终于实现了: 在ros系统下,订阅Twist/cmd_vel 消息,经过USB转串口通信,实现了通过灯带实时反映小车(差速)运行状态的功能. 通信部分主要依赖pyserial模块的功能实 ...

  2. python中serial模块的使用_python中pyserial模块使用方法

    一.概述 pyserial模块封装了对串口的访问. 二.特性 在支持的平台上有统一的接口. 通过python属性访问串口设置. 支持不同的字节大小.停止位.校验位和流控设置. 可以有或者没有接收超时. ...

  3. python 用pyserial模块通过串口发送数据的注意点

    最近开始在工作中开始边学边用python,其中需要用python实现串口读写,在编程调试过程中发现通过pyserial模块的write方法发送字符串时,数据并没有被发送去到串口设备中,而是停留在了输出 ...

  4. python安装pyserial模块_Python使用模块Pyserial模块报

    用pip安装pyserial后:sudo -H pip  install pyserial,运行新建的程序,名称为serial.py,程序中用到:import serial.toos.list_por ...

  5. Py之pyserial:Python的pyserial库的简介、安装、使用方法之详细攻略

    Py之pyserial:Python的pyserial库的简介.安装.使用方法之详细攻略 目录 pyserial库的简介 pyserial库的安装 pyserial库的使用方法 pyserial库的简 ...

  6. python做物联网控制_python实现NB-IoT模块远程控制

    本来想尝试下如果不使用运营商网络应用平台情况下,只是在服务商服务器上是否可以实现对终端完全控制,如果这样可行,那么物联网应用服务端更有灵活性.实际情况下,很难实现和运营商网络对等的处理,用python ...

  7. ubuntu使用python读串口_21.python通过pyserial读写串口--2013-06-02

    因为有个需要用有源RFID搞资产管理的项目,需要用python读取读卡器的串口内容.于是装了pyserial模块,用了下很方便,整理下常用功能 2,十六进制显示 十六进制显示的实质是把接收到的字符诸葛 ...

  8. Pyserial 实例教程详细用法

    一.概述 pyserial模块封装了对串口的访问. 二.特性 在支持的平台上有统一的接口. 通过python属性访问串口设置. 支持不同的字节大小.停止位.校验位和流控设置. 可以有或者没有接收超时. ...

  9. Python PyQt5 PySerial 书签备份 2018/12/6

    Bookmarks 书签栏 PyQt5 事件和信号 · PyQt5 中文教程 艾伦智能/pyqt5 pyserial-github pySerial API - pySerial 3.0 docume ...

最新文章

  1. ORACLE 字符串超长问题解决方案
  2. ios一个app调起另一个app_电商app开发价格:制作一个电商app需要多少钱?
  3. Linux(Ubuntu)设置环境变量(转载)
  4. vs2015使用GIt连接git.oschina.net/
  5. python基础教程:类和对象
  6. Python练习题:批量删除多个文件夹内的相同文件
  7. inteliji 优化
  8. Redis和Memcached整体
  9. 使用React和Spring Boot构建一个简单的CRUD应用
  10. 好好学习努力工作,要工作也要生活—2016总结,2017规划
  11. C语言——扫雷游戏详解
  12. windows上查看MD5
  13. Mbed TLS 编码规范
  14. Wireshark网络流量分析工具
  15. Dependency Walker使用说明
  16. 【算法编程】乘方取模
  17. 使用ST-LINK下载遇到的连接错误
  18. UEFI开发与调试---edk2中的Module
  19. TCP的分片和IP分片的区别
  20. 深圳ERP软件开发 轻松完成复杂数据管理

热门文章

  1. 无法搜索到蓝牙耳机小米蓝牙耳机
  2. 如何把Eclipse中安装的SVN中文插件转变为英文
  3. 银河麒麟服务器 linux 设置 固定IP地址
  4. android禁止分屏实现
  5. fileinput.js php,JS文件上传神器bootstrap fileinput的解析
  6. 工业机器人专业就业方向及就业前景
  7. html隐藏文字 点击查看更多,js 文字超出部分隐藏、点击显示更多示例
  8. NSTimer解决循环引用常见方法
  9. 今天咱们用Python整一个超级玛丽游戏 | 附带源码
  10. 2022属虎的双胞胎男宝名字 很不错的宝宝取名