ci-sdk-n-v10
Version:
SDKN Datafono Modulo
709 lines (654 loc) • 35.8 kB
JavaScript
/**
* 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-----------------------------------------------------------