Python 3.x PYVISA:如何传输二进制块数据,使图片正确格式化并保存到我的电脑上?
我正在尝试将一个屏幕截图从Rhode&Schwarz-FSV信号分析仪传输到我的电脑 如何传输二进制块数据,以便将图片从仪器正确保存到PC上?我的代码如下。一个文件被保存到我的桌面上,但我的计算机出现错误,无法打开,因为该文件的格式不正确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:\
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