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实现的下载8000首儿歌的代码分享
Nov 21 Python
在Python中操作时间之mktime()方法的使用教程
May 22 Python
Python升级导致yum、pip报错的解决方法
Sep 06 Python
Python中装饰器学习总结
Feb 10 Python
对python修改xml文件的节点值方法详解
Dec 24 Python
Jupyter notebook在mac:linux上的配置和远程访问的方法
Jan 14 Python
Python实现定时执行任务的三种方式简单示例
Mar 30 Python
django框架防止XSS注入的方法分析
Jun 21 Python
python matplotlib折线图样式实现过程
Nov 04 Python
使用Django清空数据库并重新生成
Apr 03 Python
Pytorch之Tensor和Numpy之间的转换的实现方法
Sep 03 Python
pandas中pd.groupby()的用法详解
Jun 16 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
深入密码加salt原理的分析
2013/06/06 PHP
php使用pack处理二进制文件的方法
2014/07/03 PHP
PHP+FFMPEG实现将视频自动转码成H264标准Mp4文件
2014/09/24 PHP
通过php修改xml文档内容的方法
2015/01/23 PHP
Ext第一周 史上最强学习笔记---GridPanel(基础篇)
2008/12/29 Javascript
js split 的用法和定义 js split分割字符串成数组的实例代码
2012/05/13 Javascript
Mac地址验证的javascript代码
2013/11/09 Javascript
一个不错的js html页面倒计时可精确到秒
2014/10/22 Javascript
jQuery学习笔记之创建DOM元素
2015/01/19 Javascript
IE下支持文本框和密码框placeholder效果的JQuery插件分享
2015/01/31 Javascript
JS+CSS实现仿触屏手机拨号盘界面及功能模拟完整实例
2015/05/16 Javascript
coffeescript使用的方式汇总
2015/08/05 Javascript
浅谈JavaScript前端开发的MVC结构与MVVM结构
2016/06/03 Javascript
设置jQueryUI DatePicker默认语言为中文
2016/06/04 Javascript
AngularJS $injector 依赖注入详解
2016/09/14 Javascript
微信小程序 教程之WXML
2016/10/18 Javascript
angular4模块中给标签添加背景图的实现方法
2017/09/15 Javascript
javascript判断一个变量是数组还是对象
2019/04/10 Javascript
Vue+Element UI+vue-quill-editor富文本编辑器及插入图片自定义
2019/08/20 Javascript
[01:02:47]EG vs Secret 2019国际邀请赛淘汰赛 胜者组 BO3 第一场 8.21.mp4
2020/07/19 DOTA
[01:33:30]DOTA2-DPC中国联赛 正赛 RNG vs Phoenix BO3 第二场 2月5日
2021/03/11 DOTA
Python实现从url中提取域名的几种方法
2014/09/26 Python
实践Vim配置python开发环境
2018/07/02 Python
python 获取页面表格数据存放到csv中的方法
2018/12/26 Python
Python爬虫运用正则表达式的方法和优缺点
2019/08/25 Python
Python序列对象与String类型内置方法详解
2019/10/22 Python
详解python 降级到3.6终极解决方案
2020/02/06 Python
python 使用递归回溯完美解决八皇后的问题
2020/02/26 Python
H5仿微信界面教程(一)
2017/07/05 HTML / CSS
实例讲解利用HTML5 Canvas API操作图形旋转的方法
2016/03/22 HTML / CSS
Html5 Canvas动画基础碰撞检测的实现
2018/12/06 HTML / CSS
three.js模拟实现太阳系行星体系功能
2019/09/03 HTML / CSS
Dockers鞋官网:Dockers Shoes
2018/11/13 全球购物
幼儿教师演讲稿
2014/05/06 职场文书
2015年七七事变78周年纪念活动方案
2015/05/06 职场文书
vue 自定义组件添加原生事件
2022/04/21 Vue.js