j'utilise un programme en Python version 2.7.6
qui utilise la librairie visa520runtime ( import visa ) pour
commander 1 rigol DG1022 générateur de fréquences
le rigol est relié par sa sortie USB Device vers l'ordinateur
( cable idem à celui d'une imprimante en usb 2)
tout fonctionne bien et je peux envoyer mes commandes du pc
et paramétrer mon RIGOL DG1022.
pour une application particulière je dois débrancher le câble entre 2 actions.
j'ai fais 2 pauses ( 1 pour débrancher et l'autre pour rebrancher ) dans le programme
et quand je rebranche le programme python plante sur ma 1ere ligne qui fais réfence à une variable de visa :
1) avant de débrancher l'USB Device qui pilote le rigol :
-------------------------------------------------------
<type 'list'>
instruments = ['USB0::0x0400::0x09C4:G1D171601270']
<type 'list'> usb = ['USB0::0x0400::0x09C4:G1D171601270']
<class 'pyvisa.visa.Instrument'> rigolDG1022un = Instrument("USB0::0x0400::0x09C4:G1D171601270::INSTR")
<class 'pyvisa.visa.Instrument'> rigolDG1022unsave = Instrument("USB0::0x0400::0x09C4:G1D171601270::INSTR") <========= sauvegarde de la variable
*** début de la boucle temps *** débranchez prise USB Device ******
Appuyer sur ENTREE pour continuer
2) juste après avoir rebranché la prise USB Host :
------------------------------------------------------
*** fin de la boucle temps *** re BRANCHEZ la prise USB Device ***
Appuyer sur ENTREE apres avoir rebranche pour continuer
*************************************************************
<type 'list'>
<type 'list'> instruments = ['USB0::0x0400::0x09C4:G1D171601270']
<type 'list'>
<type 'list'> usb = ['USB0::0x0400::0x09C4:G1D171601270']
<class 'pyvisa.visa.Instrument'> rigolDG1022unsave =
Traceback (most recent call last):
File "C:\Python27\frequences 2016 09 25 17h avec arret", line 10042, in <module>
print type(rigolDG1022unsave), "rigolDG1022unsave =", rigolDG1022unsave <======= ligne 10042
File "C:\Python27\lib\site-packages\pyvisa\visa.py", line 373, in __repr__
return "Instrument(\"%s\")" % self.resource_name
File "C:\Python27\lib\site-packages\pyvisa\visa.py", line 194, in __get_resource_name
return vpp43.get_attribute(self.vi, VI_ATTR_RSRC_NAME)
File "C:\Python27\lib\site-packages\pyvisa\vpp43.py", line 594, in get_attribute
visa_library().viGetAttribute(vi, attribute, attribute_state)
File "C:\Python27\lib\site-packages\pyvisa\vpp43.py", line 398, in check_status
raise visa_exceptions.VisaIOError, status
VisaIOError: VI_ERROR_INV_PARAMETER: The value of some parameter (which parameter is not known) is invalid.
en fait comme j'ai débranché la prise USB Device dés l'affichage de la variable rigolDG1022unsave
de nature class 'pyvisa.visa.Instrument' le programme plante
le sprint sont fais pour aider au debug car avant j'avais le même problème
avec la même variable utilisée pour un envoyer une commande au rigol ( rigolDG1022un )
Cela fais plusieurs jours que je n'avance pas et en faite j'ai l'impression
qu'il me faudrait fermer la communication visa par un close puis éventuellement
réouvrir puisque l'open est explicite
en début de programme j'ai un import visa
mais après impossible d'écrire le close sans erreur de syntax
rigolDG1022un = visa.instrument(usb[0], timeout=20, chunk_size=1024000) # bigger timeout
j'ai écris visa.close()
mais je n'ai pas trouvé la bonne écriture
si quelqu'un a une piste soit pour le problème d'usb débranché puis rebranché
ou peut m'aider sur la syntax cela serait sympa
merci
Partager