我正在尝试将数据从 Keysight 示波器转换为.png
Image。当我在网上查看如何做到这一点时,我偶然发现了以下代码:
# 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
。我以为它在下面,pyvisa
但在那里找不到。在网上查看后,我了解到这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% 之间,如上图所示)。
所以基本上我的问题是:
难道是我没有从仪器中读取全部数据?如果是这样,如何克服这个问题?
会不会是因为包装方式不对?如果是这样,解决方案是什么?