Мне нравится управлять устройством VISA (поляриметром PAX1000).
Я начинаю программировать под Windows, используя ni-visa backend для pyvisa, и связь работает отлично. Также, если я использую бэкенд pyvisa-py с драйвером winusb (меняя драйвер с помощью zadig), все работает нормально.
Затем я перемещаю поляриметр на Raspberry Pi, используя также библиотеку pyvisa, но с бэкендом pyvisa-py (ni-visa недоступна для ARM). Большинство команд работает так, как ожидалось, и я получаю ожидаемый ответ. Но есть и некоторые команды, которые не работают. Например, если я использую
inst.write('SENS:CALC 9;:INP:ROT:STAT 1')
Я получил:
(40, <StatusCode.success: 0>)
Устройство не устанавливает значение. (Тот же код отлично работает под Windows.)
Так что я понятия не имею, что происходит.
Образец кода:
import pyvisa
import numpy as np
#rm = pyvisa.ResourceManager('@py')
rm = pyvisa.ResourceManager()
rm.list_resources()
#ni-visa
inst = rm.open_resource('USB0::0x1313::0x8031::M00587150::INSTR')
#pyvisa-py
#inst = rm.open_resource('USB0::4883::32817::M00587150::0::INSTR')
print(inst.query('*IDN?'))
print(inst.write('SENS:CALC 9;:INP:ROT:STAT 1'))
print(inst.query('SENS:DATA:LAT?'))