2009-02-26 8 views
5

Attualmente sto lavorando a un progetto che prevede un commutatore A/V a 4 porte. Questo interruttore può essere controllato tramite RS-232.Interfaccia Javascript con porta seriale RS-232

Il computer che si interfaccia con lo switch esegue Vista. Vorrei creare un gadget della barra laterale con 4 pulsanti: 1 per ogni porta sullo switch. Quando l'utente preme il pulsante, passa a quella porta.

Ho fatto un po 'di googling e sembra che non ci sia un ottimo modo per interfacciare javascript con rs-232.

Qualcuno ha qualche suggerimento per me?

Grazie!

+0

controllare le istruzioni sull'interruttore - a volte c'è una combinazione di tasti che seleziona una delle porte. (ad esempio <1-4>) a parte questo, penso che gli altri abbiano ragione: JS è isolato da quello specifico della macchina. – Tim

+0

Stai parlando di JavaScript eseguito nel browser? –

risposta

6

Penso che sarà necessario aggiungere un livello Java o Active-X in mezzo. JavaScript è abbastanza ben isolato (deliberatamente) dal sistema operativo.

1

Si potrebbe provare a guardare qualcosa come V8 e scrivere un piccolo wrapper per la libreria C per esporre alla VM.

+0

V8 è molto bello btw. –

1

È necessario un componente RS-232 ActiveX che si installa sul sistema e quindi creare un oggetto dal codice javascript nel widget della barra laterale. Nota che non esiste uno standard per creare oggetti da componenti ActiveX, questo è disponibile solo in JScript, l'implementazione Microsoft della lingua che tutti conosciamo come Javascript.

8

Ti piacciono gli hack complicati?

Installare un server web. Usa CGI, Python, PHP, Perl o qualche altro metodo per controllare la porta seriale da una pagina sul server web.

Puntare il controllo sulla pagina Web.

+2

Non è contorto. Chiunque "-1" d è stupido. È molto più semplice della scrittura di codice ActiveX o XPCOM per inviare junk alla porta seriale. –

+0

+1 per l'esterno (o interno) della scatola. Buona risposta! – Moose

+0

+1; non dovrebbe nemmeno essere necessariamente un server web completo, potrebbe essere solo un demone C (sto supponendo che C sia il modo più semplice per accedere alla porta seriale) che ascolta su un socket e dice qualcosa di abbastanza vicino a HTTP per ingannare il browser ;-) – Kieron

2

Non ho una soluzione, ma qui potrebbe essere l'inizio di una.

  1. Firmato applet java darebbe accesso al sistema di
  2. Usa RXTX (Java seriale COM API) per connettersi alle porte seriali
  3. Applet avrebbe bisogno di installare i file nella cartella jre/ext. Riavvia l'app dopo averlo fatto.

Ora, se si sta eseguendo il javascript dalla propria macchina si potrebbe usare HTA di avere pieno accesso al sistema.

+0

La risposta post che inizia 'Non ho una soluzione, ma qui potrebbe essere un inizio di uno' ??? Un commento, al massimo – Mawg

3

Javascript in particolare, o solo dal browser con qualche metodo? E quale browser? (IE o Firefox?) I plugin di Firefox usando XUL + javascript sono piuttosto semplici, anche se dovresti ancora implementare qualcosa in XPCOM (l'equivalente di Mozilla di ActiveX/COM) per lavorare su RS232.

In alternativa, è possibile utilizzare JSDB come un server Web estemporaneo (su una porta alternativa del computer locale). E 'ridicolmente facile da utilizzare la porta RS232 in JSDB:

c:\>jsdb 
js>S=new Stream('com1://115200'); 
com1 
js>S.write('\x00'); // send ASCII character 0 to the serial port 
1 
js> 

Quindi l'implementazione lato browser potrebbe essere solo qualunque sia il vostro bookmark preferito/link/thingy è che collegamenti a http://localhost:9999/comport/1 dove 9999 è la porta # JSDB sta ascoltando e "1" è l'interruttore della porta seriale. Il codice JSDB ascoltava la porta e inviava il comando RS232 appropriato dopo aver analizzato una richiesta GET dal browser.

1

Mi dispiace di essere pubblicato sotto la mia stessa domanda- non mi ero registrato, quindi ora non posso modificarlo.

Volevo implementare un gadget Vista Sidebar per l'attività. sfortunatamente sembra che questi siano semplicemente documenti html con javascript, quindi non sembra che questa sarà una buona soluzione per me. Probabilmente scriverò solo una piccola applicazione .Net o qualcosa del genere.

Grazie per tutto il vostro contributo. Se qualcuno ha ancora delle idee, le prenderò io.

0

AFAIK, runtime del gadget Vista supporta l'utilizzo di controlli ActiveX con firma. Potresti anche essere in grado di utilizzare Java. È possibile creare un wrapper ActiveX su .Net che ha una buona dose di supporto per i dispositivi seriali. Per la maggior parte ActiveX + le comunicazioni seriali sono limitate ai controlli commerciali.

3

RealTerm ha un'interfaccia COM estesa ed è facile da controllare da JavaScript su Windows. Il SourceForge downloads page ha la versione 2.0.0.57 e ha una versione 2.0.0.70.

Esiste un esempio JavaScript nella sottodirectory "examples" che viene installata per impostazione predefinita.

Purtroppo gli esempi JavaScript sembrano essere stati rimossi dalle versioni successive 4 Potrebbe essere ancora possibile farlo, ma non ci sono esempi.