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:
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
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
 
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
Python me retourne l'erreur suivante:
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.
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
write_termination=None  #ou \r ou \r
et
Code : Sélectionner tout - Visualiser dans une fenêtre à part
read_termination='\n' #ou \r
ou encore augmenter le timeout
Code : Sélectionner tout - Visualiser dans une fenêtre à part
inst.timeout=10000  #en ms
? Merci de votre aide.