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. java mac postgresql_Mac上安装配置和简单使用PostgreSQL(仍然很不懂)
  2. 自制一个 elasticsearch-spring-boot-starter
  3. 智商负250,我可能玩了一个假的大冒险
  4. 框架中的左侧菜单关联右侧页面是如何实现的_前端基础学习:Vue2.0实现移动端外卖平台项目,参考旧版饿了么!...
  5. 玩点创意编程,发现另一个世界
  6. Python习题10
  7. Windows如何上传代码到Github
  8. 在C#中使用Json.Net进行序列化和反序列化及定制化
  9. 如何利用navicat可视化软件添加与新建mysql数据库
  10. oracle catalog命令,使用Catalog命令注册RMAN备份集
  11. 软考高级 真题 2009年下半年 信息系统项目管理师 论文
  12. 电子元器件的识别与换算
  13. codeforces 56E 多米诺骨牌效应
  14. 科技兴国园区兴城——2019国际高科技产业园区博览会在深盛装开幕
  15. 一座城市靠税收能年入多少钱?
  16. Ubuntu16.04安装NCCL
  17. 51单片机STC 89C52RC进阶 – 自制8x8点阵、点亮单颗LED、显示点阵汉字
  18. pandas 选择满足特定条件的行
  19. Invalid prop: type check failed for prop “total“. Expected Number with value 0, got String with valu
  20. Mellanox--MCX4121A-ACAT网卡驱动安装

热门文章

  1. JCL 和 SLF4J
  2. 2020数学建模美赛C题完整解答(结合代码)
  3. 【TS】546- 掌握 TS 这些工具类型,让你开发事半功倍
  4. vi笔记 - 使用vi加xxd完成对二进制文件的内容修改
  5. Windows(Win7)下用Xming实现X11图形界面功能
  6. 企业微信接入自研小程序流程
  7. IT公司是动物园——程序猿、攻城狮、射鸡师、产品锦鲤、西衣鸥!
  8. IMX6Q调试之 ----- DDR3 32位移植
  9. UPnP 体系架构和基本原理 —— UPnP 协议栈
  10. 数码宝贝Butter-fly(罗马音+中文谐音)