|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Nov 2002
Città: Milano
Messaggi: 5375
|
[BASIC/TELNET/PERL] perl interroga via telnet un programmino in basic
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 ![]() 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
__________________
CiAO |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Mar 2006
Città: Bergamo
Messaggi: 2499
|
prova CR+LF
__________________
![]() |
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Nov 2002
Città: Milano
Messaggi: 5375
|
LF non viene accettato
![]()
__________________
CiAO |
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Nov 2002
Città: Milano
Messaggi: 5375
|
Qualche altra idea?
__________________
CiAO |
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Nov 2002
Città: Milano
Messaggi: 5375
|
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 ![]() Grazie
__________________
CiAO |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 01:53.