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中的二叉树查找算法模块使用指南
Jul 04 Python
探究Python的Tornado框架对子域名和泛域名的支持
May 02 Python
Python中threading模块join函数用法实例分析
Jun 04 Python
python写日志封装类实例
Jun 28 Python
Python 数据结构之堆栈实例代码
Jan 22 Python
Django 前后台的数据传递的方法
Aug 08 Python
python下10个简单实例代码
Nov 15 Python
Python中对数组集进行按行打乱shuffle的方法
Nov 08 Python
python实现socket+threading处理多连接的方法
Jul 23 Python
python 求10个数的平均数实例
Dec 16 Python
Spark处理数据排序问题如何避免OOM
May 21 Python
详解Python 最短匹配模式
Jul 29 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命令行用法入门实例教程
2014/10/27 PHP
php实现将任意进制数转换成10进制的方法
2015/04/17 PHP
PHP的伪随机数与真随机数详解
2015/05/27 PHP
PHP入门教程之面向对象基本概念实例分析
2016/09/11 PHP
PHP7.1实现的AES与RSA加密操作示例
2018/06/15 PHP
phpStudy vscode 搭建debug调试的教程详解
2020/07/28 PHP
js 动态选中下拉框
2009/11/26 Javascript
document.getElementById为空或不是对象的解决方法
2010/01/24 Javascript
jQuery 学习第五课 Ajax 使用说明
2010/05/17 Javascript
解决Jquery load()加载GB2312页面时出现乱码的两种方案
2013/09/10 Javascript
JavaScript数组去重的五种方法
2015/11/05 Javascript
canvas红包照片实例分享
2017/02/28 Javascript
vue移动端裁剪图片结合插件Cropper的使用实例代码
2017/07/10 Javascript
JS 仿支付宝input文本输入框放大组件的实例
2017/11/14 Javascript
vue-cli 使用vue-bus来全局控制的实例讲解
2018/09/15 Javascript
详解Vue源码学习之双向绑定
2019/04/10 Javascript
Vue实现商品分类菜单数量提示功能
2019/07/26 Javascript
python转换摩斯密码示例
2014/02/16 Python
python网络编程学习笔记(五):socket的一些补充
2014/06/09 Python
Python实现的拉格朗日插值法示例
2019/01/08 Python
对python pandas读取剪贴板内容的方法详解
2019/01/24 Python
实例详解python函数的对象、函数嵌套、名称空间和作用域
2019/05/31 Python
Python编写带选项的命令行程序方法
2019/08/13 Python
python实现多线程端口扫描
2019/08/31 Python
HTML5 Canvas+JS控制电脑或手机上的摄像头实例
2014/05/03 HTML / CSS
英国建筑用品在线:Building Supplies Online(BSO)
2018/04/30 全球购物
国际象棋商店:The Chess Store
2018/07/09 全球购物
美国亚马逊旗下男装网站:East Dane(支持中文)
2019/09/25 全球购物
幼儿教师研修感言
2014/02/12 职场文书
代理协议书范本
2014/04/22 职场文书
在校大学生自我评价范文
2014/09/12 职场文书
体育个人工作总结
2015/02/09 职场文书
2014年度个人总结范文
2015/03/09 职场文书
2015年大学迎新工作总结
2015/07/16 职场文书
思品教学工作总结
2015/08/10 职场文书
HAM-2000摩机图
2021/04/22 无线电