Javascript

En este articulo se describira la manera de utilizar el puerto serial de nuestra PC para enviar y recibir datos (texto, no binario) usando javascript

Para trabajar con el puerto serial utilizaremos ActiveX asi que el codigo que se presentara funcionara unicamente en Internet Explorer


 

Para poder trabajar con el puerto serial tendremos que agregar el objeto que nos dara acceso al puerto:

<object classid="clsid:648A5600-2C6E-101B-82B6-000000000014">
   <param name="_ExtentX" value="1005" />
   <param name="_ExtentY" value="1005" />
    <param name="_Version" value="393216" />
    <param name="BaudRate" value="9600" />
    <param name="CommPort" value="1" />
    <param name="DataBits" value="7" />
    <param name="DTREnable" value="1" />
    <param name="EOFEnable" value="0" />
    <param name="Handshaking" value="0" />
    <param name="InBufferSize" value="1024" />
    <param name="InputLen" value="0" />
    <param name="InputMode" value="0" />
    <param name="NullDiscard" value="0" />
    <param name="OutBufferSize" value="512" />
    <param name="ParityReplace" value="63" />
    <param name="RThreshold" value="1" />
    <param name="RTSEnable" value="0" />
    <param name="ParitySetting" value="0" />
    <param name="SThreshold" value="1" />
    <param name="StopBits" value="0" />
 </object>

Las propiedades mas importantes que tendremos que modificar son:

  • BaudRate. La velocidad que utilizaremos (9600)
  • CommPort. Indica el puerto serial al que queremos conectarnos
  • InputMode. Tipo de datos a transmitir(0=Texto, 1=Binario)

Para ver la explicacion de todas las propiedades del objeto viistar esta pagina

Hay que declarar que funcion se ejecutara cuando el objeto genere un evento. El unico evento es OnComm:

Para abrir el puerto serial hay que cambiar a true la propiedad PortOpen. Antes hay que asignar el puerto que queremos abrir (si no se hizo al declarar el objeto o si se requiere cambiarlo dinamicamente)

objSerie.CommPort = 1; //COM1
objSerie.PortOpen = true;

Para cerrar el puerto cuando ya no vaya a utilizarse: objSerie.PortOpen = false;

Cuando queramos enviar algun dato, hay que guardarlo en el buffer de salida utilizando la propiedad Output:

objSerie.Output = "cadena que queremos enviar";

Como lo declaramos antes, la funcion que se va a ejecutar en el evento OnComm:

function comunicacion() { if ( objSerie.CommEvent == 2 ) //si estamos recibiendo datos var cadena = objSerie.Input; }

Para recibir los datos, unicamente habra que asignar a una variable el contenido del buffer de entrada.

E l evento OnComm se genera cuando se reciben datos, pero tambien cuando se envian. Dependiendo del sentido de los datos (enviar o recibir), la propiedad CommEvent cambia. Dentro de la funcion se revisa si la propiedad es 2, esto quiere decir que se estan recibiendo datos. Cuando la propiedad tiene el valor 1 significa que estamos enviando datos.

En el video se ven 2 ventanas de Internet Explorer, cada una conectandose a un puerto serial distinto. Los puertos COM1 y COM2 fueron puenteados fisicamente. Se trato de emular un chat utilizando los puertos seriales.

 

Category: Javascript