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异常处理中的Finally else的功能
Dec 29 Python
Python开发虚拟环境使用virtualenvwrapper的搭建步骤教程图解
Sep 19 Python
在Django admin中编辑ManyToManyField的实现方法
Aug 09 Python
关于阿里云oss获取sts凭证 app直传 python的实例
Aug 20 Python
节日快乐! Python画一棵圣诞树送给你
Dec 24 Python
完美解决keras 读取多个hdf5文件进行训练的问题
Jul 01 Python
在CentOS7下安装Python3教程解析
Jul 09 Python
Python用dilb提取照片上人脸的示例
Oct 26 Python
Python 使用office365邮箱的示例
Oct 29 Python
python 下载m3u8视频的示例代码
Nov 11 Python
python爬虫调度器用法及实例代码
Nov 30 Python
python代码实现备忘录案例讲解
Jul 26 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(一)
2012/03/21 PHP
关于JSON以及JSON在PHP中的应用技巧
2013/11/27 PHP
Yii2框架视图(View)操作及Layout的使用方法分析
2019/05/27 PHP
laravel框架 api自定义全局异常处理方法
2019/10/11 PHP
js 省地市级联选择
2010/02/07 Javascript
jQuery+css实现图片滚动效果(附源码)
2013/03/18 Javascript
Javascript代码在页面加载时的执行顺序介绍
2013/05/03 Javascript
js判断客户端是iOS还是Android等移动终端的方法
2013/12/11 Javascript
jQuery学习笔记之toArray()
2014/06/09 Javascript
jquery实现动态操作select选中
2015/02/11 Javascript
Redis基本知识、安装、部署、配置笔记
2015/03/05 Javascript
JS+CSS实现的拖动分页效果实例
2015/05/11 Javascript
javascript执行环境及作用域详解
2016/05/05 Javascript
Angular2安装angular-cli
2017/05/21 Javascript
解决easyui日期时间框ie的兼容的问题
2018/03/01 Javascript
自己动手封装一个React Native多级联动
2018/09/19 Javascript
通过实例解析js简易模块加载器
2019/06/17 Javascript
Node.js系列之安装配置与基本使用(1)
2019/08/30 Javascript
layui上传图片到服务器的非项目目录下的方法
2019/09/26 Javascript
谈谈JavaScript中的函数
2020/09/08 Javascript
python str与repr的区别
2013/03/23 Python
python读取word文档的方法
2015/05/09 Python
Python2和Python3中urllib库中urlencode的使用注意事项
2018/11/26 Python
简单了解Django应用app及分布式路由
2019/07/24 Python
Python datetime模块使用方法小结
2020/06/18 Python
Django model class Meta原理解析
2020/11/14 Python
如何利用cmp命令比较文件
2016/04/11 面试题
毕业研究生的自我鉴定
2013/11/30 职场文书
厂长助理岗位职责
2013/12/27 职场文书
旷课检讨书范文
2014/10/30 职场文书
趣味运动会广播稿
2015/08/19 职场文书
《迟到》教学反思
2016/02/24 职场文书
浅谈JS的原型和原型链
2021/06/04 Javascript
Js类的构建与继承案例详解
2021/09/15 Javascript
MySQL空间数据存储及函数
2021/09/25 MySQL
业余无线电通联Q语
2022/02/18 无线电