Python 串口数据打包与解析

  • 介绍
  • 从字符串到字节流
  • 对字节流的解析

介绍

通常用python写好上位机要与板子通过串口通信的时候(比如命令,参数等),对于这之间的数据格式转换是有特定要求的,比如上位机到板子之间是以字节流进行数据传输,而用户输入到上位机的数据通常是字符串;当接收数据时,又需要将字节流进行相应格式的组合解析。

从字符串到字节流

法1:使用bytes(arg)函数,因为参数arg需要时列表[ ]类型,所以需要将传入的数据进行转换,直接上代码,如下:

解析:

  • input():获取用户输入的参数,不过此时是字符串的格式
  • split() :以空格为间隔,对该字符串进行分割,转成了列表类型,不过内容都是字符串
  • int() :利用int()函数将list列表里的内容转为整型
  • bytes() :此函数可以直接将内容转化为字节流的类型,这样就可以使用python的serial.write发送数据

法2:使用python的库struct,具有打包和解包的功能,代码如下

struct.pack(fmt,arg1,arg2,),在传入有限个参数(命令,地址,数据长度)进行打包是很好用的,包括对字节流的解析也会用到它关于它的使用建议好好看看,可以参考这个python struct详解

以上介绍了两种方法,优缺点如下,二者可以混合使用,以求到达最好效果

对字节流的解析

接收串口发来的数据时,一般时一个字节一个字节传来的,我们可以每读取一个字节就将其存入一个列表中,格式类似如下:

注意:列表里面都是bytes对象,为了将其解析,需要先转换为int型
data = int.frombytes(m[0] , ‘big’)
关于int.frombytes()函数的用法可以去查查,作用就是将一个bytes类型的数据转换为int类型

转换后的m如下:

因为struct.unpack()函数是针对字节流处理的,故需要将m由一个列表类型转换为字节流

就能用struct.unpack对字节流按照用户设定的格式进行解析,如下

Python 串口数据打包与解析相关推荐

  1. python串口数据绘图_使用Python串口实时显示数据并绘图的例子

    使用pyserial进行串口传输 一.安装pyserial以及基本用法 在cmd下输入命令pip install pyserial 注:升级pip后会出现 "'E:\Anaconda3\Sc ...

  2. python分析数据包_Python解析pcap数据包

    Post Views: 29,789 零.前言 历时数月,终于结束了考研初试,Blog也很长时间没有更新了,期间还是有些小伙伴来Blog看文章很是感动.以后一定会坚持更新,尽量给大家推送一些干货.这次 ...

  3. python串口数据分包_python TCP Socket的粘包和分包的处理详解

    概述 在进行TCP Socket开发时,都需要处理数据包粘包和分包的情况.本文详细讲解解决该问题的步骤.使用的语言是Python.实际上解决该问题很简单,在应用层下,定义一个协议:消息头部+消息长度+ ...

  4. python 串口数据读取

    环境:ubuntu18.04 python3.6 1. 绑定串口号与串口设备 背景:一台主机与多个串口模块连接,每次开机会使得设备的串口号发生变化,需要对串口号与串口设备进行绑定. (1)查看串口设备 ...

  5. python是怎样处理串口数据的_python是怎样处理串口数据的

    python 串口传输问题 首先用USB线连上串口设备,然后确认是哪个COM口,下面用COM3为例. import serial t=serial.Serial('COM3',115200) comm ...

  6. pythonos pathjson_Python Json数据文件操作原理解析

    引言 接口测试就是数据的测试,在测试之前,需要准备好测试数据,而测试数据可以用数据库.excel.txt和csv方式,当然还有一种方式,那就是使用json文件来储存测试数据.常用的方式就是这些. 设计 ...

  7. python 3下对stm32串口数据做解析

    1.最近有个想做一个传感器数据实时显示的上位机,常规的数据打印太频繁了,无法直观的看出数据的变化. python下的上位机实现起来简单一点,网上找了一些python界面Tkinter相关资料和pyth ...

  8. python串口实时读取数据画图_python串口绘图

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! (已完成)pythonapi操作tecplot做数据处理(已完成)用pyauto ...

  9. # Python 字符串数据(二进制编码数据)格式转换及解析

    Python 字符串数据(二进制编码数据)格式转换及解析 最近在linux上部署python,希望可以用python来调用串口,同时可以实现数据的格式转换. 在python这个做格式化转换不熟悉,花了 ...

最新文章

  1. 你所知道的都是错的!产品经理的十大认知错误
  2. Linux安装Redis完整步骤
  3. 详细易懂的二叉树遍历(先中后)
  4. ThinkPHP - 6 - 学习笔记(2015.5.4)
  5. PM2.5环境检测系统的设计与分析
  6. 下三角矩阵的逆矩阵_上三角或下三角矩阵的逆矩阵能否简便方法求出??只有主副对角线不为0的矩阵能否直接写出逆矩阵。...
  7. hadoop连接远程mysql_MySQL设置远程连接
  8. OPPO技术开放日第二期启动,聚焦碎片化场景下的流量探索
  9. mongodb pv uv ip 统计
  10. 卷积神经网络第四周作业1 - Face Recognition for the Happy House - v1
  11. javascript怎么定义类数组对象
  12. 计算机搜索不了硬盘文件资料,解决WINDOWS痛点,本地文件搜索从未如此简单
  13. 乘法和绝对值的C语言,关于C语言的函数调用与绝对值用法!
  14. 比热容相关的热量计算机应用,13章三节比热容.doc
  15. #业余学习 java基础
  16. windows下php连接Oracle配置
  17. 各种品牌类型的主板 电脑开机启动选项快捷键
  18. java订餐系统_Java——吃货联盟订餐系统
  19. 安卓原生应用开发!一起刷完了这份1307页的安卓面试宝典吧,值得收藏!
  20. 使用spring data JPA,or跟and的合并使用语句拼凑or跟and的合并使用需要密切注意

热门文章

  1. Qt入门教程【对话框】QInputDialog输入对话框
  2. SolidWorks工程图中材料明细表的一些操作
  3. 嵌入式编程基本概念和常识
  4. 解决Cfree [Error] g++.exe: 5\mingw\lib\: No such file or directory
  5. 抓取服务器作业文档不存在,易飞ERP客户问题集.doc
  6. python网页爬虫菜鸟教程_Python 爬取菜鸟教程(www.runoob.com)内容。并保在本地(html格式/pdf格式)...
  7. 后处理之TCL语言教程
  8. 高德地图 android key,Android实现高德地图key值申请和地图显示
  9. C++代码静态分析与优化(1)_cppcheck
  10. 得到maya相机分辨率