Tengo el antiguo generador de funciones Hewlet Packard 33120A (debería ser del mismo tipo que Agilent 33120A ) y me gustaría controlarlo con MCU (ATMega). El generador tiene RS232 y usa comandos SCPI.
Hice un simple convertidor de RS232 a TTL con MAX232, solo con líneas RX y TX. De acuerdo con la Guía del usuario (capítulo 4, sección DTR / DSR Handshake Protocol), relacioné el DSR con la lógica VERDADERO (voltaje negativo) y el DTR no está conectado. Esta configuración debería deshabilitar el protocolo de enlace de hardware.
Ahora, puedo conectar el convertidor a MCU o computadora. Para mi primer experimento utilicé la computadora y este script de 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()
Esto funciona sin ningún problema. El generador estableció su salida a 30kHz como se esperaba. El problema es que cuando intento leer alguna respuesta del generador. Por ejemplo, esto debería devolver el nombre del dispositivo:
s.write('*IDN?\n')
print s.realine()
Estoy bastante seguro de que la respuesta se almacena en el búfer de salida del generador, pero en realidad no se transmiten datos.
¿Hay algún comando para activar la transmisión de datos desde el búfer? ¿O necesito habilitar el apretón de manos de hardware?
¿Hay alguien que tenga este generador? ¿Lo usas con RS232 y SCPI?
s.readline()
función (edité mi pregunta, gracias).