Revista Tecnología

SerialPort on Nodejs :)

Publicado el 17 febrero 2013 por Godieboy @godi

He andado pegandome un cierre con nodejs y su modulito de serialport, y al final gano el modulo jaja, el problema era del aparato de donde andaba queriendo sacar la informacion le enviaba un salto de linea segun yo era “\n” pero ni madres es “\r” 3 dias queriendo encontrar una explicacion de por que dicha maquinita si jalaba bien con minicom y con el serialport de nodejs no y pues era por eso por la \r.

Bueno para instalar el serialport del node ocupan tener instalado el npm (Node Package Manager), y el serialport los instalan bien facil asi en la consola:

npm install serialport

y listo que facil, es instalar con el npm, luego si queremos enviar comandos al puerto solo tenemos que comandos enviar y como enviarlos, pero mi ejemplo tenia que enviar una “W” y un salto de linea entonces lo que hago es lo siguiente:

//creo una objeto tipo serialport
var sp = new SerialPor(DEV,{baudrate:BAUDRATE,buffersize:BUFFER,parser:serialport.parsers.readline('\n')});
sp.write("W\r");

En el codigo ese incializo el serialport y luego le envio el comando W\r lo que viene siendo algo asi como devuelveme el peso y un enter la \r es el enter por codigo ascii, despues de eso el programa de la pesa regresa el peso a la computadora y luego lo proceso.

para esto tengo un listener que es propio del serial port es un metodo que ya viene definido en las librerias del serial port que esta a la espera de que el puerto le envie algun dato entonces para saber si nos regresa datos ponemos el siguiente codigo:


sp.on("data",function(data){
readData = data.toString();
if(readData.indexOf('S') == -1){
socket.emit('some',{data:readData});
}
});

Lo que hago ahi es simple, si los datos que me regresa la pesa existe una S creo una notificacion para los clientes conectados al socket y lo envio al metodo “some” con un json que contiene los datos, en el parametro “data”, para luego procesarlo en el cliente conectado.

Tambien el serialport tiene listeners para saber si ocurrio un error, si se serro el puerto si se abrio aqui estan las formas de generar los listeners es igual que con el listener de “data”:

sp.on(“error”,function(err){});
sp.on(“end”,function(){});
sp.on(“close”,function(){});
sp.on(“open”,function(){});

Dependiendo de como lo ocupes, los ejemplos que vienen en la documentacion oficial son con arduino pero se puede manipular cualquier aparato que genere un puerto serial, una impresora, una pesa, un modem de telcel, el unico asi inconveniente que habria es crear las librerias o drivers pero si te animas aprenderas mas.

No se si queda claro este post hace como 5 meses que lo iba a publicar pero por falta de tiempo no pude asi que si no se entiende pueden preguntarme a ver si se que ondas, ocurrieron muchos errores al querer utilizarlo no recuerdo bien cueles fueron pero los fui resolviendo asi que tengo algo de esa experiencia.

 


Volver a la Portada de Logo Paperblog

Revista