Windows 下的 pySerial API 简介

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Windows 下的 pySerial API 简介相关的知识,希望对你有一定的参考价值。

参考技术A 本节主要介绍 pySerial API,参考 pyserial 。

serialutil 为 pySerial 提供了支持不同后端的函数和类。

请注意,POSIX 不支持1.5个停止位。它将下降到2个停止位。

time.monotonic() 以绝对时间为准,获取的时间为系统重启到现在的时间,更改系统时间对它没有影响。

serialutil.SerialBase 是 Serial 端口的基类,提供了 __init__ 函数和端口属性的 get / set 功能。

类别属性默认值:

初始化函数:

初始化通讯端口对象。如果给出了 port ,则该端口将立即打开。否则,将返回处于关闭状态的串行端口对象。

给定 port 后,将在创建对象时立即打开该端口。当 port 为 None 时,不会打开它,接下来需要调用 open() 打开。

port 是设备名称:取决于操作系统。例如,在 GNU/Linux 上为 /dev/ttyUSB0 ,在 Windows 上为 COM3 。

控制 read() 行为的参数 timeout 的可能值:

除非设置了 write_timeout ,否则默认情况下 write() 处于阻塞状态。有关可能的值,请参考上面的超时列表。

请注意,可能不支持同时启用两种流控制方法( xonxoff 和 rtscts )。通常一次使用一种方法,不能同时使用两种方法。并非所有平台都支持 dsrdtr (已被忽略)。将其设置为 None 会导致其状态遵循 rtscts 。

属性相关函数:

读取、写入函数:

serialwin32.py 模块的后端是 Windows 系统,支持 32、64 位。

还可以考虑使用函数 serial_for_url() 代替直接创建 Serial 实例。

serial.tools.list_ports.grep 使用正则表达式搜索端口。搜索:端口名称,描述和硬件 ID。该函数返回一个可迭代的方法,该方法返回与 serial.tools.list_ports.comport() 相同的元组。

输出:

python串口操作

通过引用serial模块包,来操作串口。api见https://pyserial.readthedocs.io/en/latest/tools.html#serial.tools.list_ports.ListPortInfo

1、查看串口名称

在Linux和Windows中,串口的名字规则不太一样。
需要事先查看。

Linux下的查看串口命令
root@D2:~# ls -l /dev/ttyS*
crw-rw---- 1 root dialout 4, 64 Dec 26 06:53 /dev/ttyS0
crw-rw---- 1 root dialout 4, 65 Dec 26 06:41 /dev/ttyS1
crw--w---- 1 root tty     4, 66 Dec 26 06:41 /dev/ttyS2
crw-rw---- 1 root dialout 4, 67 Dec 26 06:41 /dev/ttyS3
windows下查看串口命令
在电脑的“设备管理器”中的“通用串行总线控制器”里查看。可以看看COM7这种字样的就是了。

2、先安装serial模块包

pip install pyserial

3、操作

有两种设置串口的方式:

  • 方式一:
import serial

# 连接
# linux
ser = serial.Serial('/dev/ttyS0', 9600, timeout=0.2)
# windows
# ser = serial.Serial('COM7', 9600, timeout=0.2)

# 接收返回的信息
while True:
    recv = ser.readline()
    print(str(recv))
    if str(recv) == 'q':
        break
  • 方式二:这个是可以关闭串口的
import serial

# 连接
ser = serial.Serial()
ser.port = '/dev/ttyS0'
ser.baudrate = 9600
ser.timeout = 0.2
ser.open()

# 接收返回的信息
while True:
    recv = ser.readline()
    print(str(recv))
    if str(recv) == 'q':
        break
ser.close()

windows下

import serial
import serial.tools.list_ports

plist = list(serial.tools.list_ports.comports())

if len(plist) <= 0:
    print("The Serial port can't find!")
else:
    for item in plist:
        print(item.name)
        print(item.device)
        print(item.name)
        print(item.description)
        print(item.hwid)
        print("%x" % item.vid)
        print("%x" % item.pid)
        print(item.serial_number)
        print(item.location)
        print(item.manufacturer)
        print(item.product)
        print(item.interface)

以上是关于Windows 下的 pySerial API 简介的主要内容,如果未能解决你的问题,请参考以下文章

python串口操作

在 Windows 上使用 pyserial 将串行数据写入 Arduino

Windows 中 Pyserial 和 Pexpect 的使用

在 Windows XP 上使用 pyserial 模块从串口 (COM3) 读取数据

未找到 windows 10 python 串行模块,但 pip install pyserial 已通过

pySerial 串口工具简介