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 简介的主要内容,如果未能解决你的问题,请参考以下文章
在 Windows 上使用 pyserial 将串行数据写入 Arduino
Windows 中 Pyserial 和 Pexpect 的使用
在 Windows XP 上使用 pyserial 模块从串口 (COM3) 读取数据