Bonjour,
je souhaite piloter une enceinte thermique Vötsch VT7011 par TCP/IP via un câble éthernet. J'utilise PyVISA1.8 , NI VISA 17.0, Python3.6 et Windows10.
j'arrive à envoyer des commandes à l'appareil:
En revanche je n'arrive pas à recevoir les réponses de l'appareil lorsque j'utilise:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 import visa rm = visa.ResourceManager() inst = rm.open_resource('TCPIP0::<ip adress>::<nb port>::SOCKET',read_termination = '\n') inst.write('$01E 0050.0') #fixe la température à 50°C, l'appareil n'est pas censé renvoyer quelquechose
Python me retourne l'erreur suivante:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 inst.query('$01?') #renvoie une description des températures réelles et de consigne #Si j'utilise read() ou read_raw() après un write je ne reçois également pas la réponse de l'instrument
Sur d'autres forums, je vois que ce problème de réception est assez fréquent avec PyVISA, j'ai essayé plusieurs caractères de fin de ligne
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 Traceback (most recent call last): File "D:\programme python\ex avec pyvisa.py", line 20, in <module> print(inst.query('$01?')) File "C:\Users\Python\Python36-32\lib\site-packages\pyvisa-1.8-py3.6.egg\pyvisa\resources\messagebased.py", line 407, in query return self.read() File "C:\Users\Python\Python36-32\lib\site-packages\pyvisa-1.8-py3.6.egg\pyvisa\resources\messagebased.py", line 332, in read message = self.read_raw().decode(enco) File "C:\Users\Python\Python36-32\lib\site-packages\pyvisa-1.8-py3.6.egg\pyvisa\resources\messagebased.py", line 306, in read_raw chunk, status = self.visalib.read(self.session, size) File "C:\Users\Python\Python36-32\lib\site-packages\pyvisa-1.8-py3.6.egg\pyvisa\ctwrapper\functions.py", line 1582, in read ret = library.viRead(session, buffer, count, byref(return_count)) File "C:\Users\Python\Python36-32\lib\site-packages\pyvisa-1.8-py3.6.egg\pyvisa\ctwrapper\highlevel.py", line 188, in _return_handler raise errors.VisaIOError(ret_value) pyvisa.errors.VisaIOError: VI_ERROR_TMO (-1073807339): Timeout expired before operation completed.
et
Code : Sélectionner tout - Visualiser dans une fenêtre à part write_termination=None #ou \r ou \rou encore augmenter le timeout
Code : Sélectionner tout - Visualiser dans une fenêtre à part read_termination='\n' #ou \r? Merci de votre aide.
Code : Sélectionner tout - Visualiser dans une fenêtre à part inst.timeout=10000 #en ms
Partager