View Full Version : [web] far leggere/scrivere al client sulla seriale locale
Ciao a tutti!
Ho il seguente problema:
possiedo un registratore di dati di strumentazione topografica del dopoguerra.
Dispongo di un software in dos che voglio dismettere sostituendolo con "qualcosa" che possa girare su un qualsiasi pc (che sia win/osx/linux, magari anche cellulari) e che venga integrato (in un senso da definire meglio) in un applicazione web.
Per questa situazione con cosa mi conviene programmare il tutto?
Io pensavo ad un applet java che lato client scarica i dati via seriale e che in seguito me li manda all'applicazione web (che a sua volta scrive su database).
Si può fare qualcosa del genere?
I dati da passare sono pochi (poche decine di kb)
Idee in merito?
Altra cosa:
non avendo documentazione sull'affare dovrei mettermi a sniffare quello che passa sulla seriale o dovrei cavarmela anche "per tentativi" ?
Vi ringrazio anticipatamente!
Ciao!
Si può fare e immagino senza grossi problemi. Per java ci sono le librerie rxtx che forniscono un'implementazione aggiornata di javacomm. Poichè usano delle controparti native dovrai dispiegare l'applet come applicazione java web start.
Quanto ai dati che passano attraverso la porta devi cercare di capire in che formato sono e poi tradurli in qualcosa di salvabile sulla base dati. Potresti anche prendere e spedirli in blocco salvandoli come blob ma prima o poi dovrai leggerli.
grazie del pronto reply!
Ma facendo l'applet sono apposto anche nel caso utilizzassi un cellulare/palmare come mezzo di trasferimento? (o al limite con poche modifiche adatto il codice in un applicazione a se stante)
se il client usa Internet Explorer credo che si possa fare in JScript analogamente a come faresti in WSH, cioé utilizzando il controllo ActiveX Microsoft (firmato) per le comunicazioni RS2-32:
port = new ActiveXObject("MSCOMMLib.MSComm");
/* numero di porta COM */
port.CommPort = 1;
/*
* impostazioni di comunicazione: baud rate 9600,
* no bit di paritá, 8 bit di dati, 1 bit di stop.
*/
port.Settings = "9600,n,8,1";
/* apri la porta */
port.PortOpen = true;
port.Input = "stringa da inviare alla porta seriale";
l'unico problema é che il client deve avere installato il controllo ActiveX in questione e non so insieme a cosa venga distribuito (se vedi che viene distribuito con un ragionevole sottoinsieme delle edizioni di XP e Vista sei a posto).
comunque non ho mai provato e non so quali misure di sicurezza siano presenti contro questa cosa, spero che si tratti solamente della classica richiesta di conferma per l'esecuzione di un controllo ActiveX (che comunque é firmato e fidato).
activeX è carino per fare queste cose,
ma lo scarto perchè è legato a doppio filo con windows (non voglio prendere questa fregatura :) )
La mia domanda, probabilmente riformulata meglio, è:
i dati devono passare dal registratore al database, che verrà utilizzato tramite un interfaccia web (principalmente, che include la possibilità di utilizzo con dispositivi particolari, tipo cellulari/palmari - al limite rimettendo marginalmente mano sul codice) passando su seriale lato client.
In tale condizione, qual'è il modo migliore di fare?
Applet java?
activeX scartato
Qualcosa con python?
Non sono un programmatore, ma mi posso impegnare.
in questo caso non ti serve l'applet java. Carichi i dati sul database con un'applicazione desktop. Se ti interessa la portabilità del programma lo fai in Java, Python, Squeak, .Net, ci sono un sacco di piattaforme che astraendosi dal sistema operativo ti permettono di approdare a spiagge diverse.
Per la parte di visualizzazione dei dati dovendo includere anche le piattaforme "mobile" io userei un html dinamico - cioè avrai un'applicazione server che distribuisce i dati in formato html fornito tramite il protocollo http - così da usare il browser del dispositivo client o al più una midlet Java ME per cellulari senza browser.
Comunque le opzioni abbondano.
ti ringrazio ancora della risposta.
Cmq non mi piace l'idea dell'applicazione desktop o applicazione specifica per dispositivo. Per due motivi:
- non intendo esporre il database su internet (devo poter fare il trasferimento registratore -> xxxx -> database da remoto). Al limite potrei tirare su una vpn, ma sono punto e accapo, dovendo riconfigurare ogni "client".
- cercavo qualcosa il più possibile cross-platform (e/o cross-browser)
- visto che il grossissimo lavoro viene fatto tramite interfaccia web, se posso cerco di restare coerente, evitando di far fare agli utenti strani giri.
Applicazione desktop non è necessariamente un programma dotato di interfaccia grafica che l'utente deve scaricare, installare e configurare separatamente.
Se prendi Java Web Start puoi ridurre il tutto alla pressione di un pulsante su una pagina web. Inclusa la configurazione della connessione alla base dati con la possibilità di cambiarla quando si vuole senza per questo dover comunicare alcunchè al client.
Ma lo stesso vale per una qualsiasi della piattaforme citate perchè è possibile automatizzare l'intero percorso che va dall'installazione dell'ambiente di esecuzione all'avvio del programma desktop passando per il browser come mero distributore di contenuti statici - che è l'unica cosa che è in grado di fare con decenza.
Non c'è nulla di più cross-browser di un programma che usa il browser come un grosso pulsantone.
Secondo me il modo migliore è un web service + applicazione lato client per la lettura della seriale (l'applicazione si interfaccia con il web service).
Il problema della portabilità qui è davvero molto grosso. Tu parli di cellulari e palmari, ma Java sui cellulari o sui palmari non ha lo stesso framework che ha sul desktop e la portabilità delle applicazioni anche fra vari modelli di cellulari è veramente limitata. Senza contare che le virtual machine per i palmari sono a pagamento e comunque molte offrono un framework proprietario.
Imho questa volta potrebbe davvero essere utile un linguaggio interpretato, ad esempio Python. Il problema si ridurrebbe a trovare un interprete per le varie piattaforme. Poi chiaramente bisognerebbe fare uno studio sulla qualità di questi interpreti e cosa ti permettono realmente di fare.
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.