我对此 VISA 获取调用的返回结果有疑问:
ribData = []
ribData = inst.query('CURVe?')
我正在使用此调用从示波器中获取波形。我正在用 Python 开发这个程序。
如果值为正,则调用返回二进制值,我可以绘制它们,但如果我将波形放在中间点以下的示波器上,我会收到错误:
Traceback (most recent call last):
File "C:/_Python/TDS3054/mainTds.py", line 107, in cButton
ribData = inst.query('CURVe?')
File "C:\Python34\lib\site-packages\pyvisa\resources\messagebased.py", line 384, in query
return self.read()
File "C:\Python34\lib\site-packages\pyvisa\resources\messagebased.py", line 309, in read
message = self.read_raw().decode(enco)
UnicodeDecodeError: 'ascii' codec can't decode byte 0xfc in position 401: ordinal not in range(128)
我使用以下 VISA 调用在采集之前设置示波器。
inst.write('DATa:SOUrce CH2')
inst.write('DATa:WIDth 1')
inst.write('DATA:START 10')
inst.write('DATA:STOP 800')
inst.write('DATa:ENCdg RIBinary') # RIB -128 to +127
因为,在获取调用(CURVE)上发生了故障,我想知道是否有一个 VISA 库调用可以解决这个问题。也许我需要将 Unicode 设置为 UTF-8,或者 VISA 不处理 Unicode,或者这不是我的问题。