Ho un vecchio generatore di funzioni Hewlet Packard 33120A (dovrebbe essere dello stesso tipo di Agilent 33120A ) e vorrei controllarlo con MCU (ATMega). Il generatore ha RS232 e usa i comandi SCPI.
Ho realizzato un semplice convertitore da RS232 a TTL con MAX232, solo con linee RX e TX. Secondo la Guida dell'utente (capitolo 4, sezione DTR / DSR Handshake Protocol) ho collegato il DSR alla logica TRUE (tensione negativa) e il DTR non è collegato. Questa configurazione dovrebbe disabilitare l'handshake hardware.
Ora posso collegare il convertitore all'MCU o al computer. Per il mio primo esperimento ho usato il computer e questo 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()
Funziona senza problemi. Il generatore ha impostato la sua uscita su 30kHz come previsto. Il problema è, quando provo a leggere qualche risposta dal generatore. Ad esempio, questo dovrebbe restituire il nome del dispositivo:
s.write('*IDN?\n')
print s.realine()
Sono abbastanza sicuro che la risposta sia memorizzata nel buffer di output del generatore ma in realtà non vengono trasmessi dati.
Esiste un comando per attivare la trasmissione di dati dal buffer? O devo abilitare l'handshake hardware?
C'è qualcuno che ha questo generatore? Lo usi con RS232 e SCPI?
s.readline()
funzione (ho modificato la mia domanda, grazie).