14/04/2015, 19:22
|
| | Fecha de Ingreso: julio-2013
Mensajes: 13
Antigüedad: 11 años, 5 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 |