Ver Mensaje Individual
  #3 (permalink)  
Antiguo 14/04/2015, 19:22
electronicarbb
 
Fecha de Ingreso: julio-2013
Mensajes: 13
Antigüedad: 10 años, 10 meses
Puntos: 0
Respuesta: events.js:72 throw er; // Unhandled 'error' event

server.js
Código:
var dgram	=		require("dgram");
var server	=	dgram.createSocket("udp4");
var funcion	=	require("./funciones.js");
var enviar	=	require("./sendUdp.js");

server.on("error", function (err) {
  console.log("server error: " + err.stack);
  server.close();
});

server.on("message", function (msg, rinfo) {

	enviar.sendUdp(rinfo.address,rinfo.port,msg);
	
});

server.on("listening", function () {
  var address = server.address();
  console.log("Servidor Iniciado " +
      address.address + ":" + address.port);
});

server.bind(4096);
sendUdp.js
Código:
function sendUdp(host,port,trama){
	var dgram 		= 	require('dgram');
	var funcion		= 	require("./funciones.js");
	var BaseDeDatos	= 	require("./mysql.js");
	var HOST 		= 	host;
	var PORT 		= 	4096; // Salida del Server
	

	var tramaAComparar	=	trama.toString().split('*');
	if(funcion.calcChecksum(tramaAComparar[0]) == funcion.buscarChecksum(trama)  ){
	
	var client		= dgram.createSocket('udp4');
		client.bind(PORT);
		
		var msj = '>ACK;' + funcion.ParsearSentencia(trama)[0] +';' 
		+ funcion.ParsearSentencia(trama)[1] + ';';
		var msj_mas_checksum = msj + funcion.calcChecksum(msj) +"<";
		
		var message	= new Buffer(msj_mas_checksum.toString());
		console.log("Servidor Responde: " + msj_mas_checksum);
	
		
		client.send(message, 0, message.length, port, HOST, function(err, bytes) {
		if (err) throw err;
		client.close();
		console.log('UDP message sent to ' + HOST +':'+ port);
		BaseDeDatos.grabar(funcion.ParsearSentencia(trama.toString()));
		
				}); 
	


		}
	else{
		console.log(trama);
		var tramaAComparar	=	trama.toString().split('*');
		console.log("Error en Checksum Recibido!! " + 
		funcion.calcChecksum(tramaAComparar[0]) + " " +
		funcion.buscarChecksum(trama));
		
		
	}
	
	



}; 
exports.sendUdp = sendUdp;
funciones.js
Código:
function calcChecksum(cmd)
{
  /* Calcular la suma de comprobación por XOR
   todos los valores de caracteres en la cadena cmd   */ 
   
  var checksum = 0;
  for(var i = 0; i < cmd.length; i++) {
    checksum = checksum ^ cmd.toString().charCodeAt(i);
  }

  // Convertirlo a hexadecimal 
  var tmp, hexsum = Number(checksum).toString(16).toUpperCase();
  if (hexsum.length < 2) {
    hexsum = ("00" + hexsum).slice(-2);
  }
  return tmp = "*" + hexsum;
}

function buscarChecksum(chk){
	var 	 posicion =  chk.toString().indexOf("*");
	return   chk.toString().substring(posicion, posicion + 3);	
} 

function ParsearSentencia(trama){
	var arrays	=	trama.toString().split(';');	
	var fecha	=	20 + trama.toString().substring(8, 10) + "-" + trama.toString().substring(6,8) + "-" +trama.toString().substring(4,6);
	var hora	=	trama.toString().substring(10,12) + ":" + trama.toString().substring(12,14) + ":" + trama.toString().substring(14,16);
	var latitud	=	trama.toString().substring(16,19) + "." + trama.toString().substring(19,24);
	var longitud =  trama.toString().substring(24,28) + "." + trama.toString().substring(28,33);
	var velocidad = trama.toString().substring(33,36);
	var direccion = trama.toString().substring(36,39);
	var posicion =	trama.toString().substring(39,40);
	var edadDato =	trama.toString().substring(40,42);
	var entradas =	trama.toString().substring(42,44);
	var nroEvento = trama.toString().substring(44,46);
	var prescionHorizontal = trama.toString().substring(46,48);
	var dato	=	trama.toString();
	var res	=		[ fecha, hora, latitud, longitud, velocidad, direccion, posicion, edadDato, entradas, nroEvento, prescionHorizontal, dato];
	var resultado = [arrays[1], arrays[2]].concat(res);

	return resultado;
}
exports.calcChecksum = calcChecksum;
exports.buscarChecksum = buscarChecksum;
exports.ParsearSentencia = ParsearSentencia;
mysql.js
Código:
function grabar (trama){
	
	var mysql      = require('mysql');
	var connection = mysql.createConnection({
	host     : 'localhost',
	user     : 'user',
	password : 'paSS',
	database : 'DATABASE'
	});
 
	connection.connect();
	var post  = {id: '', id_equipo: trama[0].substring(3,7) ,fecha_hora: trama[2] + " " + trama[3], fecha_equipo: trama[2], hora_equipo:trama[3] , latitud: trama[4], longitud: trama[5], velocidad: trama[6], direccion: trama[7], entradas: trama[10], trama: trama[13] };
	var query = connection.query('INSERT INTO datogps SET ?', post, function(err, result) {
	//console.log(err);
	});
 
 
	connection.end();
 
}
exports.grabar = grabar;

Última edición por electronicarbb; 14/04/2015 a las 20:01