pyserial串口学习

时间:2024-05-22 10:18:52

环境

  1. python版本:3.7
  2. win10
  3. pip 18.1
  4. pyserial 3.4

买了一个小玩具,测空气质量的,数据通过串口传输,所以就想用python写一个读数据的小程序。

前期准备

安装pyserial

serial就是串口的意思,用来操作串口名字起的还是很不错的(看谁先下手)

打开cmd(开始里搜索就能找到),安装pyserial

pip install pyserial

有兴趣的可以去看看pyserial文档

确认安装成功,使用

pip list

pyserial串口学习

如图所示,有pyserial就成功啦,如果速度很慢可以去网上搜搜如何换国内镜像,换完之后重启cmd重新安装即可体验飞速。

查看COM口工具

python -m serial.tools.list_ports -v

,可以列出所有串口名称及属性。

pyserial串口学习

常用的方法函数

导入串口模块import serial;
打开串口ser = serial.Serial(端口名称,…其他参数),ser.open()方法可以在close之后再次打开相应端口;
关闭串口ser.close();
通过串口写入ser.write(b’’),参数需要使用字节bytes类型,如果是str类型,则可以使用encode(‘utf-8’)的方式进行转换;
读取模块信息的方法如下,x = ser.read()读取一个字节,x=read(n)读取n个字节,readline()可以用来读取一行。
port端口名字,windows下为’COM1’等;
baudrate (int)波特率,可以设置的范围9600到115200;
bytesize为每个字节的比特数,设置值为FIVEBITS, SIXBITS,SEVENBITS, EIGHTBITS 5-8比特;parity设置校验位PARITY_NONE, PARITY_EVEN,PARITY_ODD PARITY_MARK, PARITY_SPACE,用来设置校验位;
stopbits停止位,用来指示字节完成,可以选择的设置STOPBITS_ONE,
STOPBITS_ONE_POINT_FIVE, STOPBITS_TWO;
write_timeout(float) 写入超时设置;
timeout (float)读出超时设置;
xonxoff (bool)软件流控开关;
rtscts (bool)硬件RTS/CTS流控开关;
dsrdtr (bool)硬件DSR/DTR流控开关。
关于UART流控两线方式没有硬件流控,四线方式采用DSR、DTR进行流控,而RS232标准中可以有DSR、DTR的流控方式。
RTS-request to send;
CTS- clear to send;
DSR-data set ready;
DTR-Data Terminal Ready。

关键代码

自动连接串口

plist = list(serial.tools.list_ports.comports())
if len(plist) > 0:
    comlist_0 =list(plist[0])
    ser = serial.Serial(comlist_0[0], 9600, timeout=60)

读取数据

ser.read(16) # 读取16字节数据

关闭串口

ser.close()

支持原创

码文不易,希望支持,谢谢->支持原创

pyserial串口学习pyserial串口学习

再次感谢,大家对本人的支持。