python 处理Bus Hound 数据

来源:互联网 发布:java d 系统参数 编辑:程序博客网 时间:2024/06/07 07:30

工作中,经常要用到Bus Hound软件用来调试串口、USB等设备,监听PC端(window)跟设备通信。
如下图,是用Bus Hound监听到摸个设备的数据,可以清楚的看到某个设备发送到PC或者PC发送到设备的数据。
这里写图片描述

Bus Hound可以把监听到的数据保存为文本文件,如下图

这里写图片描述

如上图,开头的一些是说明,列举出了PC上存在的一些设备,然后对各个数据项进行描述,如Data,就是传输的数据,这就是是我们需要的数据。
有时候在测试过程中对默写命令进行测试,那就要要复制Bus hound监听到的数据,当命令少于16字节是,命令都在一行中,可以直接把全部复制出来,可是当命令大于16字节是,命令就不止一行,当命令越大,占用的行数也多,要把这命令复制出来就有点麻烦了,
有时候在测试过程中,要做个记录,也要把某些命令包截取出来。
我之前做过脑残的做法是先把非数据区删除,然后再把数据区中数据前后不要的数据删除,然后再组成完整的命令包;也想过直接把需要的数据一行一行得复制出来,这就需要在两个文本文件中进行,也怕出错。
突然想到,可以写个程序来处理, 用Python打开源文件,读取数据区,然后截取所要的数据,把数据保存到新的文件,代码如下,

import win32uitar_file="target.txt"start = 0end = 0dlg = win32ui.CreateFileDialog(1)dlg.SetOFNInitialDir('')dlg.DoModal()filename = dlg.GetPathName()try:    source = open(filename,"r+")except :    source.close()    exit()while 1:    str = source.readline()    if len(str)==0:        print "break"        break    if str.find("Device  Phase  Data") == 0:        start = str.find("Data")        end = str.find("Description")        source.readline()        breaktarget = ""while 1:    str = source.readline()    if len(str)==0:        print "break"        break    temp = str[start:end]    target = target +temp + "\n"try:    tar = open(tar_file,"w")    tar.write(target)except:    tar.close()source.close()tar.close()exit()

处理前的文件,
这里写图片描述

处理后的文件,

这里写图片描述

说明

  • 环境:win7 64位,python 2.7,
  • 库依赖:win32ui(pywin32-220.win-amd64-py2.7.exe)

代码更新见我的github

0 0