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 检查文件mime类型的方法
Dec 08 Python
详解opencv Python特征检测及K-最近邻匹配
Jan 21 Python
python学生管理系统
Jan 30 Python
Python使用POP3和SMTP协议收发邮件的示例代码
Apr 16 Python
django将网络中的图片,保存成model中的ImageField的实例
Aug 07 Python
python3 实现的对象与json相互转换操作示例
Aug 17 Python
Python selenium的基本使用方法分析
Dec 21 Python
tensorflow安装成功import tensorflow 出现问题
Apr 16 Python
python 利用toapi库自动生成api
Oct 19 Python
Python 内存管理机制全面分析
Jan 16 Python
django上传文件的三种方式
Apr 29 Python
分享3个非常实用的 Python 模块
Mar 03 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
codeigniter使用技巧批量插入数据实例方法分享
2013/12/31 PHP
thinkphp视图模型查询提示ERR: 1146:Table 'db.pr_order_view' doesn't exist的解决方法
2014/10/30 PHP
Laravel使用Caching缓存数据减轻数据库查询压力的方法
2016/03/15 PHP
PHP更安全的密码加密机制Bcrypt详解
2017/06/18 PHP
利用php操作memcache缓存的基础方法示例
2017/08/02 PHP
ie 处理 gif动画 的onload 事件的一个 bug
2007/04/12 Javascript
JavaScript中的new的使用方法与注意事项
2007/05/16 Javascript
extjs fckeditor集成代码
2009/05/10 Javascript
关于js中alert弹出窗口文本换行问题简单详细说明
2012/12/11 Javascript
转换字符串为json对象的方法详解
2013/11/29 Javascript
node.js中的fs.createWriteStream方法使用说明
2014/12/17 Javascript
js实现简单的可切换选项卡效果
2015/04/10 Javascript
JS+CSS实现仿msn风格选项卡效果代码
2015/10/22 Javascript
在 Express 中使用模板引擎
2015/12/10 Javascript
js实现图片无缝滚动
2015/12/23 Javascript
超级简易的JS计算器实例讲解(实现加减乘除)
2017/08/08 Javascript
纯JS实现可用于页码更换的飞页特效示例
2018/05/21 Javascript
玩转Koa之koa-router原理解析
2018/12/29 Javascript
PWA介绍及快速上手搭建一个PWA应用的方法
2019/01/27 Javascript
使用Three.js实现太阳系八大行星的自转公转示例代码
2019/04/09 Javascript
JS访问对象两种方式区别解析
2020/08/29 Javascript
python获取网页状态码示例
2014/03/30 Python
Python中使用摄像头实现简单的延时摄影技术
2015/03/27 Python
Python 在字符串中加入变量的实例讲解
2018/05/02 Python
彻彻底底地理解Python中的编码问题
2018/10/15 Python
Python 支付整合开发包的实现
2019/01/23 Python
用python实现刷点击率的示例代码
2019/02/21 Python
pyqt5 comboBox获得下标、文本和事件选中函数的方法
2019/06/14 Python
python解析多层json操作示例
2019/12/30 Python
PyTorch中clone()、detach()及相关扩展详解
2020/12/09 Python
python安装及变量名介绍详解
2020/12/12 Python
大学生优秀团员事迹材料
2014/01/30 职场文书
本科生自荐信
2014/06/18 职场文书
个人查摆剖析材料
2014/10/16 职场文书
小学四年级学生评语
2014/12/26 职场文书
MySQL Shell import_table数据导入的实现
2021/08/07 MySQL