UNPKG

ci-sdk-n-v10

Version:

SDKN Datafono Modulo

709 lines (654 loc) 35.8 kB
/** * header : Variable requerida para comunicacion con programa de cabeceras de Tramas. */ var header = require('./headersframe'); /** * packageFrame : {} */ packageFrame ={}; /** * tipoTarjeta : Funcion para verificar el Tipo de Tarjeta para ejecutar transaccion con el tipo de cuenta establecido. * @param data * @returns {{}} */ //---------------------------------------------------------------------------------------------------------------------- // Funcion Tipo de Tarjeta --------------------------------------------------------------------------------------------- packageFrame.tipoTarjeta = function (data) { // Visualizacion del largo del dato -------------------------------------------------------------------------------- console.log(data.length); // Extracion del dato de la trama en Posicion 60 con largo de 7 ---------------------------------------------------- var typeCard = extractdat(data,60,5); var typeCardAscci =''; // Conversion del dato desde el arreglo de Hexa hacia Ascci -------------------------------------------------------- for(i=0;i<typeCard.length;i++){ typeCardAscci+=String.fromCharCode(typeCard[i]);} console.log("typeCardAscci : "+typeCardAscci); // Separacion de caracteres por "|"--------------------------------------------------------------------------------- var typeCardArra = typeCardAscci.split("|"); var jsonArrayTC = JSON.stringify(typeCardArra); var jsonTC={}; // Respuesta de la funcion tipo de tarjeta ------------------------------------------------------------------------ jsonTC["ArrayCardType"]=jsonArrayTC; return jsonTC; }; /** * armarTrama : Funcion para el armado de la Trama desde la cabeceras. * @param data * @returns {Array} */ //---------------------------------------------------------------------------------------------------------------------- // Funcion Armado de Trama --------------------------------------------------------------------------------------------- packageFrame.armarTrama = function (data) { console.log("DATA ARMADO DE TRAMA:"+data); //var response = data; // Variable desactivada - Activada para prueba de escritorio interna. ----------------------- var response = JSON.parse(data); // Comando de confirmacion entrada a la funcion de Armado de Trama ------------------------------------------------- console.log('Ejecucion Armando Trama para entrada de datos'); /** * valorcompra = Valor de la compra Total, parametro de entrada desde el usuario. */ var valorcompra = response.Total_compra; /** * iva = Valor del Iva, parametro de entrada desde el usuario. */ var iva = response.IVA; /** * numCaja = Numero de Caja, parametro de entrada desde el usuario. */ var numCaja = response.Caja; /** * NumTrans = Valor o referencia de la transaccion, parametro de entrada desde el usuario. */ var NumTrans = response.transaccion; /** * bsedeviva = Valor de la compra Total - Iva, parametro de entrada desde el usuario. */ var bsedeviva = response.Devolucion_IVA; /** * tipcuenta = Tipo de cuenta, parametro de entrada desde el usuario. */ var tipcuenta = response.tipoCuenta; /** * Trama : Variable de inicio donde se armara la trama. * @type {Array} */ var Trama=[]; //------------------------------------------------------------------------------------------------------------------ // Entrada de parametros de los valores iniciales de la Trama desde las cabeceras, Trama inicial de Datafono.------- for (var i = 0; i < header.SendFrame.InitialFrame.length; i++) { Trama.push(header.SendFrame.InitialFrame[i]);} console.log('Trama Inicial Datafono'); console.log(header.SendFrame.InitialFrame); //------------------------------------------------------------------------------------------------------------------ // Entrada de parametros de los valores iniciales de la Trama desde las cabeceras, Trama valor de Compra.----------- for (var i = 0; i < header.SendFrame.BuyValue.length; i++) { Trama.push(header.SendFrame.BuyValue[i]);} console.log('Trama Valor de Compra'); console.log(header.SendFrame.BuyValue); //Trama.push(0x1C, 0x34, 0x30, 0x00, 0x0C); /*Concatenacion entre la cabecera de la Trama y Valor de Compra establecido, completando los datos con la funcion de calcular Ceros para completar el dato de entrada -----------------------------------------------------------------*/ var aux = calcularCeros(valorcompra,12); /*Adicion de la trama de valor de compra con la trama principal---------------------------------------------------*/ for (var i = 0; i <aux.length; i++) { Trama.push(aux[i]);} //------------------------------------------------------------------------------------------------------------------ // Entrada de parametros de los valores iniciales de la Trama desde las cabeceras, Trama valor de Iva.-------------- for(var i = 0;i<header.SendFrame.IvaValue.length; i++){ Trama.push(header.SendFrame.IvaValue[i]);} console.log('Trama de Valor de Iva'); console.log(header.SendFrame.IvaValue); //Trama.push(0x1C, 0x34, 0x31, 0x00, 0x0C); /*Concatenacion entre la cabecera de la Trama y Valor de Iva, completando los datos con la funcion de calcular Ceros para completar el dato de entrada -------------------------------------------------------------------------------*/ var aux = calcularCeros(iva,12); /*Adicion de la trama de valor de Iva con la trama principal------------------------------------------------------*/ for (var i = 0; i <aux.length; i++) { Trama.push(aux[i]);} //------------------------------------------------------------------------------------------------------------------ // Entrada de parametros de los valores iniciales de la Trama desde las cabeceras, Trama Numero de Caja.------------ for(var i = 0;i<header.SendFrame.NumCash.length; i++){ Trama.push(header.SendFrame.NumCash[i]);} console.log('Trama de Valor de Caja'); console.log(header.SendFrame.NumCash); /*Concatenacion entre la cabecera de la Trama y Numero de Caja, completando los datos con la funcion de calcular vacios para completar el dato de entrada -------------------------------------------------------------------------*/ //Trama.push(0x1C, 0x34, 0x32, 0x00, 0x0A); var aux = calcularVaciar(numCaja,10); /*Adicion de la trama de Numero de Caja con la trama principal----------------------------------------------------*/ for (var i = 0; i <aux.length; i++) { Trama.push(aux[i]);} //------------------------------------------------------------------------------------------------------------------ // Entrada de parametros de los valores iniciales de la Trama desde las cabeceras, Codigo de Respuesta.------------- for(var i = 0;i<header.SendFrame.AnswerCode.length; i++){ Trama.push(header.SendFrame.AnswerCode[i]);} console.log('Trama de Codigo de Respuesta'); console.log(header.SendFrame.AnswerCode); //------------------------------------------------------------------------------------------------------------------ // Entrada de parametros de los valores iniciales de la Trama desde las cabeceras, Codigo de Respuesta Valor.------- //Trama.push(0x1C, 0x34, 0x38 , 0x00 , 0x02); for(var i = 0;i<header.SendFrame.ValueAnswerCode.length; i++){ Trama.push(header.SendFrame.ValueAnswerCode[i]);} //Trama.push(0x20 , 0x20); console.log('Trama de Codigo de Respuesta'); console.log(header.SendFrame.ValueAnswerCode); //------------------------------------------------------------------------------------------------------------------ // Entrada de parametros de los valores iniciales de la Trama desde las cabeceras, Trama de Numero de Transaccion.-- for(var i = 0;i<header.SendFrame.NumberTransaction.length; i++){ Trama.push(header.SendFrame.NumberTransaction[i]);} console.log('Trama de Numero de Transaccion'); console.log(header.SendFrame.NumberTransaction); /*Concatenacion entre la cabecera de la Trama y Numero de Transaccion, completando los datos con la funcion de calcular vacios para completar el dato de entrada ----------------------------------------------------------------*/ //Trama.push(0x1C, 0x35, 0x33, 0x00, 0x0A); var aux = calcularVaciar(NumTrans,10); /*Adicion de la trama de Numero de Transaccion con la trama principal---------------------------------------------*/ for (var i = 0; i <aux.length; i++) { Trama.push(aux[i]);} //------------------------------------------------------------------------------------------------------------------ // Entrada de parametros de los valores iniciales de la Trama desde las cabeceras, Trama de Base de devolucion IVA.- for(var i = 0;i<header.SendFrame.IvaDevolutionValue.length; i++){ Trama.push(header.SendFrame.IvaDevolutionValue[i]);} console.log('Trama de Numero de Devolucion de Iva'); console.log(header.SendFrame.IvaDevolutionValue); /*Concatenacion entre la cabecera de la Trama y Base de devolucion IVA, completando los datos con la funcion de calcular ceros para completar el dato de entrada ----------------------------------------------------------------*/ //Trama.push(0x1C, 0x38, 0x30, 0x00, 0x0C); var aux = calcularCeros(bsedeviva,12); /*Adicion de la trama de Base de devolucion IVA con la trama principal--------------------------------------------*/ for (var i = 0; i <aux.length; i++) { Trama.push(aux[i]);} //------------------------------------------------------------------------------------------------------------------ // Entrada de parametros de los valores iniciales de la Trama desde las cabeceras, Trama de Seleccion de Cuenta.---- for(var i = 0;i<header.SendFrame.CheckType.length; i++){ Trama.push(header.SendFrame.CheckType[i]);} console.log('Trama de Tipo de Cuenta'); console.log(header.SendFrame.CheckType); /*Concatenacion entre la cabecera de la Trama y Seleccion de Cuenta, completando los datos con la funcion de calcular ceros para completar el dato de entrada ----------------------------------------------------------------*/ //Trama.push(0x1C, 0x38, 0x38, 0x00, 0x01) console.log("Tipo cuenta : "+tipcuenta); // Visualizacion importante numero de cuenta, transaccion escogida----- var aux = calcularCeros(parseInt(tipcuenta)); /*Adicion de la trama de Seleccion de Cuenta con la trama principal-----------------------------------------------*/ for (var i = 0; i <aux.length; i++) { Trama.push(aux[i]);} //------------------------------------------------------------------------------------------------------------------ /*Adicion de la trama de finalizacion de mensaje con la trama principal-------------------------------------------*/ Trama.push(header.SendFrame.EndFrame); //------------------------------------------------------------------------------------------------------------------ //Calculo de LRC, concatenandolo con la Trama Finalizada ----------------------------------------------------------- Trama.push(LRC(Trama)); //------------------------------------------------------------------------------------------------------------------ //Visualizacion de la Trama para control de Salida ----------------------------------------------------------------- console.log(Trama.toString(16)); var tostr = []; for (i=0; i<Trama.length;i++){ tostr[i] = Trama[i].toString(16)} console.log(tostr.toString()); console.log("long: ", Trama.length); //------------------------------------------------------------------------------------------------------------------ //Consolidacion de la Trama Final, Variable Trama cargada con dato de Salida---------------------------------------- return Trama; } /** * desarmarTrama = Funcion Desarmado de Trama, Esta funcion es especifica para la desencriptacion de la respuesta de transaccion. * @param data * @returns {{}} */ //---------------------------------------------------------------------------------------------------------------------- // Funcion Desarmado de Trama, Esta funcion es especifica para la desencriptacion de la respuesta de transaccion-------- packageFrame.desarmarTrama = function (data) { // Comando de confirmacion entrada a la funcion de Desarmado de Trama ---------------------------------------------- console.log('Ejecucion Desarmado de Trama para respuesta del sistema'); // Definicion de Variables para la utilizacion de almacenamiento y paso de datos------------------------------------ /** * json = Variable donde se almacenara toda la ejecucion de la respuesta. * @type {{}} */ var json={}; /** * dato = Variable utilizada para la conversion de los datos; desde su origen en Hexadecimal a Ascci. * @type {string} */ var dato=""; //------------------------------------------------------------------------------------------------------------------ // Recorrido de la Trama de Respuesta------------------------------------------------------------------------------- if (data == undefined){ console.log('----------------------------------DATA UNDEFINED------------------------------------------------'); }else{ for (var j = 0; j < data.length; j++) { //console.log("trama[j] : "+ data[j]); //-------------------------------------------------------------------------------------------------------------- //Identificacion del parametros separador, inicio, longitud dentro de la trama de respuesta.-------------------- if(data[j] == header.SendFrame.Separator[0]){ /** * codigo = Variable para recibir el parametro de inicio de cada encabezado de la trama. * @type {*[]} */ var codigo = [data[j+1], data[j+2]]; /** * codigoAscii = Variable utilizada para la conversion de datos de la respuesta a Ascci. * @type {string} */ var codigoAscii = ""; // Conversion a Ascci del Codigo de encabezado para indenticacion de cabeceras------------------------------ for(i=0;i<codigo.length;i++){ codigoAscii+=String.fromCharCode(codigo[i]);}; /** * codigoInt = Variable utilizada para la conversion de la variable codigo en entero. * @type {Number} */ var codigoInt = parseInt(codigoAscii); var length = (10*parseInt(data[j+3], 10))+parseInt(data[j+4], 10); //---------------------------------------------------------------------------------------------------------- /* Seleccion de respuesta, dependiendo del codigo de la cabecera, longitud de respuesta y parametro de separacion se encuentra dentro de la trama de respuesta---------------------------------------------------*/ switch(codigoInt){ //------------------------------------------------------------------------------------------------------ //Identificacion de Codigo de Respuesta en la Trama de Respuesta --------------------------------------- case 1: for(var i=(j+5);i<(j+5+length);i++){ dato+=String.fromCharCode(data[i]);} json["AutorizationCode"]=dato; console.log("AutorizationCode "+dato); dato=""; break; //------------------------------------------------------------------------------------------------------ // Identificacion del Valor del Total en la Trama de Respuesta------------------------------------------ case 40: for(var i=(j+5);i<(j+5+length);i++){ dato+=String.fromCharCode(data[i]);} json["Total"]=dato; console.log("Total "+dato); dato=""; break; //------------------------------------------------------------------------------------------------------ // Identificacion del Valor del Iva en la Trama de Respuesta------------------------------------------ case 41: for(var i=(j+5);i<(j+5+length);i++){ dato+=String.fromCharCode(data[i]);} json["IVA"]=dato; console.log("IVA "+dato); dato=""; break; //------------------------------------------------------------------------------------------------------ // Identificacion del Numero de Caja en la Trama de Respuesta------------------------------------------ case 42: for(var i=(j+5);i<(j+5+length);i++){ dato+=String.fromCharCode(data[i]);} json["CashNumber"]=dato; console.log("CashNumber "+dato); dato=""; break; //------------------------------------------------------------------------------------------------------ // Identificacion del Numero de Ticket en la Trama de Respuesta----------------------------------------- case 43: for(var i=(j+5);i<(j+5+length);i++) { dato += String.fromCharCode(data[i]); } json["TicketNumber"]=dato; console.log("TicketNumber "+dato); dato=""; break; //------------------------------------------------------------------------------------------------------ // Identificacion del RRN en la Trama de Respuesta------------------------------------------------------ case 44: for(var i=(j+5);i<(j+5+length);i++){ dato+=String.fromCharCode(data[i]); } json["RRN"]=dato; console.log("RRN "+dato); dato=""; break; //------------------------------------------------------------------------------------------------------ // Identificacion del numero de Terminal en la Trama de Respuesta--------------------------------------- case 45: for(var i=(j+5);i<(j+5+length);i++){ dato+=String.fromCharCode(data[i]); } json["TerminalNumber"]=dato; console.log("TerminalNumber "+dato); dato=""; break; //------------------------------------------------------------------------------------------------------ // Identificacion de la fecha de transaccion en la Trama de Respuesta----------------------------------- case 46: for(var i=(j+5);i<(j+5+length);i++){ dato+=String.fromCharCode(data[i]);} json["TransactionDate"]=dato; console.log("TransactionDate "+dato); dato=""; break; //------------------------------------------------------------------------------------------------------ // Identificacion de la hora de transaccion en la Trama de Respuesta------------------------------------ case 47: for(var i=(j+5);i<(j+5+length);i++){ dato+=String.fromCharCode(data[i]);} json["TransactionHour"]=dato; console.log("TransactionHour "+dato); dato=""; break; //------------------------------------------------------------------------------------------------------ // Identificacion del Codigo de Respuesta en la Trama de Respuesta-------------------------------------- case 48: for(var i=(j+5);i<(j+5+length);i++){ dato+=String.fromCharCode(data[i]);} json["ResponseCode"]=dato; console.log("ResponseCode "+dato); dato=""; break; //------------------------------------------------------------------------------------------------------ // Identificacion de la franquicia en la Trama de Respuesta--------------------------------------------- case 49: for(var i=(j+5);i<(j+5+length);i++){ dato+=String.fromCharCode(data[i]); } json["Franchise"]=dato; console.log("Franchise "+dato); dato=""; break; //------------------------------------------------------------------------------------------------------ // Identificacion del Tipo de Cuenta en la Trama de Respuesta------------------------------------------- case 50: for(var i=(j+5);i<(j+5+length);i++){ dato+=String.fromCharCode(data[i]);} json["AccountType"]=dato; console.log("AccountType "+dato); dato=""; break; //------------------------------------------------------------------------------------------------------ // Identificacion del numero de Cuotas en la Trama de Respuesta----------------------------------------- case 51: for(var i=(j+5);i<(j+5+length);i++){ dato+=String.fromCharCode(data[i]);} json["PaymentNumber"]=dato; console.log("PaymentNumber "+dato); dato=""; break; //------------------------------------------------------------------------------------------------------ // Identificacion de los ultimos cuatro digitos de la Tarjeta en la Trama de Respuesta------------------ case 54: for(var i=(j+5);i<(j+5+length);i++){ dato+=String.fromCharCode(data[i]);} json["Last4DigitsInCard"]=dato; console.log("Last4DigitsInCard "+dato); dato=""; break; //------------------------------------------------------------------------------------------------------ // Mensaje de Error en la Trama de Respuesta------------------------------------------------------------ case 61: for(var i=(j+5);i<(j+5+length);i++){ dato+=String.fromCharCode(data[i]);} json["MsgError"]=dato; console.log("MsgError "+dato); dato=""; break; //------------------------------------------------------------------------------------------------------ // Identificacion de codigo especial en la Trama de Respuesta------------------------------------------- case 62: for(var i=(j+5);i<(j+5+length);i++){ dato+=String.fromCharCode(data[i]);} json["HolderName"]=dato; console.log("HolderName "+dato); dato=""; break; //------------------------------------------------------------------------------------------------------ // Identificacion del Valor del Crythogram en la Trama de Respuesta------------------------------------- case 63: for(var i=(j+5);i<(j+5+length);i++){ dato+=String.fromCharCode(data[i]);} json["Crythogram"]=dato; console.log("Crythogram "+dato); dato=""; break; //------------------------------------------------------------------------------------------------------ // Identificacion del Valor del TVR en la Trama de Respuesta-------------------------------------------- case 64: for(var i=(j+5);i<(j+5+length);i++){ dato+=String.fromCharCode(data[i]);} json["TVR"]=dato; console.log("TVR "+dato); dato=""; break; //------------------------------------------------------------------------------------------------------ // Identificacion del Valor del TSI en la Trama de Respuesta-------------------------------------------- case 66: for(var i=(j+5);i<(j+5+length);i++){ dato+=String.fromCharCode(data[i]); } json["TSI"]=dato; console.log("TSI "+dato); dato=""; break; //------------------------------------------------------------------------------------------------------ // Identificacion del Valor del AID en la Trama de Respuesta-------------------------------------------- case 67: for(var i=(j+5);i<(j+5+length);i++){ dato+=String.fromCharCode(data[i]);} json["AID"]=dato; console.log("AID "+dato); dato=""; break; //------------------------------------------------------------------------------------------------------ // Identificacion de la etiqueta en la Trama de Respuesta----------------------------------------------- case 68: for(var i=(j+5);i<(j+5+length);i++){ dato+=String.fromCharCode(data[i]);} json["Label"]=dato; console.log("Label "+dato); dato=""; break; //------------------------------------------------------------------------------------------------------ // Identificacion del Valor del BIN en la Trama de Respuesta-------------------------------------------- case 75: for(var i=(j+5);i<(j+5+length);i++){ dato+=String.fromCharCode(data[i]);} json["BINTarget"]=dato; console.log("BINTarget "+dato); dato=""; break; //------------------------------------------------------------------------------------------------------ // Identificacion de la fecha vencimiento en la Trama de Respuesta-------------------------------------- case 76: for(var i=(j+5);i<(j+5+length);i++){ dato+=String.fromCharCode(data[i]);} json["DueDate"]=dato; console.log("DueDate "+dato); dato=""; break; //------------------------------------------------------------------------------------------------------ // Identificacion de codigo de comercio en la Trama de Respuesta---------------------------------------- case 77: for(var i=(j+5);i<(j+5+length);i++){ dato+=String.fromCharCode(data[i]);} json["UniqueTradeCode"]=dato; console.log("UniqueTradeCode "+dato); dato=""; break; //------------------------------------------------------------------------------------------------------ // Identificacion de direccion en la Trama de Respuesta------------------------------------------------- case 78: for(var i=(j+5);i<(j+5+length);i++){ dato+=String.fromCharCode(data[i]);} json["LocalAddress"]=dato; console.log("LocalAddress "+dato); dato=""; break; //------------------------------------------------------------------------------------------------------ // Identificacion del Valor del IAC en la Trama de Respuesta-------------------------------------------- case 80: for(var i=(j+5);i<(j+5+length);i++){ dato+=String.fromCharCode(data[i]);} json["IAC"]=dato; console.log("IAC "+dato); dato=""; break; //------------------------------------------------------------------------------------------------------ // Identificacion del Valor de Cierre en la Trama de Respuesta------------------------------------------ case 80: for(var i=(j+5);i<(j+5+length);i++){ dato+=String.fromCharCode(data[i]);} json["IAC"]=dato; console.log("IAC "+dato); dato=""; break; //------------------------------------------------------------------------------------------------------ case 87: for(var i=(j+5);i<(j+5+length);i++){ dato+=String.fromCharCode(data[i]);} json["typeCardCash"]=dato; console.log("typeCardCash "+dato); dato=""; break; //-------------------------------------------------------------------------------------------------- case 90: for(var i=(j+5);i<(j+5+length);i++){ dato+=String.fromCharCode(data[i]);} json["NumberClose"]=dato; console.log("NumberClose "+dato); dato=""; break; } } } // Condicional para tener una respuesta completa-------------------------------------------------------------------- if(json=={}){ json=false;} // Parametro completo para comunicacion de la respuesta de la transaccion------------------------------------------- return json; } } packageFrame.ProcesarTrama = function (trama, cb) { var returnValue = 0; var result= new Array(); try{ var crc=0; if(trama[0]==2) { var long = ((trama[1] & 0xf0)>>4)*1000; long += (trama[1] & 0x0F) *100; long += ((trama[2] & 0xf0)>>4)*10; long += ((trama[2] & 0x0f))*1; //_global.log.write("long:{0}".format(long)) for(i=1; i<trama.length-1; i++) { crc = crc ^ trama[i]; } if(crc == trama[trama.length-1]) { var data = trama.slice(3, long + 3); //_global.log.write("data length:{0}".format(data.length)) var buffer = new Buffer(data); var tHeader = buffer.slice(0, 10); var pHeader = buffer.slice(10, 17); var presentation = pHeader.toString('ascii', 0, pHeader.length); //_global.log.write("presentation:{0}".format(presentation)) var isProcess=true; var index=17; while (isProcess) { if(index<buffer.length) { var separador = buffer.slice(index, index+1); var nCampo = buffer.slice(index+1, index+3); var lCampo = buffer.slice(index+3, index+5); var campo = nCampo.toString('ascii', 0, nCampo.length); var longCampo = lCampo.readUInt16BE(0, 2); var info = buffer.slice(index+5, index+5+longCampo); var strInfo = info.toString('ascii', 0, info.length); index+=5+longCampo; //_global.log.write("campo:{0}:longCampo:{1}:info:{2}".format(campo, longCampo, strInfo)) result.push({presentation: presentation, campo: campo, strInfo: strInfo}) } else { isProcess = false; //_global.log.write("Fin") } } returnValue = 0; } else { returnValue=2; } } else { returnValue=1; } } catch(err){ returnValue=106; } cb(returnValue, result); } /** * function extractdat = Funcion de extraccion de datos de la trama de llegada, utilizada en la funcion tipoTarjeta. * @param data * @param index * @param length * @returns {Array} */ function extractdat(data, index, length) { var dataR = []; for (i=0;i<length;i++) { dataR[i] = data[i + index];} return dataR; } /** * function LRC = Funcion para calcular con la trama el LCR * @param Data * @returns {number} * @constructor */ function LRC(Data){ var lrc = 0; for (var i = 1; i < Data.length ; i++) { lrc ^= Data[i];} return lrc; } /** * calcularCeros = Funcion para completar ceros con los datos de entrada para la ejecucion de las funcionalidades del Datafono. * @param num * @param lenghtstr * @returns {Array} */ calcularCeros = function (num, lenghtstr) { var i; var str = ""; xs = String(num); for (i = 0; i <lenghtstr - xs.length; i++){ str += '0';} str += xs; var aux = []; for (var i = 0 ; i < str.length; i++){ aux.push(Number(str.charCodeAt(i)));} return aux; } /** * calcularVaciar = Funcion para completar vacios con los datos de entrada para la ejecucion de las funcionalidades del Datafono. * @param num * @param lenghtstr * @returns {Array} */ calcularVaciar = function (num, lenghtstr) { var i; var str = ""; xs = String(num); str += xs; var aux = []; for (var i=0 ; i< str.length;i++) { aux.push(Number(str.charCodeAt(i)));} for (var i = 0; i < lenghtstr-xs.length; i++){ aux.push(0x20);} return aux; } exports.packageFrame = packageFrame; //---------------------------------------------------------------------------------------------------------------------- // Opcion de activacion para prueba de escritorio en NodeJS------------------------------------------------------------- //module.exports = packageFrame; //---------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------- //-------------------------------------------------Fin Codigo-----------------------------------------------------------