//Funcion que envia la informacion con la lectura del chip al Autorizador void EnviarDatosChip(object Parametro) { DatosLector obj = (DatosLector)Parametro; byte[] DatosLeidos = obj.ArregloBytes; try { if (DatosLeidos.Length == 148) { byte[] Trama = new byte[147]; for (int y = 0; y < DatosLeidos.Length - 1; y++) { Trama[y] = DatosLeidos[y]; } ExtraerInformacionRecibidaDelDispositivoDTI(Trama); } else if (DatosLeidos.Length == 6) { byte[] Trama = new byte[5]; for (int y = 0; y < DatosLeidos.Length - 1; y++) { Trama[y] = DatosLeidos[y]; } ExtraerInformacionRecibidaDelDispositivoDTI(Trama); } else { throw new Exception("La lectura del chip no se hizo correctamente"); } } catch (Exception ex) { LogCategorias.Clear(); LogCategorias.Agregar("SeguimientoCodigoDTI"); LogPropiedades.Clear(); LogPropiedades.Agregar("Mensaje", ex.Message); Fabrica.LogIt.Loguear("Error recuperando ROM chip", LogPropiedades, LogCategorias); } }
private void PuertoTerminal_DataReceived(object sender, SerialDataReceivedEventArgs e) { try { string X2 = ""; byte[] ODatosChip, Trama; DatosLector OChipTemporal = new DatosLector(); System.Threading.Thread.Sleep(Delay); Longitud = PuertoTerminal.BytesToRead; ODatosChip = new byte[Longitud]; PuertoTerminal.Read(ODatosChip, 0, Longitud); PuertoTerminal.DiscardInBuffer(); PuertoTerminal.DiscardOutBuffer(); Trama = new byte[Longitud]; if (Longitud <= 0) { PuertoTerminal.RtsEnable = true; System.Threading.Thread.Sleep(10); PuertoTerminal.RtsEnable = false; return; } for (int y = 0; y < ODatosChip.Length; y++) { Trama[y] = ODatosChip[y]; } for (int i = 0; i < ODatosChip.Length; i++) { X2 += ODatosChip[i].ToString("X2"); } VerifySizeFile();//Verifico el tamaño del archivo de texto con las tramas if ((ODatosChip.Length == 6) && (Trama[5] == 0x7E)) { SWRegistro.WriteLine(DateTime.Now + " |N° Bytes Recibidos " + ODatosChip.Length.ToString() + "|" + X2); SWRegistro.Flush(); OChipTemporal.ArregloBytes = ODatosChip; System.Threading.ParameterizedThreadStart Parametro = new ParameterizedThreadStart(EnviarDatosChip); System.Threading.Thread Hilo = new System.Threading.Thread(Parametro); Hilo.Start(OChipTemporal); Hilo.Join(); } else if ((ODatosChip.Length == 148) && (Trama[147] == 0x7E)) { SWRegistro.WriteLine(DateTime.Now + " |N° Bytes Recibidos " + ODatosChip.Length.ToString() + "|" + X2); SWRegistro.Flush(); OChipTemporal.ArregloBytes = ODatosChip; System.Threading.ParameterizedThreadStart Parametro = new ParameterizedThreadStart(EnviarDatosChip); System.Threading.Thread Hilo = new System.Threading.Thread(Parametro); Hilo.Start(OChipTemporal); Hilo.Join(); } else { if (ODatosChip.Length >= 2) { PuertoTerminal.RtsEnable = true; System.Threading.Thread.Sleep(10); PuertoTerminal.RtsEnable = false; Byte[] Lector = new Byte[5] { 0x49, 0x3F, ODatosChip[1], 0x15, 0x7E }; X2 = ""; for (int i = 0; i < Lector.Length; i++) { X2 += Lector[i].ToString("X2"); } SWRegistro.WriteLine(DateTime.Now + " |Lectura incompleta del LSIB4 (" + ODatosChip.Length + ") Bytes: Reintento de Lectura LSIB4 " + "|" + X2); SWRegistro.Flush(); PuertoTerminal.Write(Lector, 0, Lector.Length); System.Threading.Thread.Sleep(Delay); } } } catch (Exception ex) { LogCategorias.Clear(); LogCategorias.Agregar("SeguimientoCodigoDTI"); LogPropiedades.Clear(); LogPropiedades.Agregar("Mensaje", ex.Message); Fabrica.LogIt.Loguear("Error recuperando ROM chip PuertoTerminal_DataReceived", LogPropiedades, LogCategorias); } }