/// <summary> /// Recibe una apuesta poceada de Combinada y la empaqueta /// </summary> /// <summary> /// Convierte el mensaje a array de bytes. /// </summary> /// <param name="cabecera">Título de mensaje</param> static public byte[] EmpaquetaQuiniela(TransacQuinielaH cabecera, TransacQuinielaB juegos) { //header byte[] pacHeader = DataConverter.Pack("^bbbSSbbbSbbbb", 0x80, 0x00, 0x01, cabecera.Sorteo, cabecera.NroSecuencia, cabecera.Entes, cabecera.FechaHora.Day, cabecera.FechaHora.Month, cabecera.FechaHora.Year, cabecera.FechaHora.Hour, cabecera.FechaHora.Minute, cabecera.FechaHora.Second, cabecera.CantApu); byte[] pacSal1 = new byte[1024]; int paqIndex = pacHeader.Length; Array.Copy(pacHeader, pacSal1, paqIndex); //bodys int limiteApu = 0; for (int i = 0; i < cabecera.CantApu; i++) { if (juegos.TipoApuesta[i] == 6 && limiteApu < 6) { byte[] apuesta = Conversiones.IntToBCD(Convert.ToUInt16(juegos.NumeroAp1[i]), juegos.NumeroAp1[i].Length); byte[] pacBody = DataConverter.Pack("^bbbbbS", juegos.TipoApuesta[i], apuesta[0], apuesta[1], juegos.RangoDesde1[i], juegos.RangoHasta1[i], juegos.Importe[i]); Array.Copy(pacBody, 0, pacSal1, paqIndex, 7); limiteApu++; paqIndex = paqIndex + 7; } else if (juegos.TipoApuesta[i] == 7 && limiteApu < 6) { byte[] apuesta1 = Conversiones.IntToBCD(Convert.ToUInt16(juegos.NumeroAp1[i]), juegos.NumeroAp1[i].Length); byte[] apuesta2 = Conversiones.IntToBCD(Convert.ToUInt16(juegos.NumeroAp2[i]), juegos.NumeroAp2[i].Length); byte[] pacBody = DataConverter.Pack("^bbbbbSbbbb", juegos.TipoApuesta[i], apuesta1[0], apuesta1[1], juegos.RangoDesde1[i], juegos.RangoHasta1[i], juegos.Importe[i], apuesta2[0], apuesta2[1], juegos.RangoDesde2[i], juegos.RangoHasta2[i]); Array.Copy(pacBody, 0, pacSal1, paqIndex, 11); limiteApu = limiteApu + 2; //i++; paqIndex = paqIndex + 11; } else if (juegos.TipoApuesta[i] == 11 && limiteApu < 7) { byte[] apuesta1 = Conversiones.IntToBCD(Convert.ToUInt16(juegos.NumeroAp1[i]), juegos.NumeroAp1[i].Length); byte[] apuesta2 = Conversiones.IntToBCD(Convert.ToUInt16(juegos.NumeroAp2[i]), juegos.NumeroAp2[i].Length); byte[] apuesta3 = Conversiones.IntToBCD(Convert.ToUInt16(juegos.NumeroAp3[i]), juegos.NumeroAp3[i].Length); byte[] pacBody = new byte[7]; pacBody = DataConverter.Pack("^bbbbbS", juegos.TipoApuesta[i], apuesta1[1], apuesta2[1], apuesta3[1], 0xff, juegos.Importe[i]); Array.Copy(pacBody, 0, pacSal1, paqIndex, 7); limiteApu++; paqIndex = paqIndex + 7; //no se contempla la posibilidad de que halla error de datos, es decir, que un 7 o 6 sean cambiados por alguna razon } //aca se agregarian las otras apuestas if (limiteApu == 7) { break; } } byte[] paqFinal = new byte[0]; paqFinal = DataConverter.Pack("^I", ConstructorMenEnv.TARJETA); Array.Copy(paqFinal, 0, pacSal1, paqIndex, paqFinal.Length); paqIndex = paqIndex + paqFinal.Length; byte[] cds = { 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd };//TO DO - CDs necesarios NO BORRAR / averiguar porque los necesita Array.Copy(cds, 0, pacSal1, paqIndex, 8); paqIndex = paqIndex + 8; Array.Resize(ref pacSal1, paqIndex); pacSal1[1] = Convert.ToByte(paqIndex - 12); TransacManager.ProtoConfig.PROTOCOLO = pacSal1; //ComunicacionOffline.PROTOCOLO = pacSal1; Array.Resize(ref TransacManager.ProtoConfig.PROTOCOLO, pacSal1.Length - 12); //Array.Resize(ref ComunicacionOffline.PROTOCOLO, pacSal1.Length - 12); // Y colocar Ref en la definicion de parametros de este metodo //LibreriaClases.Clases.TransacQuinielaH.Protocolo = pacSal1; return(pacSal1); }