Python基于Tkinter编写crc校验工具


Posted in Python onMay 06, 2020

本篇文章,完全是用来记录代码用的,目的是使用Python,基于Tkinter编写crc校验工具。

# -*- coding: utf-8 -*-
import Tkinter
import tkFileDialog
WIDTH = 16
TOPBIT = (1 << (WIDTH - 1))
crcTable = {}
class FindLocation(object):
  def __init__(self):
    #创建主窗口,用于容纳其它组件
    self.root = Tkinter.Tk()
    #给主窗口设置标题内容
    self.root.title("获取bin文件的crc校验码")
    #创建一个输入框,并设置尺寸
    self.default_value = Tkinter.StringVar()
    self.default_value.set('请输入bin文件全路径')
    self.ip_input = Tkinter.Entry(self.root,width=30,textvariable = self.default_value)
    #创建一个回显列表
    self.display_info = Tkinter.Listbox(self.root,width=50)
    #创建一个搜索文件的按钮
    self.getPath_button = Tkinter.Button(self.root,command = self.getPath,text = "获取文件")
    #创建一个查询结果的按钮
    self.result_button = Tkinter.Button(self.root,command = self.crcFast,text = "获取校验码")
  def gui_arrang(self):
    self.ip_input.pack()
    self.display_info.pack()
    self.getPath_button.pack()
    self.result_button.pack()
  def getPath(self):
    self.fname = tkFileDialog.askopenfilename()
    self.default_value.set(self.fname)
  def crcInit(self):
    SHIFT = WIDTH - 8
    for step in range(0,256):
      remainder = step << SHIFT
      for bit in range(8,0,-1):
        if remainder & TOPBIT:
          remainder = ((remainder << 1) & 0xFFFF) ^0x1021
        else:
          remainder = remainder <<1
      crcTable[step]=remainder
      #print("%x"%remainder)
  def crc16(self,cCRC,szData,rLen):
    for len in range(rLen):
      data = (cCRC >> 8) ^ ord(szData[len])
      cCRC = crcTable[data] ^ (cCRC << 8) & 0xFFFF
    return cCRC
  def crcFast(self):
    filePath = self.ip_input.get()
    tLen = 0
    rLen = 0
    szData = 0
    cCRC = 0
    self.crcInit()
    fp = open(filePath,'rb')
    fp.seek(0,2)
    iFileLen = fp.tell()
    fp.seek(0,0)
    while True:
      if (iFileLen - tLen) < 8192:
        rLen = iFileLen - tLen
      else:
        rLen = 8192
      szData = fp.read(rLen)
      cCRC = self.crc16(cCRC,szData,rLen)
      tLen += rLen
      if tLen >= iFileLen:
        break
    print "crc is %x\n" % cCRC
    fp.close()
    self.display_info.insert(0,"%x"%cCRC)
    self.display_info.insert(0,"this bin crc is :")  
def main():
  #初始化对象
  FL = FindLocation()
  #进行布局
  FL.gui_arrang()
  #主程序执行
  Tkinter.mainloop()
if __name__ == '__main__':
  main()

出差必备

买火车票、高铁票、机票,订酒店都打9折的出行工具TRIP,点击注册

到此这篇关于Python基于Tkinter编写crc校验工具的文章就介绍到这了,更多相关Python实现crc校验内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
给你选择Python语言实现机器学习算法的三大理由
Nov 15 Python
Python基础教程之利用期物处理并发
Mar 29 Python
pandas数据框,统计某列数据对应的个数方法
Apr 11 Python
Python实现App自动签到领取积分功能
Sep 29 Python
Face++ API实现手势识别系统设计
Nov 21 Python
在python中利用GDAL对tif文件进行读写的方法
Nov 29 Python
Python lambda表达式用法实例分析
Dec 25 Python
Python实现京东秒杀功能代码
May 16 Python
使用Python的networkx绘制精美网络图教程
Nov 21 Python
Python正则表达式如何匹配中文
May 27 Python
Keras在mnist上的CNN实践,并且自定义loss函数曲线图操作
May 25 Python
Python制作春联的示例代码
Jan 22 Python
使用Python实现批量ping操作方法
May 06 #Python
Python super()函数使用及多重继承
May 06 #Python
python中shell执行知识点
May 06 #Python
Python 通过监听端口实现唯一脚本运行方式
May 05 #Python
python2.7使用scapy发送syn实例
May 05 #Python
python 使用raw socket进行TCP SYN扫描实例
May 05 #Python
Python之变量类型和if判断方式
May 05 #Python
You might like
提问的智慧(2)
2006/10/09 PHP
PHP的几个常用数字判断函数代码
2012/04/24 PHP
PHP加密函数 Javascript/Js 解密函数
2013/09/23 PHP
javascript document.execCommand() 常用解析
2009/12/14 Javascript
JavaScript之编码规范 推荐
2012/05/23 Javascript
给html超链接设置事件不使用href来完成跳
2014/04/20 Javascript
angularjs的一些优化小技巧
2014/12/06 Javascript
JavaScript常用脚本汇总(三)
2015/03/04 Javascript
基于jQuery插件实现环形图标菜单旋转切换特效
2015/05/15 Javascript
基于Jquery代码实现手风琴菜单
2015/11/19 Javascript
Laydate时间组件在火狐浏览器下有多时间输入框时只能给第一个输入框赋值的解决方法
2016/08/18 Javascript
JavaScript SHA512加密算法详细代码
2016/10/06 Javascript
vue上传图片组件编写代码
2017/07/26 Javascript
webpack 1.x升级过程中的踩坑总结大全
2017/08/09 Javascript
详解react-refetch的使用小例子
2019/02/15 Javascript
记录微信小程序 height: calc(xx - xx);无效问题
2019/12/30 Javascript
解决echarts echarts数据动态更新和dataZoom被重置问题
2020/07/20 Javascript
[02:32]DOTA2完美大师赛场馆静安体育中心观赛全攻略
2017/11/08 DOTA
[49:35]LGD vs OG 2018国际邀请赛淘汰赛BO3 第二场 8.25
2018/08/29 DOTA
[01:36]极致酷炫!TI9典藏宝瓶+撼地者至宝展示
2019/06/11 DOTA
Python脚本实时处理log文件的方法
2016/11/21 Python
Python下调用Linux的Shell命令的方法
2018/06/12 Python
python使用ddt过程中遇到的问题及解决方案【推荐】
2018/10/29 Python
keras-siamese用自己的数据集实现详解
2020/06/10 Python
详解Django中异步任务之django-celery
2020/11/05 Python
HTML5 input元素类型:email及url介绍
2013/08/13 HTML / CSS
英国最受欢迎的平价女士时装零售商:Roman Originals
2019/11/02 全球购物
工商管理专业学生的自我评价
2013/10/01 职场文书
毕业生自荐信的主要内容
2013/10/29 职场文书
会计专业求职信范文
2014/03/16 职场文书
社团活动总结
2014/04/28 职场文书
学雷锋标语
2014/06/25 职场文书
个人师德师风自我剖析材料
2014/09/29 职场文书
因家庭原因离职的辞职信范文
2015/05/12 职场文书
建党伟业观后感
2015/06/01 职场文书
入党转正申请自我鉴定
2019/06/25 职场文书