工作中,经常要用到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