private void puerto_DataReceived(object oo, SerialDataReceivedEventArgs serialDataReceivedEventArg) { if (puerto.BytesToRead >= 1024) { puerto.Read(TramaRecibida, 0, 1024); Trama recibida = new Trama(TramaRecibida); switch (recibida.getTipo()) { //mensaje case 0xb: Task.Factory.StartNew(() => recibiendoMensaje(recibida)); break; //archivo case 0xa: Task.Factory.StartNew(() => recibiendoArchivo(recibida)); break; //informacion case 0xf: if (recibida.getTamañoMensaje() == 0) { //informacion de mensajes mensajes.Add(new Mensaje(recibida.getIdentificador(), recibida.getNumeroPartes())); } else { //informacion de archivos Archivo temp = new Archivo(recibida.getIdentificador(), recibida.getNumeroPartes(), recibida.getMensajeString(), directorioDeGuardado); archivos.Add(temp); Console.WriteLine(directorioDeGuardado + "//" + recibida.getMensajeString()); onLlegoArchivo(temp.getFullPath(), 0.ToString(), recibida.getIdentificador().ToString(), "20"); } break; default: Console.WriteLine("tipo de trama no valida " + recibida.getCabezeraString()); break; } } }
public void recibiendoArchivo(Trama recibida) { int tamaño = archivos.ToArray().Length; for (var i = 0; i < tamaño; i++) { Archivo item = archivos.ToArray()[i]; if (!item.getEstaLleno()) { if (item.getIdentificador() == recibida.getIdentificador()) { //item.insertarMensaje(recibida.getOrden(), recibida.getMensajeString()); Console.WriteLine("#######"); Console.WriteLine("trama recibida " + recibida.getCabezeraString()); Console.WriteLine(item.getIdentificador().ToString() + " " + item.getPorcentajeDeAvance().ToString()); Console.WriteLine("#######"); item.insertarBytes(recibida.getOrdenInt(), recibida.getTramaMensaje()); onLlegoArchivo("", item.getPorcentajeDeAvance().ToString(), item.getIdentificador().ToString(), "21"); if (item.getEstaLleno()) { item.identificador = 555; } } } } }
public void recibiendoMensaje(Trama recibida) { foreach (var item in mensajes) { if (!item.getEstaLleno()) { if (item.getIdentificador() == recibida.getIdentificador()) { item.insertarMensaje(recibida.getOrdenInt(), recibida.getMensajeString()); //MessageBox.Show("llego mensaje"); if (item.getEstaLleno()) { mensRecibido = item.getMensajeCompleto(); onLlegoMensaje(item.identificador); item.identificador = 777; } } } } }