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 相关文章推荐
Pyramid将models.py文件的内容分布到多个文件的方法
Nov 27 Python
Python使用sftp实现上传和下载功能(实例代码)
Mar 14 Python
Django实现组合搜索的方法示例
Jan 23 Python
Python cookbook(数据结构与算法)将序列分解为单独变量的方法
Feb 13 Python
python奇偶行分开存储实现代码
Mar 19 Python
使用numba对Python运算加速的方法
Oct 15 Python
python批量爬取下载抖音视频
Jun 17 Python
解决python执行较大excel文件openpyxl慢问题
May 15 Python
python如何写try语句
Jul 14 Python
15款Python编辑器的优缺点,别再问我“选什么编辑器”啦
Oct 19 Python
Python之Sklearn使用入门教程
Feb 19 Python
自动在Windows中运行Python脚本并定时触发功能实现
Sep 04 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中使用break跳出多重循环代码实例
2015/01/21 PHP
php析构函数的简单使用说明
2015/08/24 PHP
浅析PHP中的闭包和匿名函数
2017/12/25 PHP
PHP实现的多维数组去重操作示例
2018/07/21 PHP
JavaScript游戏之是男人就下100层代码打包
2010/11/08 Javascript
js 获取、清空input type=&quot;file&quot;的值(示例代码)
2013/12/24 Javascript
使用JavaScript 实现的人脸检测
2015/03/24 Javascript
jquery对复选框(checkbox)的操作汇总
2016/01/13 Javascript
仅30行代码实现Javascript中的MVC
2016/02/15 Javascript
用原生js统计文本行数的简单示例
2016/08/19 Javascript
AngularJS基于provider实现全局变量的读取和赋值方法
2017/06/28 Javascript
小程序tab页无法传递参数的方法
2018/08/03 Javascript
微信小程序内拖动图片实现移动、放大、旋转的方法
2018/09/04 Javascript
Webstorm2016使用技巧(SVN插件使用)
2018/10/29 Javascript
Javascript读写cookie的实例源码
2019/03/16 Javascript
如何使用webpack打包一个库library的方法步骤
2019/12/18 Javascript
jQuery实现推拉门效果
2020/10/19 jQuery
html+vue.js 实现漂亮分页功能可兼容IE
2020/11/07 Javascript
Python实现优先级队列结构的方法详解
2016/06/02 Python
详解python中init方法和随机数方法
2019/03/13 Python
Python函数中参数是传递值还是引用详解
2019/07/02 Python
python PyAutoGUI 模拟鼠标键盘操作和截屏功能
2019/08/04 Python
Python笔记之facade模式
2019/11/20 Python
TensorFlow2.X使用图片制作简单的数据集训练模型
2020/04/08 Python
python如何导入依赖包
2020/07/13 Python
python 基于卡方值分箱算法的实现示例
2020/07/17 Python
html5的websockets全双工通信详解学习示例
2014/02/26 HTML / CSS
菲律宾优惠券网站:MetroDeal
2019/04/12 全球购物
公司新员工的演讲稿注意事项
2014/01/01 职场文书
学生会主席竞聘书
2014/03/31 职场文书
战略合作协议书范本
2014/04/18 职场文书
庆六一活动总结
2014/08/29 职场文书
学党史心得体会
2014/09/05 职场文书
2016年公司中秋节致辞
2015/11/26 职场文书
如何利用js在两个html窗口间通信
2021/04/27 Javascript
MySQL 逻辑备份与恢复测试的相关总结
2021/05/14 MySQL