/// <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();
                }
            }
        }