python 处理Bus Hound 数据

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

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

这里写图片描述

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

import win32ui

tar_file="target.txt"
start = 0
end = 0

dlg = 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()
        break

target = ""
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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值