Python基于Tkinter编写crc校验工具

 更新时间:2020年05月06日 08:53:21   作者:无敌大灰狼me  
这篇文章主要介绍了Python基于Tkinter编写crc校验工具,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

本篇文章,完全是用来记录代码用的,目的是使用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使用sigthief签发证书的实现步骤

    Python使用sigthief签发证书的实现步骤

    Windows 系统中的一些非常重要文件通常会被添加数字签名,其目的是用来防止被篡改,能确保用户通过互联网下载时能确信此代码没有被非法篡改和来源可信,从而保护了代码的完整性、保护了用户不会被病毒、恶意代码和间谍软件所侵害,本章将演示证书的签发与伪造
    2021-06-06
  • 解决python运行效率不高的问题

    解决python运行效率不高的问题

    在本篇文章中小编给大家分享了关于解决python运行效率不高的问题,有需要的朋友们可以跟着学习下。
    2020-07-07
  • python自动裁剪图像代码分享

    python自动裁剪图像代码分享

    这篇文章主要介绍了python自动裁剪图像代码分享,具有一定参考价值,需要的朋友可以了解下。
    2017-11-11
  • python设置检查点简单实现代码

    python设置检查点简单实现代码

    这篇文章主要介绍了python设置检查点简单实现代码,需要的朋友可以参考下
    2014-07-07
  • Tensorflow实现神经网络拟合线性回归

    Tensorflow实现神经网络拟合线性回归

    这篇文章主要为大家详细介绍了Tensorflow实现神经网络拟合线性回归,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-07-07
  • python 中raise用法

    python 中raise用法

    这篇文章主要介绍了python 中raise用法,Python 允许我们在程序中手动设置异常,就是使用raise 语句来实现,下面我们就来看看raise的具体用法,文章内容介绍详细,具有一定的参考价值,需要的小伙伴可以参考一下
    2021-12-12
  • 基于PyQt5制作一个表情包下载器

    基于PyQt5制作一个表情包下载器

    每次和朋友聊天苦于没有表情包,而别人的表情包似乎是取之不尽、用之不竭。作为一个程序员哪能甘愿认输,所以本文将用Python制作一个表情包下载器供大家斗图,需要的可以参考一下
    2022-03-03
  • 详解Pandas中stack()和unstack()的使用技巧

    详解Pandas中stack()和unstack()的使用技巧

    当你在处理包含某种序列(例如时间序列数据)的变量的数据集时,数据通常需要进行重塑。Pandas 提供了各种用于重塑 DataFrame 的内置方法。其中,stack() 和 unstack() 是最流行的,本文总结了这两个方法的7种使用技巧,需要的可以参考一下
    2022-03-03
  • 详解pyqt5 动画在QThread线程中无法运行问题

    详解pyqt5 动画在QThread线程中无法运行问题

    这篇文章主要介绍了详解pyqt5 动画在QThread线程中无法运行问题,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-05-05
  • 利用Python如何批量修改数据库执行Sql文件

    利用Python如何批量修改数据库执行Sql文件

    这篇文章主要给大家介绍了关于利用Python如何批量修改数据库执行Sql文件的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-07-07

最新评论