使用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办公自动化(Excel)的实例教程

    python办公自动化(Excel)的实例教程

    使用Excel自动化处理,将会用到Python第三方库,所以我们需要提前通过来进行安装,下面这篇文章主要给大家介绍了关于python办公自动化(Excel)的相关资料,需要的朋友可以参考下
    2022-11-11
  • Keras Convolution1D与Convolution2D区别说明

    Keras Convolution1D与Convolution2D区别说明

    这篇文章主要介绍了Keras Convolution1D与Convolution2D区别说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-05-05
  • pytorch实现线性回归

    pytorch实现线性回归

    这篇文章主要为大家详细介绍了pytorch实现线性回归,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-04-04
  • numba提升python运行速度的实例方法

    numba提升python运行速度的实例方法

    在本篇文章里小编给大家整理的是一篇关于numba提升python运行速度的实例方法,有兴趣的朋友们可以参考下。
    2021-01-01
  • Django 表单模型选择框如何使用分组

    Django 表单模型选择框如何使用分组

    这篇文章主要介绍了Django 表单模型选择框如何使用分组,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-05-05
  • 基于python不同开根号的速度对比分析

    基于python不同开根号的速度对比分析

    这篇文章主要介绍了基于python不同开根号的速度对比分析,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-03-03
  • Python中查看变量的类型内存地址所占字节的大小

    Python中查看变量的类型内存地址所占字节的大小

    这篇文章主要介绍了Python中查看变量的类型,内存地址,所占字节的大小,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-06-06
  • 使用python读取CSV文件时遇到编码问题解决方案

    使用python读取CSV文件时遇到编码问题解决方案

    这篇文章主要介绍了用python读取CSV文件时遇到编码问题,本文给大家分享最优解决方案,通过使用csvkit,它使用自动检测适当的编码和解码,需要的朋友可以参考下
    2023-08-08
  • 使用国内镜像源创建离线PyPI镜像的完整方案

    使用国内镜像源创建离线PyPI镜像的完整方案

    根据知识库信息,清华镜像已明确会阻断大量下载行为的请求,为避免此问题,我将提供一个安全使用国内镜像源的完整方案,确保能够一次性准备指定Python版本的所有包,然后导出到内网环境,需要的朋友可以参考下
    2025-09-09
  • 使用EditPlus编辑器运行Python程序方式

    使用EditPlus编辑器运行Python程序方式

    这篇文章主要介绍了使用EditPlus编辑器运行Python程序方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-12-12

最新评论