Ich habe einen alten Hewlet Packard 33120A-Funktionsgenerator (er sollte vom selben Typ sein wie Agilent 33120A ) und möchte ihn mit der MCU (ATMega) steuern. Der Generator verfügt über RS232 und verwendet SCPI-Befehle.
Ich habe einen einfachen RS232-zu-TTL-Wandler mit MAX232 gemacht, nur mit RX- und TX-Leitungen. Gemäß Benutzerhandbuch (Kapitel 4, Abschnitt DTR / DSR-Handshake-Protokoll) habe ich den DSR an die Logik TRUE (negative Spannung) gebunden und DTR ist nicht angeschlossen. Diese Konfiguration sollte den Hardware-Handshake deaktivieren.
Jetzt kann ich den Konverter an die MCU oder an den Computer anschließen. Für mein erstes Experiment habe ich einen Computer und dieses Python-Skript verwendet:
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()
Dies funktioniert problemlos. Der Generator hat seine Leistung wie erwartet auf 30 kHz eingestellt. Das Problem ist, wenn ich versuche, eine Antwort vom Generator zu lesen. Dies sollte beispielsweise den Gerätenamen zurückgeben:
s.write('*IDN?\n')
print s.realine()
Ich bin mir ziemlich sicher, dass die Antwort im Ausgangspuffer des Generators gespeichert ist, aber es werden tatsächlich keine Daten übertragen.
Gibt es einen Befehl zum Auslösen der Datenübertragung aus dem Puffer? Oder muss ich den Hardware-Handshake aktivieren?
Gibt es jemanden, der diesen Generator hat? Verwenden Sie es mit RS232 und SCPI?
s.readline()
Funktion (ich habe meine Frage bearbeitet, danke).