J'ai un ancien générateur de fonctions Hewlet Packard 33120A (il devrait être du même type que Agilent 33120A ) et je voudrais le contrôler avec MCU (ATMega). Le générateur a RS232 et utilise des commandes SCPI.
J'ai fait un simple convertisseur RS232 en TTL avec MAX232, juste avec des lignes RX et TX. Selon le guide de l'utilisateur (chapitre 4, section Protocole de prise de contact DTR / DSR), j'ai lié le DSR à la logique TRUE (tension négative) et le DTR n'est pas connecté. Cette configuration devrait désactiver la négociation matérielle.
Maintenant, je peux connecter le convertisseur au MCU ou à l'ordinateur. Pour ma première expérience, j'ai utilisé un ordinateur et ce script Python:
import serial, sys, time
if __name__ == '__main__':
if len(sys.argv) < 2:
print 'Usage: %s <serial_port>' % sys.argv[0]
sys.exit(1)
s = serial.Serial(port=sys.argv[1], baudrate=2400, bytesize=8, parity='N', stopbits=2, timeout=None, xonxoff=0, rtscts=0)
time.sleep(0.5)
s.write('\n*CLS\n')
time.sleep(0.5)
s.write('SYST:REM\n')
time.sleep(0.5)
s.write('APPL:SIN 30E+3, 0.1\n')
s.close()
Cela fonctionne sans aucun problème. Le générateur a réglé sa sortie à 30 kHz comme prévu. Le problème est, quand j'essaye de lire une réponse du générateur. Par exemple, cela devrait retourner le nom du périphérique:
s.write('*IDN?\n')
print s.realine()
Je suis presque sûr que la réponse est stockée dans le tampon de sortie du générateur mais aucune donnée n'est réellement transmise.
Existe-t-il une commande pour déclencher la transmission de données à partir du tampon? Ou dois-je activer la négociation matérielle?
Y a-t-il quelqu'un qui a ce générateur? L'utilisez-vous avec RS232 et SCPI?
s.readline()
fonction (j'ai édité ma question, merci).