/// <summary> /// Este evento se desencadena al estar ejecutandose desde la pantalla maestra. /// Si e pulso viene del esclavo publica un MQTT a la pantalla esclava. /// Si no, lo utilizamos desde el maestro /// </summary> /// <param name="e"></param> private void PulsoGenerado(PulsoGeneradoEventArgs e) { try { //ResetearInactividad(); //si la maquina que produce el pulso es del esclavo if (Store.BancadaEsclavo != null && e.IdBancada == Store.BancadaEsclavo.ID) { // publico el pulso para el esclavo ClienteMQTT.Publicar(string.Format("/puesto/{0}/pulsoInterno", Store.Bancada.IdHermano), "", 2); } else { // si hay operarios if (Store.OperarioEjecucion != null) { // SI HAY TAREA if (Store.Bancada.Maquinas.Any(x => x.TrabajoEjecucion != null)) { ConsumirTareaNormal(e); } else { this.Dispatcher.BeginInvoke((Action)(() => { new Aviso("No hay tarea").Show(); })); } } else { this.Dispatcher.BeginInvoke((Action)(() => { new Aviso("No hay operario").Show(); })); } } } catch (Exception ex) { Logs.Log.Write(ex); } }
private void Uart_OnPulsoGenerado(object sender, PulsoGeneradoEventArgs e) { PulsoGenerado(e); }
private void ConsumirTareaNormal(PulsoGeneradoEventArgs e) { bool stockInsertado = false; foreach (var maquina in Store.Bancada.Maquinas) { if (maquina.TrabajoEjecucion != null) { var ahora = DateTime.Now.ToUniversalTime(); if (maquina.MaquinasConfiguracionesPins.DescontarAutomaticamente) { ClienteMQTT.Publicar(string.Format("/puesto/{0}/pulso", Store.Bancada.ID), JsonConvert.SerializeObject(new MensajePulsoNormalMQTT { IpAutomata = maquina.IpAutomata, CodigoArticulo = maquina.CodigoArticulo, CodigoBarras = maquina.TrabajoEjecucion.CodigoEtiquetaFichada, CodigoOF = maquina.CodigoOrden, IdObrero = Store.OperarioEjecucion.Id, IdOF = maquina.IdOrden, IdOperacion = maquina.IdOperacion, IdTarea = maquina.TrabajoEjecucion.IdTarea, NombreCliente = maquina.Cliente, NumUtillajes = 1, Posicion = maquina.Posicion, ParesTarea = Convert.ToInt32(maquina.TrabajoEjecucion.ParesFabricar), PiezaIntroducida = 1, ParesUtillaje = 1, TallaArticulo = maquina.TallaArticulo, TallaUtillaje = maquina.TallaUtillaje, Tipo = 1, Utillaje = maquina.Utillaje, Hora = string.Format("{0}-{1}-{2} {3}:{4}:{5}", ahora.Year, ahora.Month, ahora.Day, ahora.Hour, ahora.Minute, ahora.Second) }), 2);; Store.Monton++; if (Store.Monton == Store.Bancada.BancadasConfiguracionesPins.ContadorPaquetes + 1) { Store.Monton = 1; } } if (!stockInsertado) { Store.InsertarPulsoStock(maquina, 1); stockInsertado = true; } maquina.Pulsos.Add(new PulsoMaquina { IdTarea = maquina.IdTarea, CodigoEtiqueta = maquina.TrabajoEjecucion.CodigoEtiquetaFichada, Fecha = ahora, IdOperario = Store.OperarioEjecucion.Id, Pares = 1, IdPuesto = Store.Bancada.ID, CodigoOrden = maquina.CodigoOrden, Talla = maquina.TallaArticulo, }); ClienteMQTT.Publicar(string.Format("/ordenFabricacion/{0}/{1}/consumo", maquina.IdOrden, maquina.CodSeccion), JsonConvert.SerializeObject(new MensajeConsumoOrden { CodigoOrden = maquina.CodigoOrden, IdMaquina = maquina.ID, CodSeccion = maquina.CodSeccion, CantidadPaquete = (int)maquina.TrabajoEjecucion.CantidadEtiquetaFichada }), 2); ClienteMQTT.Publicar(string.Format("/puesto/{0}/normal", Store.Bancada.ID), JsonConvert.SerializeObject(new MensajeConsumoTarea { IdPuesto = Store.Bancada.ID, IdTarea = maquina.IdTarea, ParesConsumidos = (int)maquina.MaquinasConfiguracionesPins.ProductoPorPulso, PiezaIntroducida = true, }), 2); BusEventos.ParesActualizados(); } } }