欢迎访问宙启技术站
智能推送

python的pyserial模块

发布时间:2023-05-14 15:05:29

pyserial是Python中非常有用的一个模块,它主要用于与串口进行通信,支持Windows、Linux、Mac OS X等多个平台,可以帮助用户快速地实现串口通信操作,是Python语言中最流行、功能最全面的串口通信模块之一。本文将详细介绍pyserial模块的基本使用方法以及其常用API。

pyserial模块的安装

在使用pyserial之前,需要先安装该模块。pyserial可以通过pip进行安装,命令如下:

pip install pyserial

对于Windows用户,如果遇到安装pyserial失败的情况,可以使用whl文件进行安装。具体步骤如下:

1. 从https://www.lfd.uci.edu/~gohlke/pythonlibs/#pyserial 中选择与Python版本和操作系统相符合的pyserial-XXX-cpXX-XXm-win_XX.whl文件下载,XXX为pyserial版本号,cpXX为Python版本号,XXm为操作系统位数,win_XX为操作系统类型。

2. 在命令行中输入命令即可安装,例如:

pip install pyserial-3.4-cp37-cp37m-win_amd64.whl

pyserial模块的基本使用方法

从pyserial模块引入Serial类,创建串口对象,可以使用如下代码:

import serial

ser = serial.Serial(‘COM1’, 9600, timeout=1)

其中,‘COM1’表示串口名称,可以根据自己使用的串口进行修改;9600表示串口通信波特率;timeout=1表示1秒内未收到数据就超时。创建好串口对象后,可以使用对象的方法进行读写数据。

接下来是串口通信的一般流程:

1. 打开串口:ser.open()

2. 写数据:ser.write(data)

3. 读数据:

① ser.readline():读取一行数据,返回bytes类型

② ser.read(n):读取n个字节的数据,返回bytes类型

③ ser.readline().decode()或ser.read(n).decode():将读取到的bytes类型数据解码为字符串类型数据

4. 关闭串口:ser.close()

例如,发送'Hello World!'字符串到串口:

import serial

ser = serial.Serial('COM1', 9600, timeout=1)

ser.open()

ser.write(b'Hello World!')

ser.close()

pyserial模块的常用API

pyserial模块中有很多常用的API函数,下面将介绍一些常用的API函数。

1. Serial(port=None, baudrate=9600, bytesize=EIGHTBITS, parity=PARITY_NONE, stopbits=STOPBITS_ONE, timeout=None, xonxoff=False, rtscts=False, write_timeout=None, dsrdtr=False, inter_byte_timeout=None)

函数说明:创建Serial实例对象,其中port表示串口名称,baudrate表示波特率,bytesize表示数据位数,parity表示奇偶校验,stopbits表示停止位数,timeout表示读取数据超时时间,xonxoff表示软件流控制,默认为False,rtscts表示硬件流控制,默认为False,write_timeout表示写数据超时时间,dsrdtr表示DSR/DTR流控制,默认为False,inter_byte_timeout表示字节间超时时间。

2. ser.read(size=None)

函数说明:从串口读取size个字节的数据,如果size为None或0,则读取全部数据,返回bytes类型数据。

3. ser.readline()

函数说明:从串口读取一行数据,以'\r

'为分隔符,返回bytes类型数据。

4. ser.write(data)

函数说明:向串口写入data数据,data可以是bytes类型或str类型。

5. ser.flush()

函数说明:清空串口缓存区的数据。

6. ser.close()

函数说明:关闭串口,释放相关资源。

7. ser.isOpen()

函数说明:判断串口是否已经打开,返回True或False。

8. ser.inWaiting()

函数说明:返回串口缓存区中剩余的字节数。

总结

本文对于pyserial模块进行了介绍,详细介绍了该模块的基本使用方法以及常用API,使得大家可以快速了解还处于学习Python的朋友可以在实际项目中使用pyserial模块时,可以更加容易地编写串口通信程序。

pyserial模块不仅仅是用于串口通信,还可以用于创建虚拟串口、USB串口等应用场景,也可以用于控制各种串口设备(如传感器、热敏打印机等)。在实际使用过程中,如果遇到问题可以查看pyserial模块的官方文档或者直接在Github上提issue寻求帮助。