Python 3.x PYVISA:如何传输二进制块数据,使图片正确格式化并保存到我的电脑上?

Python 3.x PYVISA:如何传输二进制块数据,使图片正确格式化并保存到我的电脑上?,python-3.x,byte,file-transfer,instrumentation,pyvisa,Python 3.x,Byte,File Transfer,Instrumentation,Pyvisa,我正在尝试将一个屏幕截图从Rhode&Schwarz-FSV信号分析仪传输到我的电脑 如何传输二进制块数据,以便将图片从仪器正确保存到PC上?我的代码如下。一个文件被保存到我的桌面上,但我的计算机出现错误,无法打开,因为该文件的格式不正确 import visa rm = visa.ResourceManager() inst = rm.open_resource('TCPIP0::178.168.48.31::inst0::INSTR') inst.write("mmem:name 'C:\

我正在尝试将一个屏幕截图从Rhode&Schwarz-FSV信号分析仪传输到我的电脑

如何传输二进制块数据,以便将图片从仪器正确保存到PC上?我的代码如下。一个文件被保存到我的桌面上,但我的计算机出现错误,无法打开,因为该文件的格式不正确

import visa
rm = visa.ResourceManager()
inst = rm.open_resource('TCPIP0::178.168.48.31::inst0::INSTR')

inst.write("mmem:name 'C:\eswScreen.wmf\'")
inst.write("MMEM:DATA? 'C:\eswScreen.wmf\'")
img = inst.read_raw()

target = open(r"C:\Users\myName\Desktop\screenShot.wmf", 'wb')
target.write(img)
target.close()

我确认屏幕截图保存在仪器上。还使用另一台仪器验证了SCPI语法的正确性。因此,必须确定binblock数据的传输方式。非常感谢您的建议

import pyvisa
rm = pyvisa.ResourceManager()
inst = rm.open_resource('TCPIP0::178.168.48.31::inst0::INSTR')

inst.values_format.is_binary = True
inst.values_format.datatype = 'B'
inst.values_format.is_big_endian = False
inst.values_format.container = bytearray

inst.write("mmem:name 'C:\eswScreen.wmf\'")
img = inst.query_values("MMEM:DATA? 'C:\eswScreen.wmf\'")

target = open(r"C:\Users\user\Desktop\screenShot.wmf", 'wb')
target.write(img)
target.close()
这对我很有用。

PyVisa 1.1版 Rohde&Schwarz FSWP

def SaveScreenImage(filepath,filename):
    pna.write('HCOPy:DEVice:LANGuage PNG')
    pna.write(f'MMEMory:NAME "{filepath}\{filename}.png"')
    pna.write('HCOPy:IMMediate')

def ScreenCap(filepath,filename):
    """Capture screen image from anaylzer and save to a file on the host PC

    Example Input:
    
        filepath = 'C:\Data'
        filename = 'test'
    """

    
    SaveScreenImage(r'C:\\',filename)   #create temporary file on analyzer
    img = pna.query_binary_values(f'MMEMory:DATA? "C:\{filename}.png"',datatype='B',is_big_endian=False,container=bytearray)
    
    with open(f'{filepath}\{filename}.png', 'wb') as target:
        target.write(img)
        
    pna.write(f'MMEMory:DELete:IMMediate "C:\{filename}.png"')   #remove file from analyzer