2011-05-22

Comando remoto via WEB per Emtec s800h - 2/3

Prosegue la realizzazione del prototipo di telecomando WEB per il mio Emtec s800h iniziato con questo post.
Cercando a fondo in Internet ho trovato il modo per interagire con il programma centrale di s800h a questo indirizzo, fornendo un file come standard input contenente alcuni comandi questi vengono eseguiti in sequenza, la pagina si riferisce ad altri dispositivi con chipset RealTek molto diffusi tra i prodotti di questo genere. A questo indirizzo dello stesso autore c'è indicato il modo per fornire il contenuto di un file come standard input al suddetto programma ed evitare che smetta di leggere raggiunta la fine del file o peggio ancora che si chiuda per errore.

Bene adesso si passa alla conversione dei comandi, che ho definito quando ho tracciato le zone dei tasti, in comandi interpretabili dal dispositivo.
La shell a disposizione non è delle più avanzate, e non si possono utilizzare array associativi, allora, per il prototipo la velocità non sarà un punto di forza e cedo alla tentazione di semplificarmi la vita con una serie di test condizionali in cascata:

if [ "$CMD" = "0" ] ; then N_CMD="0"
elif [ "$CMD" = "mute" ] ; then N_CMD="m"
elif [ "$CMD" = "off" ] ; then N_CMD="O"
.............
 e via di seguito. Alla fine, se N_CMD è stata valorizzata ne si scrive il valore in aggiunta al file dei comandi.
Il file dei comandi verrà letto da un comando tail -f che legge il contenuto delle ultime 10 righe di un file e prosegue la lettura ogni volta che viene aggiunto contenuto senza finire mai, prima di lanciare il tail -f il file deve essere cancellato e ricreato vuoto. L'output del comando tail -f viene rediretto come input del programma di controllo del dispisitivo.
Le indicazioni, presenti nella pagina del secondo link che ho riportato in inizio di post, non sono tutte corrette per il mio s800h in quanto, provando ad eseguire il comando killall come indicato, il dispositivo si riavvia immediatamente (e la sensazione non è bella); un "cane da guardia" si accorge della chiusura ritenuta imprevista e riavvia. Modificando come indicato lo script che richiama il programma in fase di avvio il gioco funziona.
Nel prossimo post riporterò il codice realizzato dopo averlo scrollato per ripulirlo un poco.

Anticipo che si tratta di un prototipo per mio personale utilizzo e che pubblico al solo scopo di divulgazione tecnologica, e non mi assumo nessuna responsabilità in caso di malfunzionamenti o lesione di contratti di garanzia o altro. Richieste di chiarimenti, nuove idee, modifiche e critiche saranno comunque bene accette.

Prosegue nel prossimo articolo

Nessun commento:

Posta un commento