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中的多重继承实例讲解
Sep 28 Python
python实现批量获取指定文件夹下的所有文件的厂商信息
Sep 28 Python
Python实现的异步代理爬虫及代理池
Mar 17 Python
python opencv实现任意角度的透视变换实例代码
Jan 12 Python
Python回文字符串及回文数字判定功能示例
Mar 20 Python
pip命令无法使用的解决方法
Jun 12 Python
Python基于分析Ajax请求实现抓取今日头条街拍图集功能示例
Jul 19 Python
Python数据可视化库seaborn的使用总结
Jan 15 Python
Python设计模式之装饰模式实例详解
Jan 21 Python
使用python快速实现不同机器间文件夹共享方式
Dec 22 Python
django rest framework 自定义返回方式
Jul 12 Python
python实现暗通道去雾算法的示例
Sep 27 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
开发大型PHP项目的方法
2006/10/09 PHP
php利用scws实现mysql全文搜索功能的方法
2014/12/25 PHP
PHP接收App端发送文件流的方法
2016/09/23 PHP
关于javascript中this关键字(翻译+自我理解)
2010/10/20 Javascript
javascript 45种缓动效果 非常酷
2011/06/28 Javascript
javaScript函数中执行C#代码中的函数方法总结
2013/08/07 Javascript
详解javascript的变量与标识符
2016/01/04 Javascript
js实现网页图片延时加载 提升网页打开速度
2016/01/26 Javascript
基于javascript实现tab选项卡切换特效调试笔记
2016/03/30 Javascript
JavaScript代码实现左右上下自动晃动自动移动
2016/04/08 Javascript
使用开源工具制作网页验证码的方法
2016/10/17 Javascript
js实现各种复制到剪贴板的方法(分享)
2016/10/27 Javascript
详解vue2路由vue-router配置(懒加载)
2017/04/08 Javascript
详解使用vue脚手架工具搭建vue-webpack项目
2017/05/10 Javascript
详解js中Array的方法及技巧
2018/09/12 Javascript
使用vue脚手架(vue-cli)搭建一个项目详解
2019/05/09 Javascript
layui加载表格,绑定新增,编辑删除,查看按钮事件的例子
2019/09/06 Javascript
基于Element的组件改造的树形选择器(树形下拉框)
2020/02/27 Javascript
微信h5静默和非静默授权获取用户openId的方法和步骤
2020/06/08 Javascript
[48:32]2018DOTA2亚洲邀请赛 3.31 小组赛 A组 LGD vs VG
2018/04/01 DOTA
Python中利用函数装饰器实现备忘功能
2015/03/30 Python
python通过邮件服务器端口发送邮件的方法
2015/04/30 Python
python套接字流重定向实例汇总
2016/03/03 Python
Python运维之获取系统CPU信息的实现方法
2018/06/11 Python
Python面向对象之静态属性、类方法与静态方法分析
2018/08/24 Python
全面了解django的缓存机制及使用方法
2019/07/22 Python
Django实现CAS+OAuth2的方法示例
2019/10/30 Python
用python求一重积分和二重积分的例子
2019/12/06 Python
使用CSS3来实现滚动视差效果的教程
2015/08/24 HTML / CSS
浅析rem和em和px vh vw和% 移动端长度单位
2016/04/28 HTML / CSS
Book Depository澳大利亚:世界领先的专业在线书店之一
2018/12/27 全球购物
澳大利亚游乐场设备品牌:Lifespan Kids
2019/05/24 全球购物
网络教育毕业生自我鉴定
2013/10/10 职场文书
优秀管理者事迹材料
2014/05/22 职场文书
学校教研活动总结
2014/07/02 职场文书
意外死亡赔偿协议书
2014/10/14 职场文书