Eu tenho um antigo gerador de funções Hewlet Packard 33120A (deve ser do mesmo tipo que o Agilent 33120A ) e gostaria de controlá-lo com o MCU (ATMega). O gerador possui RS232 e usa comandos SCPI.
Criei um conversor simples de RS232 para TTL com MAX232, apenas com linhas RX e TX. De acordo com o manual do usuário (capítulo 4, seção DTR / DSR Handshake Protocol), vinculei o DSR à lógica TRUE (tensão negativa) e o DTR não está conectado. Essa configuração deve desabilitar o handshake de hardware.
Agora, eu posso conectar o conversor ao MCU ou ao computador. No meu primeiro experimento, usei o computador e este 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()
Isso funciona sem nenhum problema. O gerador ajustou sua saída para 30kHz conforme o esperado. O problema é que, quando tento ler alguma resposta do gerador. Por exemplo, isso deve retornar o nome do dispositivo:
s.write('*IDN?\n')
print s.realine()
Tenho certeza de que a resposta é armazenada no buffer de saída do gerador, mas nenhum dado é realmente transmitido.
Existe algum comando para acionar a transmissão de dados do buffer? Ou preciso ativar o handshake de hardware?
Existe alguém que tenha esse gerador? Você o usa com RS232 e SCPI?
s.readline()
função (editei minha pergunta, obrigado).