2009-02-26 20 views
5

Actualmente estoy trabajando en un proyecto que implica un conmutador de A/V de 4 puertos. Este interruptor se puede controlar a través de RS-232.Interfaz Javascript con puerto serie RS-232

La computadora que se conectará con el conmutador ejecuta Vista. Me gustaría crear un gadget de barra lateral que tenga 4 botones: 1 para cada puerto del conmutador. Cuando el usuario presiona el botón, cambia a ese puerto.

He hecho un poco de googlear, y parece que no hay una muy buena forma de interactuar entre javascript y rs-232.

¿Alguien tiene alguna sugerencia para mí?

Gracias!

+0

verifique las instrucciones en el interruptor - a veces hay una combinación de teclas que selecciona uno de los puertos. (por ejemplo, <1-4>) aparte de eso, creo que los otros tienen razón: JS está aislado de cosas específicas de la máquina. – Tim

+0

¿Estás hablando de JavaScript ejecutado en el navegador? –

Respuesta

6

Creo que tendrá que agregar una capa de Java o Active-X en el medio. JavaScript está bastante bien aislado (deliberadamente) del sistema operativo.

1

Puede tratar de buscar algo así como V8 y escribir un pequeño contenedor para la biblioteca C para exponer a la máquina virtual.

+0

V8 es muy agradable por cierto. –

1

Necesita un componente RS-232 ActiveX que instale en el sistema y luego cree un objeto en el código de javascript en su widget de barra lateral. Tenga en cuenta que no existe un estándar para crear objetos a partir de componentes ActiveX, esto solo está disponible en JScript, la implementación de Microsoft del lenguaje que todos conocemos como Javascript.

8

¿Te gustan los hacks complicados?

Instalar un servidor web. Use CGI, Python, PHP, Perl u otro método para controlar el puerto serie desde una página en el servidor web.

Señale el control en la página web.

+2

No es complicado. Quien "-1" d esto es tonto. Es mucho más simple que escribir código ActiveX o XPCOM para enviar basura al puerto serie. –

+0

+1 por fuera (o por dentro) de la caja. ¡Buena respuesta! – Moose

+0

+1; ni siquiera necesariamente tendría que ser un servidor web completo, podría ser simplemente un daemon C (supongo que C es la forma más fácil de acceder al puerto serie) que escucha en un socket y habla algo lo suficientemente cerca de HTTP como para engañar el navegador ;-) – Kieron

2

No tengo una solución, pero aquí podría ser el comienzo de una.

  1. Firmado applet de Java sería dará acceso al sistema
  2. Uso RXTX (Java API COM de serie) para conectar a los puertos serie
  3. applet que necesitaría para instalar archivos en la carpeta jre/ext. Reinicia la aplicación después de hacerlo.

Ahora, si ejecuta el javascript desde su máquina, puede usar HTA para tener acceso completo al sistema.

+0

Publica una respuesta que comienza "No tengo una solución, pero aquí podría ser el inicio de una". Un comentario, a lo sumo – Mawg

3

Javascript en particular, o solo desde el navegador con algún método? ¿Y qué navegador? (¿IE o Firefox?) Los complementos de Firefox que usan XUL + javascript son bastante fáciles, aunque aún tendría que implementar algo en XPCOM (el equivalente de Mozilla de ActiveX/COM) para trabajar con el RS232.

Como alternativa, puede usar JSDB como un servidor web improvisado (en un puerto alternativo de la máquina local). Es ridículamente fácil de usar el puerto RS232 en JSDB:

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

Por lo que su implementación en el lado del navegador podría ser sólo lo que su marcador favorito/enlace/cosita es que los enlaces a http://localhost:9999/comport/1 donde 9999 es el puerto # JSDB está escuchando y "1" es el interruptor del puerto serie. El código JSDB escucharía el puerto y enviaría el comando RS232 apropiado después de analizar una solicitud GET desde el navegador.

1

Lamento publicar debajo de mi propia pregunta: no me había registrado, así que ahora no puedo editarlo.

Quería implementar un accesorio de Vista Sidebar Gadget para la tarea. desafortunadamente, parece que esos son solo documentos html con JavaScript, por lo que no parece que va a ser una buena solución para mí. Probablemente solo escriba una pequeña aplicación .Net o algo así.

Gracias por todas sus aportaciones. Si alguien todavía tiene ideas, las tomaré.

0

AFAIK, el tiempo de ejecución del gadget de Vista admite el uso de controles ActiveX con signo. También puedes usar Java. Puede crear un contenedor ActiveX para .Net que tenga una buena cantidad de soporte para dispositivos serie. En su mayor parte, las comunicaciones en serie de ActiveX + están limitadas a controles comerciales.

3

RealTerm tiene una extensa interfaz COM y es fácil de controlar desde JavaScript en Windows. El SourceForge downloads page tiene la versión 2.0.0.57 y i2cchip.com tiene una versión 2.0.0.70.

Hay un ejemplo de JavaScript en el subdirectorio "ejemplos" que se instala por defecto.

Lamentablemente, los ejemplos de JavaScript parecen haber sido eliminados de las versiones posteriores 4 Puede que aún sea posible hacerlo, pero no hay ejemplos.