我正在尝试将数据从Keysight作用域转换为.png
映像。
当我在网上查看如何操作时,我无意中发现了以下代码:
# Download the screen image.
# --------------------------------------------------------
sDisplay = do_query_ieee_block(":DISPlay:DATA? PNG")
# Save display data values to file.
f = open("screen_image.png", "wb")
f.write(sDisplay)
f.close()
上面代码的问题是我不确定do_query_ieee_block
是什么。我以为它在{query_binary_values
与pyvisa
假设数据在IEEE
中或多或少是一样的
根据这些信息,我编写了以下代码:
import pyvisa
import struct
IDN="SomeScopeIDN" #something like 'USB0::0xhhhh::0xhhhh::MYdddddddd::0::INSTR'
scope=pyvisa.ResourceManager().open_resource(IDN)
binImage=self.scope.query_binary_values(":DISPlay:DATA? PNG") #This gets a list of floats
byteImage=struct.pack('%sf' % len(binImage),*binImage) #Convert the list to bytes-like object
path=r"c:\Users\user\Desktop\Scope_Image.png"
with open (path,'wb') as f:
f.write(byteImage)
这会创建一个图像,但结果不好:
从剪贴工具:
正如您所看到的,只有图像的上10%是好的,而其余的则不是好的(需要指出的是,每次我从示波器检索新数据时,我都会得到一个不同的损坏区域,该区域在图片的50-90%之间。大多数情况下,损坏区域在80-90%之间,如上图所示)
所以基本上我的问题是:
可能是我没有从仪器中读取全部数据吗?如果是这样,我们如何克服这个问题
这会不会是因为包装不当造成的?如果是,解决方案是什么
看到一个可能有用的示例:
将
datatype='B', container=bytearray
作为参数添加到query_binary_values()
可以互换地尝试
':DISP:DATA? ON,OFF,PNG'
相关问题 更多 >
编程相关推荐