1. 项目说明

在进行远程升级单片机程序或者什么别的内容的时候,我们往往需要下载远程的bin文件,并将其内容读出,以切片的方式进行程序的更新。本项目即是使用python编写的一个读取bin文件内容,并将其进行切片组成相应的协议包。

2. 核心代码

  • 读取bin文件
import osdef print_hex(bytes):l = [hex(int(i)).replace('0x', '').zfill(2) for i in bytes]return " ".join(l)with open("./01.bin", "rb") as file:l1 = []for line in file:l1.extend(print_hex(line).split(' '))frame = len(l1) // 128for i in range(frame):print(l1[i*128:128+i*128])print(l1[frame*128: len(l1)])
  • 封包成自定义的通信协议
'''
生成通信协议
'''
def create():content = (t_origin.get("0.0", "end")).split("\n")content.pop()  # 列表最后一个元素是空删除它res = content[0].split(" ")  # 不加任何参数crc = 0for re in res:crc += int(re, 16)crc = str(hex(crc//(len(res)+3))).replace('0x', '')test = ['ff', 'ff', '13', '02', str(hex(len(res)+2)).replace('0x', '')]tmp = [crc, 'ee', 'ee']test.extend(res)test.extend(tmp)t_dest.delete('1.0', 'end')t_dest.insert('0.0', test)

3. 最终版程序

为了方便演示效果,用python写了个桌面版程序,源码已经上传到github上:https://github.com/ceoifung/Bin2Protocol

python读取bin文件,转成16进制通信协议相关推荐

  1. MFC读取bin文件并以16进制显示出来

    **MFC读取bin文件并以16进制显示出来** 最近由于项目需要.需要对目标板的bin文件进行修改后使用.所以就想自己写一个上位机小工具来进行操作,结果在做的过程中遇到了一些意想之外问题(本人MFC ...

  2. python定义16进制数组_python 文件转成16进制数组的实例

    如下所示: #! /usr/bin/python2 # coding=utf-8 import numpy import binascii if __name__=='__main__': #my_m ...

  3. Linux中如何将文件dump成16进制值

    http://www.cnblogs.com/bcxx_qin/archive/2009/05/06/1450596.html 在linux中有多种方式可以将文件dump成16进制显示,也可以将16进 ...

  4. php如何将图片gif,jpg或mysql longblob或blob字段值转换成16进制字符串

    php如何将图片gif,jpg或mysql longblob或blob字段值转换成16进制字符串!经过查找居然如此简单,一个函数就搞定了. 数据库脚本: -- -------------------- ...

  5. php如何将图片gif,jpg或mysql longblob或blob字段值转换成16进制字符串!

    php如何将图片gif,jpg或mysql longblob或blob字段值转换成16进制字符串!经过查找居然如此简单,一个函数就搞定了. 数据库脚本: -- -------------------- ...

  6. php如何将图片gif,jpg或mysql longblob或blob字段值转换成16进制字符串!编辑

    php如何将图片gif,jpg或mysql longblob或blob字段值转换成16进制字符串!经过查找居然如此简单,一个函数就搞定了. 数据库脚本: -- -------------------- ...

  7. python 读取bin文件

    python读取bin文件并下发串口 # coding:utf-8import time, serialfrom struct import *import binascii file = open( ...

  8. 用Matlab把 .txt文件中的16进制数据转换成2进制数据

    问题描述 使用Matlab将.txt文本文件里面存放的16进制数据转换成2进制数据,放入一个新的.txt文件中.直接附代码解释,第一次发文章,仅为了练习使用和记录. clear; clc; fid = ...

  9. python把浮点数转换成16进制_delphi 浮点数float转换成十六进制字符串的方法(FloatToHex)...

    重新书写了float型转为十六进制的delphi程序 Function FloatToHex(Value: single): string; var l, i: integer; HexText,te ...

最新文章

  1. linux shell中文显示
  2. 远程过程调用(Remote Procedure Call,RPC)
  3. php 操作 mysql 数据库常用方法集合
  4. oracle orapath,SQLNET.ORA中的NAMES.DIRECTORY_PATH设置
  5. nuxt asyncData extendRoutes nuxtServerInit
  6. axios请求中跨域及post请求问题解决方案
  7. Vuex的API文档
  8. Java微信如何自动添加好友,微信自动加好友 模拟位置
  9. Python爬虫——爬去必应壁纸(简化版)
  10. matlab中基于传递函数或者状态方程的幅频特性分析
  11. 【deepin】安装与设置win10独立双系统 - 战神Z7-SL7S3安装deepin15.11,并双屏显示
  12. 机器人学——1.2-三维空间位姿描述
  13. 这些实用的手机小技巧分享给你
  14. 研究生毕业论文如何选题
  15. STM32CubeMX(stm32F030C8T6) 之RTC闹钟唤醒停机模式-STM32开发实战 (2)
  16. 搜索引擎排名都选乐云seo_百度官网排名-搜索引擎算法优化
  17. Piezo Mac 优秀的录音软件
  18. Sql server mssqlserver 服务无法启动
  19. Mac入门--通过homebrew下载过慢问题
  20. java里怎么判断时间重合_java 时间段重合时间差

热门文章

  1. FileNotFoundError: [WinError 2] 系统找不到指定的文件
  2. 将系统从机械盘重刷到固态盘“
  3. Http chunk介绍
  4. UrlRewriter.NET 与 UrlRewrittingNet.UrlRewriter比较
  5. 评估通用社区测试计划的性能并预测结果
  6. 产品说明书应该如何制作?
  7. git版本回退及代码合并
  8. 网易域名邮箱支持POP3/SMTP服务
  9. 【踩坑】iOS 状态栏没显示问题
  10. shell命令之cd切换目录