python之pyserial模块

python之pyserial模块pyserial模块封装了对串口的访问,兼容各种平台(Windows、Linux、MACOS等)。其支持的特性如下:所有平台基于类的接口相同端口可以通过python来设置支持不同数据长度、停止位、奇偶校验位、流量控制、RTS/CTS和Xon/Xoff特性可以设置是否超时读取/写数

大家好,欢迎来到IT知识分享网。python之pyserial模块"

pyserial 模块封装了对串口的访问,兼容各种平台(Windows、Linux、MACOS等)。

其支持的特性如下:

  1. 所有平台基于类的接口相同
  2. 端口可以通过python来设置
  3. 支持不同数据长度、停止位、奇偶校验位、流量控制、RTS/CTS 和 Xon/Xoff 特性
  4. 可以设置是否超时
  5. 读取/写数据很简单,调用read或write方法(同样支持readline、readlines等方法)
  6. 端口设置为二进制传输,没有空字节、CR-LF等处理,这使得这个模块比较好用
  7. 兼容io模块

1 模块安装

需要python2.7或python3.4以上的版本

pip install pyserial

2 模块使用

2.1 模块的初始化

import serial
import serial.tools.list_ports

# 打印所有com列表
li = serial.tools.list_ports.comports()
for ser in li:
    print(ser.name)

# 打开com13,波特率115200
# 以下是windows平台,linux平台是不同的port名,如/dev/ttyS0等
ser = serial.Serial(port="COM13",
                    baudrate=115200,
                    bytesize=serial.EIGHTBITS,
                    parity=serial.PARITY_NONE,
                    stopbits=serial.STOPBITS_ONE,
                    timeout=0.5)

# 判断是否打开成功
if ser.isOpen():
    print (f'{ser.port} is Opened')
else:
    print (f'{ser.port} is Closed')

# 不用串口时可以关闭 
# ser.close()                                                            

2.2 模块的读写

读取/写数据很简单,调用read或write方法(同样支持readline、readlines、writelines等方法),由于端口设置为二进制数据流传输,所以需要通过encode与decode方法将数据流加工为人们易于阅读的utf-8格式。

import serial

# 读串口
# read() - 默认一次读取一个字节,可以通过传入参数指定每次读取的字节数,返回值为bytes类型
# readall() - 读取串口接收的全部数据,返回值为bytes类型
# readlines() - 读取多行数据,返回值为list类型,列表元素类型为bytes类型
ser = serial.Serial("COM13", 115200, timeout=0.5)
for line in ser.readlines():
    print(line.decode('utf-8'))

# 写一个字符串“hello”
write_len = ser.write("hello".encode('utf-8'))
ser.flush() # 等待所有数据写出

ser.close()

2.3 其它方法

方法 说明
ser.isOpen() 查看端口是否被打开
ser.open() 打开端口
ser.close() 关闭端口
ser.read() 从端口读字节数据,默认1个字节
ser.readall() 从端口接收全部数据
ser.write(“hello”.encode(‘utf-8’)) 向端口写数据
ser.readline() 读一行数据
ser.readlines() 读多行数据,列表元素类型为bytes类型
in_waiting() 返回接收缓存中的字节数
flush() 等待所有数据写出
flushInput() 丢弃接收缓存中的所有数据
flushOutput() 终止当前写操作,并丢弃发送缓存中的数据

参考:

1 pyserial官方文档

2 python学习:python serial

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/30940.html

(0)
上一篇 2023-10-28 11:33
下一篇 2023-10-29 09:33

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信