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多线程抓取天涯帖子内容示例
Apr 03 Python
Python编写生成验证码的脚本的教程
May 04 Python
Python中用psycopg2模块操作PostgreSQL方法
Nov 28 Python
python实现对excel进行数据剔除操作实例
Dec 07 Python
Python快速查找list中相同部分的方法
Jun 27 Python
python组合无重复三位数的实例
Nov 13 Python
python学生管理系统开发
Jan 30 Python
python 设置xlabel,ylabel 坐标轴字体大小,字体类型
Jul 23 Python
Django 静态文件配置过程详解
Jul 23 Python
python实现自动打卡的示例代码
Oct 10 Python
python 列表推导和生成器表达式的使用
Feb 01 Python
Python实现拼音转换
Jun 07 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使用CURL获取302跳转后的地址实例
2014/05/04 PHP
深入解析PHP中SESSION反序列化机制
2017/03/01 PHP
PHP命名空间简单用法示例
2018/12/28 PHP
PHP yield关键字功能与用法分析
2019/01/03 PHP
js中arguments的用法(实例讲解)
2013/11/30 Javascript
一个JavaScript用逗号分割字符串实例
2014/09/22 Javascript
node.js中的fs.truncateSync方法使用说明
2014/12/15 Javascript
javascript运动框架用法实例分析(实现放大与缩小效果)
2016/01/08 Javascript
JavaScript是如何实现继承的(六种方式)
2016/03/31 Javascript
jQuery 获取屏幕高度、宽度的简单实现案例
2016/05/17 Javascript
bootstrap和jQuery.Gantt的css冲突 如何解决
2016/05/29 Javascript
jQuery on()方法绑定动态元素的点击事件实例代码浅析
2016/06/16 Javascript
微信小程序 页面跳转传参详解
2016/10/28 Javascript
HTML5canvas 绘制一个圆环形的进度表示实例
2016/12/16 Javascript
vue.js todolist实现代码
2017/10/29 Javascript
vue开发简单上传图片功能
2020/06/30 Javascript
利用js实现简易红绿灯
2020/10/15 Javascript
[13:40]TI3青蛙君全程回顾 DOTA2我们为梦想再战
2013/09/13 DOTA
[06:45]2018DOTA2亚洲邀请赛 4.5 SOLO赛 Sccc vs Maybe
2018/04/06 DOTA
在Python中使用swapCase()方法转换大小写的教程
2015/05/20 Python
python利用matplotlib库绘制饼图的方法示例
2016/12/18 Python
python基础教程之五种数据类型详解
2017/01/12 Python
Python 处理数据的实例详解
2017/08/10 Python
python分布式环境下的限流器的示例
2017/10/26 Python
Mac下Anaconda的安装和使用教程
2018/11/29 Python
pyqt5 实现多窗口跳转的方法
2019/06/19 Python
django将网络中的图片,保存成model中的ImageField的实例
2019/08/07 Python
Django+uni-app实现数据通信中的请求跨域的示例代码
2019/10/12 Python
Tensorflow实现部分参数梯度更新操作
2020/01/23 Python
解决pyqt5异常退出无提示信息的问题
2020/04/08 Python
使用CSS3编写类似iOS中的复选框及带开关的按钮
2016/04/11 HTML / CSS
Etam俄罗斯:法国女士内衣和家居服网上商店
2019/10/30 全球购物
什么是虚拟内存?虚拟内存有什么优势?
2012/02/19 面试题
高中运动会入场词
2014/02/14 职场文书
行政主管岗位职责范本
2015/04/09 职场文书
Python学习之异常中的finally使用详解
2022/03/16 Python