public static IList recibeMensajeBErr(byte[] byteRec) { Array.Resize(ref byteRec, 169); PRN prn = new PRN(); Error err = new Error(); //codPaquete = Conversiones.AgregaCadena(byteRec, 0, 1);// Cod. de Paquete err.CodError = (UInt16)Conversiones.AgregaDigito16(byteRec, 1);// Cod. de ERROR //flagLongFile = (byte)Conversiones.AgregaDigito(byteRec, 3, 1);// FLag LongFile //longFile = (UInt32)Conversiones.AgregaDigito32(byteRec, 4, 4);// LongFile //correo = (byte)Conversiones.AgregaDigito(byteRec, 8, 1);// Correo prn.Nombre1 = Conversiones.AgregaCadena(byteRec, 9, 10); // Usuario 0 prn.Nombre2 = Conversiones.AgregaCadena(byteRec, 19, 10); // Usuario 1 prn.Nombre3 = Conversiones.AgregaCadena(byteRec, 29, 10); // Usuario 2 prn.Port1 = Conversiones.AgregaCadena(byteRec, 39, 15); // Direccion 0 //DUDA: string o int? prn.Port2 = Conversiones.AgregaCadena(byteRec, 54, 15); // Direccion 1 //DUDA: string o int? prn.Port3 = Conversiones.AgregaCadena(byteRec, 69, 15); // Direccion 2 //DUDA: string o int? prn.Telefono1 = Conversiones.AgregaCadena(byteRec, 84, 15); // Telefono 0 prn.Telefono2 = Conversiones.AgregaCadena(byteRec, 99, 15); // Telefono 1 prn.Telefono3 = Conversiones.AgregaCadena(byteRec, 114, 15); // Telefono 2 err.Descripcion = Conversiones.AgregaCadena(byteRec, 129, 40); // Mensaje de ERROR IList menB = new List <object> { err, prn }; return(menB); }
public Error Desempaqueta(byte[] entrada, out byte[] salida, ref int longent, int tipo, ref ushort ordenAckEnvio) { tipoPaqRec = entrada[1]; salida = new byte[0]; int lon = Conversiones.AgregaDigito16(entrada, 4); // dat.GetInt16(dig, 0); if (lon != entrada.Length) { TransacManager.ProtoConfig.NACK_ENV = NackEnv.EMPAQUETADO; return(new Error("Error protocolo: longitud incorrecta.", (int)ErrProtocolo.LONGITUD, 0)); } if (entrada[0] != INI_PAQ) { TransacManager.ProtoConfig.NACK_ENV = NackEnv.EMPAQUETADO; return(new Error("Error protocolo: Inicio de paquete invalido.", (int)ErrProtocolo.INICIO, 0)); } if (entrada[entrada.Length - 1] != FIN_PAQ) { TransacManager.ProtoConfig.NACK_ENV = NackEnv.EMPAQUETADO; return(new Error("Error protocolo: Fin de paquete invalido.", (int)ErrProtocolo.FIN, 0)); } ordenAckEnvio = (ushort)Conversiones.AgregaDigito16(entrada, 2); if (entrada[1] == (byte)EnumPaquete.EOT || entrada[1] == (byte)EnumPaquete.DATOS || entrada[1] == (byte)EnumPaquete.NACK || entrada[1] == (byte)EnumPaquete.ACK) { salida = new byte[longent - 9]; Array.ConstrainedCopy(entrada, 6, salida, 0, longent - 9); longent = longent - 9; return(new Error()); } else if (entrada[1] == (byte)EnumPaquete.DATOSMULTIPLES) { salida = new byte[longent - 15]; secDatosMult = entrada[7]; tamanioDatosMult = Conversiones.AgregaDigito32(entrada, 8); //dat.GetUInt32(dig2, 0); Array.ConstrainedCopy(entrada, 12, salida, 0, longent - 15); longent = longent - 15; return(new Error()); } else { TransacManager.ProtoConfig.NACK_ENV = NackEnv.EMPAQUETADO; salida = null; return(new Error("Error de protocolo: tipo paquete incorrecto.", (int)ErrProtocolo.TIPO_PAQUETE, 0)); } }
//---------(B)---------// public static IList recibeMensajeB(byte[] byteRec) { //Array.Resize(ref byteRec, 245); //ParamConexion paramConex = new ParamConexion(); Agente agente = new Agente(); PRN prn = new PRN(); Error err = new Error(); Terminal ter = new Terminal(); //paramConex.codPaquete = Conversiones.AgregaCadena(byteRec, 0, 1); // tipo de mensaje err.CodError = (ushort)Conversiones.AgregaDigito16(byteRec, 1); // codigo error ter.indiceTelecarga = (byte)Conversiones.AgregaDigito(byteRec, 3); // flag long file ter.longArchivo = (UInt32)Conversiones.AgregaDigito32(byteRec, 4); // long file ter.correo = (byte)Conversiones.AgregaDigito(byteRec, 8); // correo prn.Nombre1 = Conversiones.AgregaCadena(byteRec, 9, 10); //Usuario 0 prn.Nombre2 = Conversiones.AgregaCadena(byteRec, 19, 10); //Usuario 1 prn.Nombre3 = Conversiones.AgregaCadena(byteRec, 29, 10); //Usuario 2 prn.Port1 = Conversiones.AgregaCadena(byteRec, 39, 15); // Direccion 0 prn.Port2 = Conversiones.AgregaCadena(byteRec, 54, 15); // Direccion 1 prn.Port3 = Conversiones.AgregaCadena(byteRec, 69, 15); // Direccion 2 prn.Telefono1 = Conversiones.AgregaCadena(byteRec, 84, 15); // Telefono 0 prn.Telefono2 = Conversiones.AgregaCadena(byteRec, 99, 15); // Telefono 1 prn.Telefono3 = Conversiones.AgregaCadena(byteRec, 114, 15); // Telefono 2 int aux = (int)Conversiones.AgregaDigito32(byteRec, 129); agente.Numero = aux; agente.Nombre = Conversiones.AgregaCadena(byteRec, 133, 40); // Nombre de la agencia agente.Direccion = Conversiones.AgregaCadena(byteRec, 173, 40); // Direccion de la agencia agente.Localidad = Conversiones.AgregaCadena(byteRec, 213, 25); // Localidad de la agencia ter.defLengConc1 = (uint)Conversiones.AgregaDigito16(byteRec, 238); ter.defLengConc2 = (uint)Conversiones.AgregaDigito16(byteRec, 240); ter.statusConc = Conversiones.AgregaCadena(byteRec, 242, 3); IList menB = new List <object> { err, agente, prn, ter }; return(menB); }
public static IList recibeMensajeQErr(byte[] byteRec) { //Array.Resize(ref byteRec, 44); Error err = new Error(); string codPaquete = Conversiones.AgregaCadena(byteRec, 0, 1); //Cod. de paquete Conversiones.AgregaDigito(byteRec, 1); //Tipo de transacción if (byteRec.Length == 44) { err.CodError = (uint)Conversiones.AgregaDigito16(byteRec, 2); //Cod. de error err.Descripcion = Conversiones.AgregaCadena(byteRec, 4, 39); //Descripción } else if (byteRec.Length == 46 || codPaquete == "L") { err.CodError = (uint)Conversiones.AgregaDigito32(byteRec, 1); //Cod. de error err.Descripcion = Conversiones.AgregaCadena(byteRec, 5, 39); //Descripción } else if (byteRec.Length == 49) { err.CodError = (uint)Conversiones.AgregaDigito32(byteRec, 5); //Cod. de error err.Descripcion = Conversiones.AgregaCadena(byteRec, 9, 39); //Descripción } else if (byteRec.Length == 48) { err.CodError = (uint)Conversiones.AgregaDigito16(byteRec, 6); //Cod. de error err.Descripcion = Conversiones.AgregaCadena(byteRec, 8, 40); //Descripción } else if (byteRec.Length == 45) { err.CodError = (uint)Conversiones.AgregaDigito16(byteRec, 2); //Cod. de error err.Descripcion = Conversiones.AgregaCadena(byteRec, 4, 40); //Descripción } IList menQError = new List <object> { err }; return(menQError); }
public static IList recibeMensajeQ2(byte[] byteRec) { Array.Resize(ref byteRec, 29); Error err = new Error(); err.CodError = (uint)Conversiones.AgregaDigito16(byteRec, 2); //Cod. de error IList objsQ2 = new List <object>(); objsQ2.Add(err); byte tipoTrans = (byte)Conversiones.AgregaDigito(byteRec, 1); TransacQuinielaH transaccRta = new TransacQuinielaH(); // En esta clase se llenan campos que no se llenaron al enviarla. Conversiones.AgregaCadena(byteRec, 0, 1); //Letra "Q" transaccRta.TipoTransacc = (byte)Conversiones.AgregaDigito(byteRec, 1); //Tipo de transacción transaccRta.id_transacc = Convert.ToUInt32(Conversiones.AgregaCadena(byteRec, 4, 18)); //Id ticket transaccRta.id_ticket = Transformar.GenerateTicketIdst((transaccRta.id_transacc)); transaccRta.Timehost = new DateTime(Conversiones.AgregaDigito16(byteRec, 24), Conversiones.AgregaDigito(byteRec, 23), Conversiones.AgregaDigito(byteRec, 22), Conversiones.AgregaDigito(byteRec, 26), Conversiones.AgregaDigito(byteRec, 27), Conversiones.AgregaDigito(byteRec, 28)); //Certificado ft = new Certificado(); transaccRta.Protocolo = TransacManager.ProtoConfig.PROTOCOLO; //Si se le pasa con CDs y TARJETA no funciona, aunque pasemos la longitud del protocolo sin contar los CDs y //TARJETA, da la misma excepcion de incompatibilidad de longitudes. //ft.CertificadoQuiniela(Comunicacion.PROTOCOLO, Comunicacion.CLAVE_TARJETA, Comunicacion, ref transaccRta.Certificado, (int)EnumCertificado.TIPOCHECK, // new QuinielaCheck()); objsQ2.Add(transaccRta); return(objsQ2); }
public static IList recibeMensajeQ1_Quiniela(byte[] byteRec) { bool errorProtocolo = false; ParamSorteoQuiniela paramSQ = new ParamSorteoQuiniela(); Error err = new Error(); Conversiones.AgregaCadena(byteRec, 0, 1); //Letra "Q" TIPO_TRANSACC = paramSQ.Tipo = (byte)Conversiones.AgregaDigito(byteRec, 1); //Tipo de juego err.CodError = (UInt16)Conversiones.AgregaDigito16(byteRec, 2); //Cod. de error //Conversiones.AgregaCadena(byteRec, 4, 18);//Id ticket vacío paramSQ.FechaHora = new DateTime(Conversiones.AgregaDigito16(byteRec, 24), Conversiones.AgregaDigito(byteRec, 23), Conversiones.AgregaDigito(byteRec, 22), Conversiones.AgregaDigito(byteRec, 26), Conversiones.AgregaDigito(byteRec, 27), Conversiones.AgregaDigito(byteRec, 28)); paramSQ.EntesCant = (uint)Conversiones.AgregaDigito(byteRec, 29); //Cant de entes paramSQ.ImporteMaxApuesta = (UInt32)Conversiones.AgregaDigito32(byteRec, 30); //Importe Max Apuesta paramSQ.ImporteMinApuesta = (UInt16)Conversiones.AgregaDigito16(byteRec, 34); //Importe Min Apuesta paramSQ.ImporteMaxTicket = (UInt32)Conversiones.AgregaDigito32(byteRec, 36); //Importe Max Ticket paramSQ.ImporteMinTicket = (UInt16)Conversiones.AgregaDigito16(byteRec, 40); //Importe Min Ticket paramSQ.Incremento = (uint)Conversiones.AgregaDigito(byteRec, 42); //Incremento paramSQ.CantApuestas = (uint)Conversiones.AgregaDigito(byteRec, 43); //Cant de apuestas int lonArr = 44; paramSQ.EntesNombres = new string[paramSQ.EntesCant]; for (int i = 0; i <= (paramSQ.EntesCant - 1); i++) { paramSQ.EntesNombres[i] = Conversiones.AgregaCadena(byteRec, lonArr, 10); //Nombre ente lonArr += 10; } paramSQ.SorteosFechas = new DateTime[10]; paramSQ.SorteosFechaCierreOff = new DateTime[10]; paramSQ.SorteosFechasCierre = new DateTime[10]; paramSQ.SorteosNumeros = new ushort[10]; paramSQ.SorteosNombres = new string[10]; paramSQ.SorteosCantCifras = new uint[10]; int[,] bmpran1 = new int[10, 10]; int[,] bmpran2 = new int[10, 10]; paramSQ.SorteoBmpEntes = new byte[10]; paramSQ.SorteosCantLineas = new uint[10]; paramSQ.TextosTicket = new string[20]; int contSor = 0, lenBpm1 = 0, lenBpm2 = 0; while (lonArr < byteRec.Length && byteRec[lonArr] == 0xd1) //datos por horario de sorteo: mañana, tarde, noche { Conversiones.AgregaDigito(byteRec, lonArr); //tipo de juego paramSQ.SorteosFechas[contSor] = new DateTime(Conversiones.AgregaDigito16(byteRec, lonArr + 3), Conversiones.AgregaDigito(byteRec, lonArr + 2), Conversiones.AgregaDigito(byteRec, lonArr + 1)); //Fecha de apertura paramSQ.SorteosFechasCierre[contSor] = new DateTime(Conversiones.AgregaDigito16(byteRec, lonArr + 7), Conversiones.AgregaDigito(byteRec, lonArr + 6), Conversiones.AgregaDigito(byteRec, lonArr + 5), Conversiones.AgregaDigito(byteRec, lonArr + 9), Conversiones.AgregaDigito(byteRec, lonArr + 10), Conversiones.AgregaDigito(byteRec, lonArr + 11)); //Fecha y hora de cierre if (Conversiones.EsFechaHoraValida(byteRec, ref paramSQ.SorteosFechaCierreOff[contSor], lonArr + 12, 7)) { lonArr = lonArr + 7; } else { paramSQ.SorteosFechaCierreOff[contSor] = paramSQ.SorteosFechasCierre[contSor]; } paramSQ.SorteosNumeros[contSor] = (ushort)Conversiones.AgregaDigito32(byteRec, lonArr + 12); //SORTEO <------------------- paramSQ.SorteosNombres[contSor] = Conversiones.AgregaCadena(byteRec, lonArr + 16, 10); //nombre paramSQ.SorteosCantCifras[contSor] = (uint)Conversiones.AgregaDigito(byteRec, lonArr + 26); //cantidad de cifras byte[] bmpr1 = { byteRec[lonArr + 27], byteRec[lonArr + 28], byteRec[lonArr + 29] }; //bmprango1 int[] bmpRangos1 = Conversiones.AgregaRangos(bmpr1); //byte[] bmpRanPrueba = Conversiones.ObtenerBits(bmpr1); //byte[] bmprPrueba = Conversiones.SeteaBits(bmpRanPrueba, bmpRanPrueba.Length); lenBpm1 = bmpRangos1.Length; for (int i = 0; i <= (lenBpm1 - 1); i++) { bmpran1[contSor, i] = bmpRangos1[i]; } byte[] bmpr2 = { byteRec[lonArr + 30], byteRec[lonArr + 31], byteRec[lonArr + 32] }; //bmprango2 int[] bmpRangos2 = Conversiones.AgregaRangos(bmpr2); lenBpm2 = bmpRangos2.Length; for (int i = 0; i <= (lenBpm2 - 1); i++) { bmpran2[contSor, i] = bmpRangos2[i]; } paramSQ.SorteoBmpEntes[contSor] = (byte)Conversiones.AgregaDigito(byteRec, lonArr + 33); //bmpentes //byte[] entes = Conversiones.ObtenerBits(paramSQ.SorteoBmpEntes); paramSQ.SorteosCantLineas[contSor] = (uint)Conversiones.AgregaDigito(byteRec, lonArr + 34); //cant de lineas --> CREO QUE ES BYTE CON LONG DE UN MENSAJE QUE CONTINUA DESPUES if (paramSQ.SorteosCantLineas[contSor] != 0) { paramSQ.TextosTicket[contSor] = Conversiones.AgregaCadena(byteRec, lonArr + 35, ((int)paramSQ.SorteosCantLineas[contSor]) * 40); lonArr += ((int)paramSQ.SorteosCantLineas[contSor]) * 40; } contSor++; lonArr += 35; } if (paramSQ.SorteosNombres[0] == null) { errorProtocolo = true; } Array.Resize(ref paramSQ.TextosTicket, contSor); Array.Resize(ref paramSQ.SorteosFechas, contSor); Array.Resize(ref paramSQ.SorteosFechas, contSor); Array.Resize(ref paramSQ.SorteosFechasCierre, contSor); Array.Resize(ref paramSQ.SorteosFechaCierreOff, contSor); Array.Resize(ref paramSQ.SorteosNumeros, contSor); Array.Resize(ref paramSQ.SorteosNombres, contSor); Array.Resize(ref paramSQ.SorteosCantCifras, contSor); paramSQ.SorteosBmprango1 = Conversiones.ResizeArray(bmpran1, contSor, lenBpm1); paramSQ.SorteosBmprango2 = Conversiones.ResizeArray(bmpran2, contSor, lenBpm2); Array.Resize(ref paramSQ.SorteoBmpEntes, contSor); Array.Resize(ref paramSQ.SorteosCantLineas, contSor); if (lonArr < byteRec.Length && byteRec[lonArr] != 0x00) { paramSQ.JuegoAdicionalCodigo = (byte)Conversiones.AgregaDigito(byteRec, lonArr); paramSQ.JuegoAdicionalNombre = Conversiones.AgregaCadena(byteRec, lonArr + 1, 10); paramSQ.JuegoAdicionalCant = (uint)Conversiones.AgregaDigito(byteRec, lonArr + 11); paramSQ.JuegoAdicionalDigitos = (uint)Conversiones.AgregaDigito(byteRec, lonArr + 12); paramSQ.JuegoAdicionalImporte = (uint)Conversiones.AgregaDigito16(byteRec, lonArr + 13); lonArr += 2; } IList objsQ1; if (errorProtocolo) { err.CodError = (uint)ErrComunicacion.PROTOCOLO; err.Descripcion = "Ocurrió un error en la interpretación del protocolo para parametros de Quiniela."; err.Estado = 2; objsQ1 = new List <object> { err }; } else { objsQ1 = new List <object> { err, paramSQ }; } return(objsQ1); }
/// <summary> /// Convierte array de bytes en mensaje /// </summary> /// <param name="byteRec"> Buffer de bytes a interpretar </param> /// <returns></returns> static public IList DesempaquetaQuiniela(byte[] byteRec) { TransacManager.ProtoConfig.PROTOCOLO = byteRec; Array.Resize(ref TransacManager.ProtoConfig.PROTOCOLO, byteRec.Length); Error err = new Error(); byte cantApu; byte[] apuesta1 = new byte[2]; byte[] apuesta2 = new byte[2]; byte[] apuesta3 = new byte[1]; int limiteApu = 0; int paqIndex = 0; // Header //------- TransacQuinielaH transaccRtaH = new TransacQuinielaH(); transaccRtaH.TipoTransacc = (byte)Conversiones.AgregaDigito(byteRec, 0); // Tipo de Transacción transaccRtaH.Sorteo = (ushort)Conversiones.AgregaDigito16(byteRec, 3); // Sorteo transaccRtaH.NroSecuencia = (uint)Conversiones.AgregaDigito16(byteRec, 5); // Nro Secuencia transaccRtaH.Entes = (byte)Conversiones.AgregaDigito(byteRec, 7); // Entes // Fecha Completa int dia = (int)Conversiones.AgregaDigito(byteRec, 8); // Dia int mes = (int)Conversiones.AgregaDigito(byteRec, 9); // Mes int anio = (int)Conversiones.AgregaDigito16(byteRec, 10); // Año int hora = (int)Conversiones.AgregaDigito(byteRec, 12); // Hora int minuto = (int)Conversiones.AgregaDigito(byteRec, 13); // Minutos int segundo = (int)Conversiones.AgregaDigito(byteRec, 14); // Segundos DateTime fecha = new DateTime(anio, mes, dia, hora, minuto, segundo); transaccRtaH.FechaHora = fecha; cantApu = (byte)Conversiones.AgregaDigito(byteRec, 15); // Cantidad de apuestas transaccRtaH.CantApu = cantApu; // Bodys //------ TransacQuinielaB transaccRtaB = new TransacQuinielaB(); transaccRtaB.NumeroAp1 = new string[cantApu]; transaccRtaB.NumeroAp2 = new string[cantApu]; transaccRtaB.NumeroAp3 = new string[cantApu]; transaccRtaB.RangoDesde1 = new byte[cantApu]; transaccRtaB.RangoDesde2 = new byte[cantApu]; transaccRtaB.RangoHasta1 = new byte[cantApu]; transaccRtaB.RangoHasta2 = new byte[cantApu]; transaccRtaB.TipoApuesta = new byte[cantApu]; transaccRtaB.Importe = new ushort[cantApu]; for (int i = 0; i < cantApu; i++) { apuesta1 = new byte[2]; apuesta2 = new byte[2]; apuesta3 = new byte[1]; transaccRtaB.TipoApuesta[i] = (byte)Conversiones.AgregaDigito(byteRec, 16 + paqIndex); // Tipo de Apuesta // Directa if (transaccRtaB.TipoApuesta[i] == 6 && limiteApu < 6) { apuesta1[0] = (byte)Conversiones.AgregaDigito(byteRec, 17 + paqIndex); apuesta1[1] = (byte)Conversiones.AgregaDigito(byteRec, 18 + paqIndex); transaccRtaB.NumeroAp1[i] = Conversiones.BCDtoString(apuesta1); // Numero Apostado 1 transaccRtaB.RangoDesde1[i] = (byte)Conversiones.AgregaDigito(byteRec, 19 + paqIndex); // Rango Desde transaccRtaB.RangoHasta1[i] = (byte)Conversiones.AgregaDigito(byteRec, 20 + paqIndex); // Rango Hasta transaccRtaB.Importe[i] = (ushort)Conversiones.AgregaDigito16(byteRec, 21 + paqIndex); // Importe limiteApu++; paqIndex += 7; } // Redoblona if (transaccRtaB.TipoApuesta[i] == 7 && limiteApu < 6) { apuesta1[0] = (byte)Conversiones.AgregaDigito(byteRec, 17 + paqIndex); apuesta1[1] = (byte)Conversiones.AgregaDigito(byteRec, 18 + paqIndex); transaccRtaB.NumeroAp1[i] = Conversiones.BCDtoString(apuesta1); // Numero Apostado 1 transaccRtaB.RangoDesde1[i] = (byte)Conversiones.AgregaDigito(byteRec, 19 + paqIndex); // Rango Desde 1 transaccRtaB.RangoHasta1[i] = (byte)Conversiones.AgregaDigito(byteRec, 20 + paqIndex); // Rango Hasta 1 transaccRtaB.Importe[i] = (ushort)Conversiones.AgregaDigito16(byteRec, 21 + paqIndex); // Importe apuesta2[0] = (byte)Conversiones.AgregaDigito(byteRec, 23 + paqIndex); apuesta2[1] = (byte)Conversiones.AgregaDigito(byteRec, 24 + paqIndex); transaccRtaB.NumeroAp2[i] = Conversiones.BCDtoString(apuesta2); // Numero Apostado 2 transaccRtaB.RangoDesde2[i] = (byte)Conversiones.AgregaDigito(byteRec, 25 + paqIndex); // Rango Desde 2 transaccRtaB.RangoHasta2[i] = (byte)Conversiones.AgregaDigito(byteRec, 26 + paqIndex); // Rango Hasta 2 limiteApu += 2; paqIndex += 11; } // Poceada (toma 2 digitos de los 3 nros mas grandes apostados, ordenados de mayor a menor) if (transaccRtaB.TipoApuesta[i] == 11 && limiteApu < 7) { // Toma solo los dos digitos menos significativos Array.Resize(ref apuesta1, 1); Array.Resize(ref apuesta2, 1); // Poceada no maneja rangos Array.Resize(ref transaccRtaB.RangoDesde1, cantApu - 1); Array.Resize(ref transaccRtaB.RangoHasta1, cantApu - 1); Array.Resize(ref transaccRtaB.RangoDesde2, cantApu - 1); Array.Resize(ref transaccRtaB.RangoHasta2, cantApu - 1); apuesta1[0] = (byte)Conversiones.AgregaDigito(byteRec, 17 + paqIndex); transaccRtaB.NumeroAp1[i] = Conversiones.BCDtoString(apuesta1); // Numero Apostado 1 apuesta2[0] = (byte)Conversiones.AgregaDigito(byteRec, 18 + paqIndex); transaccRtaB.NumeroAp2[i] = Conversiones.BCDtoString(apuesta2); // Numero Apostado 2 apuesta3[0] = (byte)Conversiones.AgregaDigito(byteRec, 19 + paqIndex); transaccRtaB.NumeroAp3[i] = Conversiones.BCDtoString(apuesta3); // Numero Apostado 3 transaccRtaB.Importe[i] = (ushort)Conversiones.AgregaDigito16(byteRec, 21 + paqIndex); // Importe limiteApu++; paqIndex += 7; } } IList paq = new List <object> { err, transaccRtaH, transaccRtaB }; return(paq); }