PDA

View Full Version : [BASIC/TELNET/PERL] perl interroga via telnet un programmino in basic


CH1CC0
19-04-2009, 21:55
Ciao a tutti,

sto "giocando" con un microcontrollore programmabile (simile ad un PLC) che viene programmato in basic e che ha un'uscita seriale.

All'uscita seriale è collegato un adattatore seriale/ethernet (con webserver) che mi permette di raggiungerlo via IP attraverso un semplice telnet.

Dall'altra parte ho uno script in PERL che (attraverso Net::Telnet e telnet.pm) fa un telnet al webserver, lancia un comando e prende (o meglio dovrebbe prendere) l'output di questo comando.

Fino al lancio del comando, tutto funziona perfettamente (me lo conferma il microcontrollore), tuttavia quando è ora di restituire l'output letto, lo script PERL mi dice che il comando è andato in timeout (su una specifica riga dello script che è proprio quella che lancia il comando e ne copia l'output su una variabile prima di stamparlo a video)

Il mio dubbio è:
il basic restituisce una semplice variabile, subito dopo ho aggiunto un semplice "CR" per andare a capo.
Credo che il protocollo telnet si aspetti di trovare qualcos'altro prima di recuperare l'output ma non capisco cosa :cry:

Qualcuno ha qualche idea di dove/come si può sistemare?
Se servono info più specifiche su qualche aspetto, ditelo e cercherò di essere più preciso possibile.

Grazie

vizzz
19-04-2009, 23:57
prova CR+LF

CH1CC0
20-04-2009, 20:05
LF non viene accettato :(

CH1CC0
21-04-2009, 21:52
Qualche altra idea?

CH1CC0
23-04-2009, 12:36
Risolto, yeppa!!!

L'idea di aggiungere l'LF era giusta, ma andava applicata dall'altra parte :)

Lo script PERL aspetta un "terminatore" prima di recuperare l'output.
Il terminatore di default è il prompt.
Il programma in basic non ha un prompt.

Problema risolto così:
BASIC restituisce l'output e stampa una stringa di terminazione
PERL riconosce la stringa di terminazione e recupera l'output

:D

Grazie