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绘制MySQL数据图实现数据可视化
Mar 30 Python
Python中逗号的三种作用实例分析
Jun 08 Python
python 把列表转化为字符串的方法
Oct 23 Python
Django ORM多对多查询方法(自定义第三张表&amp;ManyToManyField)
Aug 09 Python
python模拟键盘输入 切换键盘布局过程解析
Aug 15 Python
Python爬取破解无线网络wifi密码过程解析
Sep 17 Python
如何基于python实现画不同品种的樱花树
Jan 03 Python
最新2019Pycharm安装教程 亲测
Feb 28 Python
python实现将字符串中的数字提取出来然后求和
Apr 02 Python
python中urllib.request和requests的使用及区别详解
May 05 Python
详解torch.Tensor的4种乘法
Sep 03 Python
Python爬虫基础讲解之请求
May 13 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 flv视频时间获取函数
2010/06/29 PHP
浅谈使用 PHP 进行手机 APP 开发(API 接口开发)
2014/08/11 PHP
PHP利用hash冲突漏洞进行DDoS攻击的方法分析
2015/03/26 PHP
php获取网站百度快照日期的方法
2015/07/29 PHP
PHP与Web页面的交互示例详解二
2020/08/04 PHP
JavaScript CSS修改学习第三章 修改样式表
2010/02/19 Javascript
IE8下关于querySelectorAll()的问题
2010/05/13 Javascript
js动态修改整个页面样式达到换肤效果
2014/05/23 Javascript
javascript常见操作汇总
2014/09/03 Javascript
JavaScript中使用typeof运算符需要注意的几个坑
2014/11/08 Javascript
JavaScript实现级联菜单的方法
2015/06/29 Javascript
JQuery通过AJAX从后台获取信息显示在表格上并支持行选中
2015/09/15 Javascript
chrome浏览器当表单自动填充时如何去除浏览器自动添加的默认样式
2015/10/09 Javascript
基于JS实现的笛卡尔乘积之商品发布
2016/05/13 Javascript
总结JavaScript设计模式编程中的享元模式使用
2016/05/21 Javascript
Javascript之BOM(window对象)详解
2016/05/25 Javascript
BootStrap表单控件之文本域textarea
2017/05/23 Javascript
详解使用vue-cli脚手架初始化Vue项目下的项目结构
2018/03/08 Javascript
JavaScript+H5实现微信摇一摇功能
2018/05/23 Javascript
深入浅出 Vue 系列 -- 数据劫持实现原理
2019/04/23 Javascript
VUE+elementui面包屑实现动态路由详解
2019/11/04 Javascript
[00:36]DOTA2风云人物相约完美“圣”典 12月17日不见不散
2016/11/30 DOTA
Python批量查询域名是否被注册过
2017/06/21 Python
使用Python的Dataframe取两列时间值相差一年的所有行方法
2018/07/10 Python
详解Python 定时框架 Apscheduler原理及安装过程
2019/06/14 Python
python实现指定ip端口扫描方式
2019/12/17 Python
pandas的resample重采样的使用
2020/04/24 Python
CentOS 7如何实现定时执行python脚本
2020/06/24 Python
欧洲领先的火车票和大巴票预订平台:Trainline
2018/12/26 全球购物
网络工程师的自我评价
2013/10/02 职场文书
大学生创业策划书
2014/02/02 职场文书
走进敬老院活动总结
2014/07/10 职场文书
大学生档案自我鉴定(2篇)
2014/10/14 职场文书
法律意见书范文
2015/06/04 职场文书
聘任书格式及范文
2015/09/21 职场文书
导游词之青岛太清宫
2019/12/13 职场文书