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获取标准北京时间的方法
Mar 24 Python
python使用calendar输出指定年份全年日历的方法
Apr 04 Python
简单谈谈python中的Queue与多进程
Aug 25 Python
Pandas_cum累积计算和rolling滚动计算的用法详解
Jul 04 Python
Python Web程序搭建简单的Web服务器
Jul 31 Python
pandas DataFrame的修改方法(值、列、索引)
Aug 02 Python
python爬虫模块URL管理器模块用法解析
Feb 03 Python
Python3实现监控新型冠状病毒肺炎疫情的示例代码
Feb 13 Python
python实现对变位词的判断方法
Apr 05 Python
keras 两种训练模型方式详解fit和fit_generator(节省内存)
Jul 03 Python
用python爬虫批量下载pdf的实现
Dec 01 Python
python 实现两个变量值进行交换的n种操作
Jun 02 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 self,$this,const,static,-&amp;gt;的使用
2009/10/22 PHP
PHP gbk环境下json_dencode传送来的汉字
2012/11/13 PHP
两级联动select刷新后其值保持不变的实现方法
2014/01/27 PHP
PHP中使用Memache作为进程锁的操作类分享
2015/03/30 PHP
Thinkphp5框架异常处理操作实例分析
2020/06/03 PHP
jQuery实现表单input中提示文字value随鼠标焦点移进移出而显示或隐藏的代码
2010/03/21 Javascript
jquery 单击li防止重复加载的实现代码
2010/12/24 Javascript
基于jQuery的简单的列表导航菜单
2011/03/02 Javascript
javascript的创建多行字符串的7种方法
2014/04/29 Javascript
javascript实现playfair和hill密码算法
2014/12/07 Javascript
javascript实现炫酷的拖动分页
2015/05/11 Javascript
跟我学习javascript的arguments对象
2015/11/16 Javascript
jQuery 1.9.1源码分析系列(十五)动画处理之缓动动画核心Tween
2015/12/03 Javascript
Jsonp 关键字详解及json和jsonp的区别,ajax和jsonp的区别
2015/12/30 Javascript
Windows 系统下设置Nodejs NPM全局路径
2016/04/26 NodeJs
JS中的数组方法笔记整理
2016/07/26 Javascript
Bootstrap图片轮播效果详解
2017/10/17 Javascript
webstorm+vue初始化项目的方法
2018/10/18 Javascript
vue中根据时间戳判断对应的时间(今天 昨天 前天)
2019/12/20 Javascript
Javascript新手入门之字符串拼接与变量的应用
2020/12/03 Javascript
[02:39]DOTA2英雄基础教程 极限穿梭编织者
2013/12/05 DOTA
[16:27]DOTA2 HEROS教学视频教你分分钟做大人-艾欧
2014/06/11 DOTA
python字典多条件排序方法实例
2014/06/30 Python
分享Pycharm中一些不为人知的技巧
2018/04/03 Python
python动态进度条的实现代码
2019/07/03 Python
Python3 字典dictionary入门基础附实例
2020/02/10 Python
Python递归求出列表(包括列表中的子列表)的最大值实例
2020/02/27 Python
python使用建议与技巧分享(一)
2020/08/17 Python
jupyter notebook远程访问不了的问题解决方法
2021/01/11 Python
股份合作协议书范本
2014/04/14 职场文书
好听的队名和口号
2014/06/09 职场文书
机关作风建设心得体会
2014/10/22 职场文书
区域经理岗位职责
2015/02/02 职场文书
升学宴家长答谢词
2015/09/29 职场文书
什么是求职信?求职信应包含哪些内容?
2019/08/14 职场文书
SpringBoot整合minio快速入门教程(代码示例)
2022/04/03 Java/Android