Python基于Tkinter编写crc校验工具

 更新时间:2020-05-13 06:45:37   作者:佚名   我要评论(0)

本篇文章,完全是用来记录代码用的,目的是使用Python,基于Tkinter编写crc校验工具。


# -*- coding: utf-8 -*-
import Tkinter
import tkFileDialog
WIDTH = 16

本篇文章,完全是用来记录代码用的,目的是使用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实现计算资源图标crc值的方法
  • python求crc32值的方法

相关文章

  • Python基于Tkinter编写crc校验工具

    Python基于Tkinter编写crc校验工具

    本篇文章,完全是用来记录代码用的,目的是使用Python,基于Tkinter编写crc校验工具。 # -*- coding: utf-8 -*- import Tkinter import tkFileDialog WIDTH = 16
    2020-05-13
  • vscode写python时的代码错误提醒和自动格式化的方法

    vscode写python时的代码错误提醒和自动格式化的方法

    python的代码错误检查通常用pep8、pylint和flake8,自动格式化代码通常用autopep8、yapf、black。这些工具均可以利用pip进行安装,这里介绍传统的利用pip.exe安装和
    2020-05-13
  • 如何搭建pytorch环境的方法步骤

    如何搭建pytorch环境的方法步骤

    1.conda创建虚拟环境pytorch_gpu conda create -n pytorch_gpu python=3.6 创建虚拟环境还是相对较快的,它会自动为本环境安装一些基本的库,等待时间无需很长,
    2020-05-13
  • Python打印特殊符号及对应编码解析

    Python打印特殊符号及对应编码解析

    1、调用字符映射表输入特殊符号 在键盘上按win+R,在打开的对话框中输入“charmap”,会出现字符映射表: 2、利用字符编码输入特殊符号 #打印Σ print(chr(931))
    2020-05-13
  • Python3自动生成MySQL数据字典的markdown文本的实现

    Python3自动生成MySQL数据字典的markdown文本的实现

    为啥要写这个脚本 五一前的准备下班的时候,看到同事为了做数据库的某个表的数据字典,在做一个复杂的人工操作,就是一个字段一个字段的纯手撸,那速度可想而知是
    2020-05-13
  • 解决pycharm安装第三方库失败的问题

    解决pycharm安装第三方库失败的问题

    前言: 在使用pycharm学习python的时候,经常需要第三方库,没有第三方库程序就会报错,pycharm也会提醒你要安装所需要的库,安装第三方库的时候往往就出现了问题,
    2020-05-13
  • Python使用sqlite3模块内置数据库

    Python使用sqlite3模块内置数据库

    1、python内置的sqlite3模块,创建数据库中的表,并向表中插入数据,从表中取出所有行,以及输出行的数量。 #!/usr/bin/env python3 #创建SQLite3内存数据库,并创
    2020-05-13
  • 基于python实现检索标记敏感词并输出

    基于python实现检索标记敏感词并输出

     一些带有过度宣传的词,在淘宝、京东对商品的宣传有一定的限制,这些最佳,最大、盗版、水货等词语都不能用于产品的宣传,可以使用程序检测敏感词,以下既是具体代
    2020-05-13
  • Python接口测试数据库封装实现原理

    Python接口测试数据库封装实现原理

    引言   做接口测试的时候,避免不了操作数据库。因为数据校验需要,测试数据初始化需要、一些参数化场景需要等。   数据库操作框架设计   这里主要操作mysql数
    2020-05-13
  • Python reduce函数作用及实例解析

    Python reduce函数作用及实例解析

    语法 在python3中,内置函数中已经没有reduce了。要使用reduce,需要从functools模块里引入 可以看到,reduce有三个参数,第一个是函数function,第二个是序列sequ
    2020-05-13

最新评论