首页 > Python基础教程 >
-
使用python pyserial模块串口通信方式
这篇文章主要介绍了使用python pyserial模块串口通信方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
python pyserial模块串口通信
最近调试通信模块时,需要用UART串口输入AT命令控制模块,手动输入不便于自动化,所以就学习了下使用python进行串口控制。
serial模块安装
pip install 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()可以用来读取一行。
查看COM口工具
python -m serial.tools.list_ports -v
可以列出所有串口名称及属性。
Serial参数说明
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
一个简单示例
#!usr/bin/python3.6
import serial
import sys
import os
import time
import re
global MAX_LOOP_NUM
global newCmd
MAX_LOOP_NUM = 10
def waitForCmdOKRsp():
maxloopNum = 0
while True:
line = ser.readline()
maxloopNum = maxloopNum + 1
try:
print("Rsponse : %s"%line.decode('utf-8'))
except:
pass
if ( re.search(b'OK',line)):
break
elif(maxloopNum > MAX_LOOP_NUM):
sys.exit(0)
def sendAT_Cmd(serInstance,atCmdStr,waitforOk):
print("Command: %s"%atCmdStr)
serInstance.write(atCmdStr.encode('utf-8'))
#or define b'string',bytes should be used not str
if(waitforOk == 1):
waitForCmdOKRsp()
else:
waitForCmdRsp()
ser = serial.Serial("COM5",9600,timeout=30)
sendAT_Cmd(ser,'AT+CFUN=1\r',1)
ser.close()
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持。
原文链接:https://blog.csdn.net/dreambitbybit/article/details/79144917