使用python pyserial模块串口通信方式

 更新时间:2023年09月06日 17:04:27   作者:究理观心  
这篇文章主要介绍了使用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()

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Python中使用gflags实例及原理解析

    Python中使用gflags实例及原理解析

    这篇文章主要介绍了Python中使用gflags实例及原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-12-12
  • Python pyautogui模块实现鼠标键盘自动化方法详解

    Python pyautogui模块实现鼠标键盘自动化方法详解

    这篇文章主要介绍了Python pyautogui 模块实现鼠标键盘自动化方法详解,需要的朋友可以参考下
    2020-02-02
  • Python字典fromkeys()方法使用代码实例

    Python字典fromkeys()方法使用代码实例

    这篇文章主要介绍了Python字典fromkeys()方法使用代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-07-07
  • Python字符串字母大小写转换的各种情况详析

    Python字符串字母大小写转换的各种情况详析

    在使用python语言开发中经常会碰到,需要大写转小写,小写转换大写,甚至字符串中的单词首字母大写,以及字符串手字字母大写的问题,下面这篇文章主要给大家介绍了关于Python字符串字母大小写转换的相关资料,需要的朋友可以参考下
    2022-05-05
  • python3.4.3下逐行读入txt文本并去重的方法

    python3.4.3下逐行读入txt文本并去重的方法

    下面小编就为大家分享一篇python3.4.3下逐行读入txt文本并去重的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-04-04
  • python3.7调试的实例方法

    python3.7调试的实例方法

    在本篇文章里小编给大家整理的是一篇关于python3.7调试的实例方法,需要的朋友可以学习下。
    2020-07-07
  • Python并发编程多进程,多线程及GIL全局解释器锁

    Python并发编程多进程,多线程及GIL全局解释器锁

    这篇文章主要介绍了Python并发编程多进程,多线程及GIL全局解释器锁,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的朋友可以参考一下
    2022-07-07
  • python之json格式解析与转换方式

    python之json格式解析与转换方式

    使用Python的内置json库可以实现JSON和Python对象的互相转换,有效的JSON格式字符串是指使用双引号、键唯一且没有尾随逗号的字符串,json.loads()用于将JSON字符串转换为Python对象,json.dumps()则将Python对象转化为JSON字符串
    2024-09-09
  • Pytest单元测试框架如何实现参数化

    Pytest单元测试框架如何实现参数化

    这篇文章主要介绍了Pytest单元测试框架如何实现参数化,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-09-09
  • matplotlib绘制饼图的基本配置(万能模板案例)

    matplotlib绘制饼图的基本配置(万能模板案例)

    饼图是常见的一种图表形式,本文主要介绍了matplotlib绘制饼图的基本配置(万能模板案例),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-04-04

最新评论