Ciao a tutti,
questo è il mio primo post, spero di averlo inserito nella sezione corretta del forum.
Una breve presentazione, mi occupo essenzialmente di elettronica (hardware e firmware per microcontrollori e alla necessità scrivo anche software su sistemi tipo Windows/Linux) e vorrei riuscire a modificare un'applicazione che gira su un OS Linux basato su linea di comando in modo tale da aggiungere una interfaccia utente di tipo web.
Il sistema embedded che sto analizzando non ha un OS GUI based (stile Windows oppure Ubuntu tanto per fare un esempio), ma è solo a linea di comando (Linux distro Debian), quindi per avere una interfaccia utente "windows-like" pensavo di appoggiarmi ad una pagina web che per i motivi che verranno illustrati dovrebbe essere di tipo dinamico. Operando in questo modo dovrei riuscire ad esporre all'utente una pagina web che sarà in genere popolata con pulsanti, campi di testo e immagini utilizzate essenzialmente come indicatori di stato (led luminosi).
L'applicazione che controlla le attività della mia macchina attualmente lavora standalone ovvero in modo indipendente da tutto il resto; poichè una pagina web (di qualcunque natura esso sia, statica oppure dinamica) per sua natura è asincrona devo trovare un qualche meccanismo per fare comunicare fra loro in modo bidirezionale queste due entità (programma in C e interfaccia utente stile pagina web).
Inizio inciso
--------------
Esistono sistemi (Microchip, Arduino) che hanno uno stack HTTP integrato che fa già tutto (interazione con codice applicativo attraverso funzioni di callback associate agli eventi sulla pagina web), questa soluzione attualmente viene utilizzata per altri progetti ed è già funzionante, ma quello che mi interessa adesso consiste nel capire se si può fare una cosa simile anche con OS standard stile Windows oppure Linux generando una soluzione "universale" che potesse essere di libero utilizzo e che consentisse di aggiungere ad una applicazione stile linea di comando una interfaccia basata su pagine web.
Fine inciso
-------------
A questo punto ho pensato ad una cosa di questo tipo, chiedo quindi a voi esperti se l'idea è fattibile oppure se devo cambiare strada.
Poichè il mio sistema embedded ha una OS Linux posso sfruttare il suo web server integrato per fare girare una o più pagine web che saranno in sostanza il modo con cui esporre all'utente l'interfaccia al mio device hardware.
Quando l'utente, ad esempio, preme un pulsante io devo poter attivare una risorsa hardware, ad esempio, un uscita a relay. Il problema è come poter notificare questo all'applicazione in C che gira sulla macchina e che si occupa di gestirne il funzionamento.
Come prima idea pensavo di aprire un socket bidirezionale con un Web Service e di utilizzare lo stesso Web Service con la pagina web. La mia idea quindi consiste nel notificare al Web Service che l'utente ha premuto un certo pulsante sul Web Form e attraverso socket comunicare dal Web Service alla mia applicazione questo evento. A questo punto l'applicazione eseguirà alcuni compiti e dovrà resistituire una risposta alla pagina Web passando attraverso lo stesso Web Service.
In sostanza pensavo (ma non so se si possa fare e se l'ho espresso in modo corretto) di usare un Web Service come ponte di collegamento fra questi due mondi che per loro natura sono fra loro asincroni ed in particolare fra il mio hardware o meglio l'applicazione in C che lo gestisce e la pagina web che mi piacerebbe utilizzare come GUI dato che il mio OS non ha un desktop manager e quindi la possibilità di programmare a finestre (l'hardware non dispone neppure di uscita video, quindi nisba monitor).
Spero di avere espresso in modo chiaro quello che è il mio scopo, se non l'ho fatto in modo eauriente cercherò di esemplificare in modo migliore il tutto, ringrazio comunque fin da ora chi avrà la voglia ed il tempo di leggere quanto sopra e darmi una indicazione in merito.
Grazie a tutti!
The Grinch