Проблема декодирования Pyvisa с помощью осциллографа Yokogawa - PullRequest
0 голосов
/ 06 марта 2019

Я пытаюсь прочитать некоторые значения с осциллографа Yokogawa.Я установил соединение с помощью pyvisa, и он работал нормально, отправляя и получая данные с осци.Эта проблема появляется, когда я пытаюсь прочитать более 857 значений.Если я установлю точку END 857, я смогу получить и распечатать / записать в файл все данные, но если я установлю 858, я получу следующую ошибку:

Traceback (most recent call last):
  File "osci_connect.py", line 16, in <module>
    values1 = (my_osci.query_ascii_values(':WAVEFORM:SEND? 0'))
  File "C:\Python37\lib\site-packages\pyvisa\resources\messagebased.py", line 629, in query_ascii_values
    delay)
  File "C:\Python37\lib\site-packages\pyvisa\resources\messagebased.py", line 447, in read_ascii_values
    block = self.read()
  File "C:\Python37\lib\site-packages\pyvisa\resources\messagebased.py", line 413, in read
    message = self._read_raw().decode(enco)
UnicodeDecodeError: 'ascii' codec can't decode byte 0xec in position 8156: ordinal not in range(128)

, и вот как последние байты данныхпохоже, когда я отлаживаю с помощью pydev:

b'.04E+00,-0.04E+00,-0.02E+00,0.03E+00,-0.01E+00,-0.01E+00,0.00E+00,-0.02E+00,'
 b'-0.01E+00,-0.03E+00,-0.03E+00,0.01E+00,0.04E+00,-0.01E+00,-0.02E+00,-0.06E+0'
 b'0,0.02E+00,0.03E+00,0.03E+00,0.01E+00,0.04E+00,0.00E+00,0.01E+00,0.04E+00,0.'
 b'03E+00,-0.03E+00,-0.\x00\x005\xc4\x1c\xbf~')

Я предполагаю, что ошибка генерируется символами "\ x00 \ x005 ...", но я не понимаю, почему другие возвращаются какожидается, и после 857 я получаю эту ошибку.

Ниже мой код:

import visa

rm = visa.ResourceManager()
#rm = visa.ResourceManager('C:\WINDOWS\system32\visa32.dll')
my_osci = rm.open_resource("TCPIP::172.20.113.189::INSTR",write_termination='\n',read_termination='\n')
print("Hello, I am:" + my_osci.query("*IDN?"))
print("Send ':WAVEFORM:END 1' ")
my_osci.write(":WAVEFORM:FORMAT ASCII")
my_osci.write(":WAVEFORM:START 0")
my_osci.write(":WAVEFORM:END 858")
#values = my_osci.query_ascii_values(':WAVEFORM:END 20')
values1 = (my_osci.query_ascii_values(':WAVEFORM:SEND? 0'))
print("Received values:")
print(values1)
...