public void AgregarNodo(NodosXbee _nodo) { ListNodes.Add(_nodo); NodoAgregadoEvent(_nodo); }
void NodoAgregadoEventHandler(NodosXbee e) { if (e.TipoDispositivo == XbeeUtils.Enumeraciones.TipoDispositivo.Dispensador) { string cara1 = ""; string cara2 = ""; if (instancia.ListNodes.FindAll(item => item.TipoDispositivo == XbeeUtils.Enumeraciones.TipoDispositivo.Dispensador).Count == 1) { cara1 = "SFPanelCara1"; cara2 = "SFPanelCara2"; } if (instancia.ListNodes.FindAll(item => item.TipoDispositivo == XbeeUtils.Enumeraciones.TipoDispositivo.Dispensador).Count == 2) { cara1 = "SFPanelCara3"; cara2 = "SFPanelCara4"; } if (instancia.ListNodes.FindAll(item => item.TipoDispositivo == XbeeUtils.Enumeraciones.TipoDispositivo.Dispensador).Count == 3) { cara1 = "SFPanelCara5"; cara2 = "SFPanelCara6"; } if (instancia.ListNodes.FindAll(item => item.TipoDispositivo == XbeeUtils.Enumeraciones.TipoDispositivo.Dispensador).Count == 4) { cara1 = "SFPanelCara7"; cara2 = "SFPanelCara8"; } Panel PanelCara1 = FindPanel(TsPanelContainerDispensadores, cara1); Panel PanelCara2 = FindPanel(TsPanelContainerDispensadores, cara2); DataTable dtCaras; using (Generales modGEN = new Generales()) { dtCaras = modGEN.GetTable("select DISTINCT numPosicion FROM posicion WHERE idXbee = " + e.IdXbee); } if (dtCaras != null && dtCaras.Rows.Count > 1) { if (ListadoObjetosCaras == null) ListadoObjetosCaras = new List<ctrCara>(); ctrCara newCara1 = new ctrCara(); newCara1.NumCara = Convert.ToInt32(dtCaras.Rows[0][0]); newCara1.EstadoCara = EnumEstadoCara.Normal; newCara1.NombreCara = "Cara " + newCara1.NumCara.ToString(); newCara1.idXbee = e.IdXbee; newCara1.NombreNodo = e.Nombre; PanelCara1.Controls.Add(newCara1); newCara1.Dock = DockStyle.Fill; ListadoObjetosCaras.Add(newCara1); ctrCara newCara2 = new ctrCara(); newCara2.NumCara = Convert.ToInt32(dtCaras.Rows[1][0]); newCara2.EstadoCara = EnumEstadoCara.Normal; newCara2.NombreCara = "Cara " + newCara2.NumCara.ToString(); newCara2.idXbee = e.IdXbee; newCara2.NombreNodo = e.Nombre; PanelCara2.Controls.Add(newCara2); newCara2.Dock = DockStyle.Fill; ListadoObjetosCaras.Add(newCara2); } } //else if (e.TipoDispositivo == XbeeUtils.Enumeraciones.TipoDispositivo.moduloPOS) //{ // string pos = ""; // if (instancia.ListNodes.FindAll(item => item.TipoDispositivo == // XbeeUtils.Enumeraciones.TipoDispositivo.moduloPOS).Count == 1) // { // pos = "SFPanelPOS1"; // } // if (instancia.ListNodes.FindAll(item => item.TipoDispositivo == // XbeeUtils.Enumeraciones.TipoDispositivo.moduloPOS).Count == 2) // { // pos = "SFPanelPOS2"; // } // if (instancia.ListNodes.FindAll(item => item.TipoDispositivo == // XbeeUtils.Enumeraciones.TipoDispositivo.moduloPOS).Count == 3) // { // pos = "SFPanelPOS3"; // } // if (instancia.ListNodes.FindAll(item => item.TipoDispositivo == // XbeeUtils.Enumeraciones.TipoDispositivo.moduloPOS).Count == 4) // { // pos = "SFPanelPOS4"; // } // Panel PanelPOS = FindPanel(SFLayoutContainer, pos); // if (PanelPOS != null) // { // using (Generales modGEN = new Generales()) // { // DataTable dtPOS = modGEN.GetTable("select nomXbee FROM xbee WHERE idXbee = " + e.IdXbee); // if (dtPOS != null && dtPOS.Rows.Count > 0) // { // ctrPOS newPOS = new ctrPOS(); // newPOS.NombrePOS = dtPOS.Rows[0][0].ToString(); // newPOS.idXbee = e.IdXbee; // PanelPOS.Controls.Add(newPOS); // newPOS.Dock = DockStyle.Fill; // newPOS.EstableceColor(); // } // } // } //} }
/// <summary> /// Evento que escanea la red en busqueda de los xbee para conexión /// </summary> /// <param name="sender"></param> /// <param name="args"></param> private void NodeDiscovered_controller(object sender, NodeDiscoveredEventArgs args) { try { if (instancia.ListNodes == null) { if (MonitoreoEvent != null) MonitoreoEvent(this, new MonitoreoEventArgs("Escaneando Red...", ETipoEvento.Exitoso, 0, "")); instancia.ListNodes = new List<NodosXbee>(); } string _macNodoEncontrado = args.Node.Address.LongAddress.Value.ToString("X"); string _macImpresora = ""; int _tiempoEspera = 0; int _idXbee = 0; Enumeraciones.TipoDispositivo _tipDisp; using (Generales modGenerales = new Generales()) { DataTable XbeeConsultado = modGenerales.ObtenerXbeePorMac(_macNodoEncontrado); if (XbeeConsultado != null && XbeeConsultado.Rows.Count > 0) { _macImpresora = (string)XbeeConsultado.Rows[0]["impresoraXbee"]; _tiempoEspera = (int)XbeeConsultado.Rows[0]["tiempoEspXbee"]; _idXbee = (int)XbeeConsultado.Rows[0]["idXbee"]; _tipDisp = (Enumeraciones.TipoDispositivo)XbeeConsultado.Rows[0]["tipoXbee"]; NodosXbee newDispositivo = new NodosXbee(args.Node, args.Name, _macNodoEncontrado, _macImpresora, _tiempoEspera, _tipDisp, _idXbee); instancia.AgregarNodo(newDispositivo); if (MonitoreoEvent != null) MonitoreoEvent(this, new MonitoreoEventArgs("Se conectó el dispositivo: " + args.Name + " MAC:" + _macNodoEncontrado + "", ETipoEvento.Exitoso, 0, "")); if (_tipDisp == Enumeraciones.TipoDispositivo.Dispensador) { ActualizarDatosDispensador(newDispositivo.IdXbee); } } else { if (MonitoreoEvent != null) MonitoreoEvent(this, new MonitoreoEventArgs("Se encontro dispositivo pero no esta registrado en base de datos: " + args.Name + " MAC: " + _macNodoEncontrado + "", ETipoEvento.Exitoso, 0, "")); } } } catch (Exception e) { LocalLogManager.EscribeLog(e.Message, LocalLogManager.TipoImagen.TipoError); if (MonitoreoEvent != null) MonitoreoEvent(this, new MonitoreoEventArgs("Se detectó un error:\n" + e.Message, ETipoEvento.Error, 0, "")); } }
public void ProcesarTrama(string[] arrayTramaRecibida,NodosXbee nodo,bool esSolicitudAplicacion) { if (arrayTramaRecibida.Count() > 1) { //if (MonitoreoEvent != null) MonitoreoEvent(this, new MonitoreoEventArgs("Llegó un paquete de " + nodo.Nombre + "", ETipoEvento.Exitoso, nodo.IdXbee, "")); if (esSolicitudAplicacion == true) {//Recibo petición de MOD POS switch (arrayTramaRecibida[0]) { //Trama que debe llegar así: CTD:Mensaje que quiero enviar, solo esos 2 parametros case "CTD": var resultCTD = _tramasPOS.GuardarTramaCTD(arrayTramaRecibida,nodo.IdXbee); if (resultCTD.Resultado == true) { if (MonitoreoEvent != null) MonitoreoEvent(this, new MonitoreoEventArgs("Trama CTD Recibida", ETipoEvento.Exitoso, nodo.IdXbee, "", nodo.Nombre)); }else{ if (MonitoreoEvent != null) MonitoreoEvent(this, new MonitoreoEventArgs(resultCTD.Mensaje, ETipoEvento.Error, nodo.IdXbee, "", nodo.Nombre)); } _tramasPOS.Dispose(); break; //Cualquier trama a cualquier dispensador: //La trama tiene que enviarse:CT:loque yo quiera case "CT": nodo.EnviarTrama(UtilidadesTramas.ObtenerByteDeString(arrayTramaRecibida[1])); break; //Trama de placa en venta= PE:1(cara):JEX30B(Placa):20000(KM):3(idXbee)|3(idxbee) //PE:1:JEX30B:20000:3|3 case "PE": var resultPE = _tramasPOS.PrepararTiquete(arrayTramaRecibida); if (resultPE.Resultado == true) { if (MonitoreoEvent != null) MonitoreoEvent(this, new MonitoreoEventArgs("Preparando tiquete", ETipoEvento.Exitoso, nodo.IdXbee, "", nodo.Nombre)); } else { if (MonitoreoEvent != null) MonitoreoEvent(this, new MonitoreoEventArgs(resultPE.Mensaje, ETipoEvento.Error, nodo.IdXbee, "", nodo.Nombre)); } _tramasPOS.Dispose(); break; case "F": var resultFid = _tramasPOS.Fidelizado(arrayTramaRecibida); if (resultFid.Resultado == true) { foreach (Byte[] data in resultFid.TramaResultado) { nodo.EnviarTrama(data); } if (MonitoreoEvent != null) MonitoreoEvent(this, new MonitoreoEventArgs(UtilidadesTramas.MensajeQueEnvióTrama(resultFid.TramaResultado), ETipoEvento.Exitoso, nodo.IdXbee, "",nodo.Nombre)); if (resultFid.Fidelizado_o_Credito == true) { FidelizadoCreditoPendiente _newFid = new FidelizadoCreditoPendiente(); _newFid.cara = arrayTramaRecibida[1]; _newFid.serial = arrayTramaRecibida[2]; _newFid.tipoSolicitud = ETipoSolicitudSerial.Fidelizado; instancia.ListaFidelizadosCreditosPendientes.Add(_newFid); if (MonitoreoEvent != null) MonitoreoEvent(this, new MonitoreoEventArgs("Preparando Fidelizado en cara " + _newFid.cara, ETipoEvento.Exitoso, nodo.IdXbee, "",nodo.Nombre)); } } else { if (MonitoreoEvent != null) MonitoreoEvent(this, new MonitoreoEventArgs(resultFid.Mensaje, ETipoEvento.Error, nodo.IdXbee, "",nodo.Nombre)); } _tramasPOS.Dispose(); break; ///Petición Consignación en efectivo case "H": var result = _tramasPOS.ConsignacionEfectivo(arrayTramaRecibida); if (result.Resultado == true) { foreach (Byte[] data in result.TramaResultado) { nodo.EnviarTrama(data); } if (MonitoreoEvent != null) MonitoreoEvent(this, new MonitoreoEventArgs(UtilidadesTramas.MensajeQueEnvióTrama(result.TramaResultado), ETipoEvento.Exitoso, nodo.IdXbee, "",nodo.Nombre)); } else { if (MonitoreoEvent != null) MonitoreoEvent(this, new MonitoreoEventArgs(result.Mensaje, ETipoEvento.Error, nodo.IdXbee, "",nodo.Nombre)); } _tramasPOS.Dispose(); break; //Petición abrir turno case "T": var resultAbrirTurno = _tramasPOS.AbrirTurno(arrayTramaRecibida); if (resultAbrirTurno.Resultado == true) { foreach (Byte[] data in resultAbrirTurno.TramaResultado) { nodo.EnviarTrama(data); } if (MonitoreoEvent != null) MonitoreoEvent(this, new MonitoreoEventArgs(UtilidadesTramas.MensajeQueEnvióTrama(resultAbrirTurno.TramaResultado), ETipoEvento.Exitoso, nodo.IdXbee, "",nodo.Nombre)); } else { if (MonitoreoEvent != null) MonitoreoEvent(this, new MonitoreoEventArgs(resultAbrirTurno.Mensaje, ETipoEvento.Error, nodo.IdXbee, "",nodo.Nombre)); } if (resultAbrirTurno.IdXbee > 0) ActualizarDatosDispensador(resultAbrirTurno.IdXbee); _tramasPOS.Dispose(); break; //Peticion de guardar venta canasta case "P": var resultVentaCanasta = _tramasPOS.VentaCanasta(arrayTramaRecibida); if (resultVentaCanasta.Resultado == true) { foreach (Byte[] data in resultVentaCanasta.TramaResultado) { nodo.EnviarTrama(data); } if (MonitoreoEvent != null) MonitoreoEvent(this, new MonitoreoEventArgs(UtilidadesTramas.MensajeQueEnvióTrama(resultVentaCanasta.TramaResultado), ETipoEvento.Exitoso, nodo.IdXbee, "",nodo.Nombre)); } else { if (MonitoreoEvent != null) MonitoreoEvent(this, new MonitoreoEventArgs(resultVentaCanasta.Mensaje, ETipoEvento.Error, nodo.IdXbee, "",nodo.Nombre)); } _tramasPOS.Dispose(); break; //Cerrar Turno case "E": var resultCerrarTurno = _tramasPOS.CerrarTurno(arrayTramaRecibida); if (resultCerrarTurno.Resultado == true) { foreach (Byte[] data in resultCerrarTurno.TramaResultado) { nodo.EnviarTrama(data); } if (MonitoreoEvent != null) MonitoreoEvent(this, new MonitoreoEventArgs(UtilidadesTramas.MensajeQueEnvióTrama(resultCerrarTurno.TramaResultado), ETipoEvento.Exitoso, nodo.IdXbee, "",nodo.Nombre)); } else { if (MonitoreoEvent != null) MonitoreoEvent(this, new MonitoreoEventArgs(resultCerrarTurno.Mensaje, ETipoEvento.Error, nodo.IdXbee, "",nodo.Nombre)); } if (resultCerrarTurno.IdXbee > 0) ActualizarDatosDispensador(resultCerrarTurno.IdXbee); _tramasPOS.Dispose(); break; //Consecutivo de cerrar Turno case "M": var resultConsecutivoTurno = _tramasPOS.ConsecutivoCierre_AperturaTurno(arrayTramaRecibida); if (resultConsecutivoTurno.Resultado == true) { foreach (Byte[] data in resultConsecutivoTurno.TramaResultado) { nodo.EnviarTrama(data); } if (MonitoreoEvent != null) MonitoreoEvent(this, new MonitoreoEventArgs(UtilidadesTramas.MensajeQueEnvióTrama(resultConsecutivoTurno.TramaResultado), ETipoEvento.Exitoso, nodo.IdXbee, "",nodo.Nombre)); } else { if (MonitoreoEvent != null) MonitoreoEvent(this, new MonitoreoEventArgs(resultConsecutivoTurno.Mensaje, ETipoEvento.Error, nodo.IdXbee, "",nodo.Nombre)); } _tramasPOS.Dispose(); break; //Imprimir Ultima venta case "I": var resultUltimaVenta = _tramasPOS.UltimaVenta(arrayTramaRecibida); if (resultUltimaVenta.Resultado == true) { foreach (Byte[] data in AsistenteMensajes.CocarEncabezadoAListadosDeTramas(resultUltimaVenta.TramaResultado)) { nodo.EnviarTrama(data); } if (MonitoreoEvent != null) MonitoreoEvent(this, new MonitoreoEventArgs(UtilidadesTramas.MensajeQueEnvióTrama(resultUltimaVenta.TramaResultado), ETipoEvento.Exitoso, nodo.IdXbee, "",nodo.Nombre)); } else { if (MonitoreoEvent != null) MonitoreoEvent(this, new MonitoreoEventArgs(resultUltimaVenta.Mensaje, ETipoEvento.Error, nodo.IdXbee, "",nodo.Nombre)); } _tramasPOS.Dispose(); break; case "N": var resultUltimaVentaConsecutivo = _tramasPOS.ConsecutivoUltimaVenta(arrayTramaRecibida); if (resultUltimaVentaConsecutivo.Resultado == true) { foreach (Byte[] data in AsistenteMensajes.CocarEncabezadoAListadosDeTramas(resultUltimaVentaConsecutivo.TramaResultado)) { nodo.EnviarTrama(data); } if (MonitoreoEvent != null) MonitoreoEvent(this, new MonitoreoEventArgs(UtilidadesTramas.MensajeQueEnvióTrama(resultUltimaVentaConsecutivo.TramaResultado), ETipoEvento.Exitoso, nodo.IdXbee, "",nodo.Nombre)); } else { if (MonitoreoEvent != null) MonitoreoEvent(this, new MonitoreoEventArgs(resultUltimaVentaConsecutivo.Mensaje, ETipoEvento.Error, nodo.IdXbee, "",nodo.Nombre)); } _tramasPOS.Dispose(); break; default: if (MonitoreoEvent != null) MonitoreoEvent(this, new MonitoreoEventArgs("Trama sin objetivo", ETipoEvento.Exitoso, 0, "",nodo.Nombre)); break; } } else {//recibo tramas de dispesadores switch (arrayTramaRecibida[0]) { //Trama que debe llegar así: CTD:Mensaje que quiero enviar, solo esos 2 parametros case "CTD": var resultCTD = _tramasPOS.GuardarTramaCTD(arrayTramaRecibida, nodo.IdXbee); if (resultCTD.Resultado == true) { if (MonitoreoEvent != null) MonitoreoEvent(this, new MonitoreoEventArgs("Trama CTD Recibida", ETipoEvento.Exitoso, nodo.IdXbee, "", nodo.Nombre)); } else { if (MonitoreoEvent != null) MonitoreoEvent(this, new MonitoreoEventArgs(resultCTD.Mensaje, ETipoEvento.Error, nodo.IdXbee, "", nodo.Nombre)); } _tramasPOS.Dispose(); break; //Abrir Venta case "E": string cara = arrayTramaRecibida[1].ToString(); if (MonitoreoEvent != null) MonitoreoEvent(this, new MonitoreoEventArgs("LEVANTAMANGUERA",ETipoEvento.Exitoso,nodo.IdXbee,cara)); break; //Totales de venta case "ET": var resultEnvioTotales = _tramaDIS.EnvioTotales(arrayTramaRecibida); if (resultEnvioTotales.Resultado == true) { string caraProceso = arrayTramaRecibida[1]; if(instancia.ListaTiquetesPorImprimir != null) { //verificamos si hay tiquetes pendientes de immprimir var TiquetePendiente = instancia.ListaTiquetesPorImprimir.Find(s => s.cara == caraProceso); if (TiquetePendiente != null) { NodosXbee nodoImpresion = instancia.ListNodes.Find(item => item.IdXbee == TiquetePendiente.idXbeeImprimir); string[] _trama = { "I", caraProceso, TiquetePendiente.placa, TiquetePendiente.km }; ProcesarTrama(_trama, nodoImpresion, true); instancia.ListaTiquetesPorImprimir.Remove(TiquetePendiente); } } //si es venta de credito imprimo tiquete if (resultEnvioTotales.ImprimeTiquete == 1) { string[] _trama = { "I", caraProceso, "", "" }; ProcesarTrama(_trama, nodo, true); ProcesarTrama(_trama, nodo, true); } if (MonitoreoEvent != null) MonitoreoEvent(this, new MonitoreoEventArgs("Se guardó ventas totales en cara " + arrayTramaRecibida[1], ETipoEvento.Exitoso, nodo.IdXbee, arrayTramaRecibida[1],nodo.Nombre)); } else { if (MonitoreoEvent != null) MonitoreoEvent(this, new MonitoreoEventArgs(resultEnvioTotales.Mensaje, ETipoEvento.Exitoso, nodo.IdXbee, arrayTramaRecibida[1],nodo.Nombre)); } if (MonitoreoEvent != null) MonitoreoEvent(this, new MonitoreoEventArgs("BAJAMANGUERA:" + resultEnvioTotales.VentaGalones + ":" + resultEnvioTotales.VentaDinero, ETipoEvento.Exitoso, nodo.IdXbee, arrayTramaRecibida[1])); _tramaDIS.Dispose(); break; default: if (MonitoreoEvent != null) MonitoreoEvent(this, new MonitoreoEventArgs("Trama sin objetivo", ETipoEvento.Exitoso, 0, "",nodo.Nombre)); break; } } } }
public async void EscanearRed() { try { if (instancia.ListNodes == null) { if (MonitoreoEvent != null) MonitoreoEvent(this, new MonitoreoEventArgs("Escaneando Red...", ETipoEvento.Exitoso, 0, "")); instancia.ListNodes = new List<NodosXbee>(); } string _macNodoEncontrado; string _macImpresora = ""; int _tiempoEspera = 0; int _idXbee = 0; Enumeraciones.TipoDispositivo _tipDisp; DataTable dtXbees; using (Generales modGEN = new Generales()) { dtXbees = modGEN.ObtenerTodosLosXbee(); } foreach (DataRow _row in dtXbees.Rows) { _macNodoEncontrado = (string)_row["macXbee"]; _macImpresora = (string)_row["impresoraXbee"]; _tiempoEspera = (int)_row["tiempoEspXbee"]; _idXbee = (int)_row["idXbee"]; _tipDisp = (Enumeraciones.TipoDispositivo)_row["tipoXbee"]; NodosXbee newDispositivo = new NodosXbee(null, (string)_row["nomXbee"].ToString(), _macNodoEncontrado, _macImpresora, _tiempoEspera, _tipDisp, _idXbee); //Buscar nodo en red ulong _ulong = Convert.ToUInt64(_row["macXbee"].ToString(), 16); NodeAddress Address = new NodeAddress(new LongAddress(_ulong)); XBeeNode nodoXbee = null; nodoXbee = await instancia.Controller.GetRemoteAsync(Address); if (nodoXbee != null) { newDispositivo.Nodo = nodoXbee; if (MonitoreoEvent != null) MonitoreoEvent(this, new MonitoreoEventArgs("Se conectó el dispositivo: " + newDispositivo.Nombre + " MAC:" + _macNodoEncontrado + "", ETipoEvento.Exitoso, newDispositivo.IdXbee, "")); if (_tipDisp == Enumeraciones.TipoDispositivo.Dispensador) { ActualizarDatosDispensador(newDispositivo.IdXbee); } } instancia.AgregarNodo(newDispositivo); } } catch (Exception e) { LocalLogManager.EscribeLog(e.Message, LocalLogManager.TipoImagen.TipoError); if (MonitoreoEvent != null) MonitoreoEvent(this, new MonitoreoEventArgs("Se detectó un error:\n" + e.Message, ETipoEvento.Error, 0, "")); } }