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  __getattr__与__setattr__使用方法
Sep 06 Python
python编写分类决策树的代码
Dec 21 Python
windows环境下tensorflow安装过程详解
Mar 30 Python
深入理解python中sort()与sorted()的区别
Aug 29 Python
Python实现统计英文文章词频的方法分析
Jan 28 Python
总结Python图形用户界面和游戏开发知识点
May 22 Python
Pandas之MultiIndex对象的示例详解
Jun 25 Python
解决Python3用PIL的ImageFont输出中文乱码的问题
Aug 22 Python
Python中的上下文管理器相关知识详解
Sep 19 Python
Python opencv相机标定实现原理及步骤详解
Apr 09 Python
python中查看.db文件中表格的名字及表格中的字段操作
Jul 07 Python
Python导入父文件夹中模块并读取当前文件夹内的资源
Nov 19 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
追忆往昔!浅谈收音机的百年发展历史
2021/03/01 无线电
有关JSON以及JSON在PHP中的应用
2010/04/09 PHP
php站内搜索关键词变亮的实现方法
2014/12/30 PHP
PHP实现CSV文件的导入和导出类
2015/03/24 PHP
PHP获取文件夹大小函数用法实例
2015/07/01 PHP
php版微信支付api.mch.weixin.qq.com域名解析慢原因与解决方法
2016/10/12 PHP
php封装的表单验证类完整实例
2016/10/19 PHP
JsRender for index循环索引用法详解
2014/10/31 Javascript
jQuery内部原理和实现方式浅析
2015/02/03 Javascript
jQuery实现将div中滚动条滚动到指定位置的方法
2016/08/10 Javascript
JavaScript 深层克隆对象详解及实例
2016/11/03 Javascript
js实现图片左右滚动效果
2017/02/27 Javascript
angular实现IM聊天图片发送实例
2017/05/08 Javascript
jquery平滑滚动到顶部插件使用详解
2017/05/08 jQuery
微信小程序中做用户登录与登录态维护的实现详解
2017/05/17 Javascript
对Vue table 动态表格td可编辑的方法详解
2018/08/28 Javascript
微信小程序页面间值传递的两种方法
2018/11/26 Javascript
JS实现的A*寻路算法详解
2018/12/14 Javascript
vue-cli随机生成port源码的方法
2019/09/02 Javascript
layerui代码控制tab选项卡,添加,关闭的实例
2019/09/04 Javascript
Vue 同步异步存值取值实现案例
2020/08/05 Javascript
[11:12]2018DOTA2国际邀请赛寻真——绿色长城OpTic
2018/08/10 DOTA
[01:13:18]Secret vs Infamous 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.23
2019/09/05 DOTA
浅析Python 实现一个自动化翻译和替换的工具
2019/04/14 Python
python实现对服务器脚本敏感信息的加密解密功能
2019/08/13 Python
python修改文件内容的3种方法详解
2019/11/15 Python
双向RNN:bidirectional_dynamic_rnn()函数的使用详解
2020/01/20 Python
哪些是python中web开发框架
2020/06/17 Python
Python+Xlwings 删除Excel的行和列
2020/12/19 Python
Reebonz中国官网:新加坡奢侈品购物网站
2017/03/17 全球购物
外语专业毕业生个人的自荐信
2013/11/19 职场文书
文秘档案管理岗位职责
2014/03/06 职场文书
党员学习党的群众路线思想汇报(5篇)
2014/09/10 职场文书
员工年终自我评价
2014/09/14 职场文书
2014年团总支工作总结
2014/11/21 职场文书
结婚典礼主持词
2015/06/29 职场文书