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调用SQLPlus来操作和解析Oracle数据库的方法
Apr 09 Python
python并发编程之多进程、多线程、异步和协程详解
Oct 28 Python
Python学生信息管理系统修改版
Mar 13 Python
Python中list查询及所需时间计算操作示例
Jun 21 Python
使用python将多个excel文件合并到同一个文件的方法
Jul 09 Python
解决python 3 urllib 没有 urlencode 属性的问题
Aug 22 Python
python队列原理及实现方法示例
Nov 27 Python
解决Python3下map函数的显示问题
Dec 04 Python
使用Tkinter制作信息提示框
Feb 18 Python
Python定义一个Actor任务
Jul 29 Python
pytorch下的unsqueeze和squeeze的用法说明
Feb 06 Python
发工资啦!教你用Python实现邮箱自动群发工资条
May 10 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
德生H-501的评价与改造
2021/03/02 无线电
PHP使用imagick读取PDF生成png缩略图的两种方法
2014/03/20 PHP
php中eval函数的危害与正确禁用方法
2014/06/30 PHP
PHP PDOStatement对象bindpram()、bindvalue()和bindcolumn之间的区别
2014/11/20 PHP
php实现将字符串按照指定距离进行分割的方法
2015/03/14 PHP
php调用KyotoTycoon简单实例
2015/04/02 PHP
jquery+thinkphp实现跨域抓取数据的方法
2016/10/15 PHP
ThinkPHP5.0框架结合Swoole开发实现WebSocket在线聊天案例详解
2019/04/02 PHP
prototype Element学习笔记(篇一)
2008/10/26 Javascript
jQuery学习笔记(4)--Jquery中获取table中某列值的具体思路
2013/04/10 Javascript
JavaScript运行机制之事件循环(Event Loop)详解
2014/10/10 Javascript
jQuery Mobile 和 Kendo UI 的比较
2016/05/05 Javascript
Three.js学习之Lamber材质和Phong材质
2016/08/04 Javascript
JavaScript易错知识点整理
2016/12/05 Javascript
react-native使用react-navigation进行页面跳转导航的示例
2017/09/07 Javascript
微信小程序 动画的简单实例
2017/10/12 Javascript
QQ跳转支付宝并自动领红包脚本(最新)
2018/06/22 Javascript
Vue.js如何使用Socket.IO的示例代码
2019/09/05 Javascript
js 计数排序的实现示例(升级版)
2020/01/12 Javascript
JavaScript设计模式--桥梁模式引入操作实例分析
2020/05/23 Javascript
js实现简单扫雷
2020/11/27 Javascript
linux环境下安装pyramid和新建项目的步骤
2013/11/27 Python
Python中的魔法方法深入理解
2014/07/09 Python
Python中使用urllib2模块编写爬虫的简单上手示例
2016/01/20 Python
python中的迭代和可迭代对象代码示例
2017/12/27 Python
python 限制函数调用次数的实例讲解
2018/04/21 Python
python在回调函数中获取返回值的方法
2019/02/22 Python
Python大数据之网络爬虫的post请求、get请求区别实例分析
2019/11/16 Python
python实现秒杀商品的微信自动提醒功能(代码详解)
2020/04/27 Python
HTML5 b和i标记将被赋予真正的语义
2009/07/16 HTML / CSS
Gtech官方网站:地毯清洁器、吸尘器及园艺设备
2018/05/23 全球购物
东芝官网商城:还原日式美学,打造美好生活
2018/12/27 全球购物
如何用SQL语句进行模糊查找
2015/09/25 面试题
JAVA中运算符的分类及举例
2015/09/12 面试题
售后专员岗位职责
2013/12/08 职场文书
财务总监岗位职责
2014/03/07 职场文书