コード例 #1
0
        private void Calentar(string msg, string topicRecibido, Topic topic)
        {
            try
            {
                ConsumoPrensa consumo = JsonConvert.DeserializeObject <ConsumoPrensa>(msg);

                if (consumo == null)
                {
                    Log.Write(new Exception("Consumo recibido nulo " + msg));
                }

                string tipoBancada = topicRecibido.Split('/')[topic.IndiceTipoBancada].Trim();
                string ipPlc       = topicRecibido.Split('/')[topic.IndiceIdTopic].Trim();
                consumo.IpPlc = ipPlc;

                Maquinas maquina = Store.Bancada.Maquinas.FirstOrDefault(x => x.IpAutomata == ipPlc && x.Posicion == consumo.Prensa);

                if (maquina != null)
                {
                    maquina.CargarInformacion(consumo);
                    if (maquina.Modo != ModoMaquina.Calentamiento)
                    {
                        maquina.CambiarModo(ModoMaquina.Calentamiento);
                    }
                }
            }
            catch (Exception ex)
            {
                Log.Write(ex);
            }
        }
コード例 #2
0
        private void Normal(string msg, string topicRecibido, Topic topic)
        {
            try
            {
                // recibo consumo
                ConsumoPrensa consumo = JsonConvert.DeserializeObject <ConsumoPrensa>(msg);

                if (consumo == null)
                {
                    Log.Write(new Exception("Consumo recibido nulo " + msg));
                    return;
                }

                string tipoBancada = topicRecibido.Split('/')[topic.IndiceTipoBancada].Trim();
                string ipPlc       = topicRecibido.Split('/')[topic.IndiceIdTopic].Trim();
                consumo.IpPlc = ipPlc;


                // busco la maquina
                Maquinas maquina = Store.Bancada.Maquinas.FirstOrDefault(x => x.IpAutomata == ipPlc && x.Posicion == consumo.Prensa);

                // si encuentro la maquina
                if (maquina != null)
                {
                    // si la maquina no esta en modo normal
                    if (maquina.Modo != ModoMaquina.Normal)
                    {
                        // la pongo en modo normal
                        maquina.CambiarModo(ModoMaquina.Normal);
                    }

                    // si hay operario loggeado
                    if (SesionManager.Sesion.Operario != null)
                    {
                        // pongo en marcha si no estaba la visibilidad del cuadrante de prima
                        Dispatcher.Invoke(() =>
                        {
                            this.primaActual.Visibility  = Visibility.Visible;
                            this.temporizador.Visibility = Visibility.Hidden;
                        });
                        // reseteo el timer de actividad
                        this.timerInactividad.Stop();
                        this.timerInactividad.Start();

                        // cargo informacion del consumo en la maquina por si acaso no estaba
                        maquina.CargarInformacion(consumo);
                        // añado el pulso a la maquina
                        maquina.Pulsos.Add(new PulsoMaquina
                        {
                            CodigoEtiqueta = maquina.TrabajoEjecucion.CodigoEtiquetaFichada,
                            // previamente busco el control en la tienda
                            Control        = BuscarControl(maquina.IdOperacion, maquina),
                            Ciclo          = consumo.SgCiclo,
                            Fecha          = consumo.HoraLocal,
                            Pares          = consumo.ParesUtillaje * consumo.NumMoldes,
                            PosicionGlobal = maquina.PosicionGlobal ?? 0,
                            IdOperario     = SesionManager.Sesion.Operario.Id,
                        });



                        // si lo hemos encontrado y ademas se introdujo una pieza
                        if (maquina.TrabajoEjecucion != null)
                        {
                            if (consumo.PiezaIntroducida == 1)
                            {
                                // insertamos pieza
                                bool insertados = maquina.InsertarPares(maquina.TrabajoEjecucion, consumo.NumMoldes * consumo.ParesUtillaje);
                            }
                        }
                        else
                        {
                            //(background) recuperar cola y publicarla
                            BackgroundWorker            bw          = new BackgroundWorker();
                            List <MaquinasColasTrabajo> colaTrabajo = new List <MaquinasColasTrabajo>();
                            bw.DoWork += (se, ev) =>
                            {
                                colaTrabajo = SelectColaTrabajo.ObtenerColaTrabajoMaquinaPorId(maquina.ID);
                            };
                            bw.RunWorkerCompleted += (se, ev) =>
                            {
                                if (colaTrabajo.Count == 0)
                                {
                                    ClienteMQTT.Publicar(string.Format("/moldeado/fallo/{0}", maquina.IpAutomata.PadLeft(3)),
                                                         string.Format("El automata {0} con maquina {1} no tiene cola de trabajo", maquina.IpAutomata, maquina.Posicion), 1);
                                }
                                maquina.AsignarColaTrabajo(colaTrabajo);
                            };
                            bw.RunWorkerAsync();


                            maquina.ErrorTareaSinEjecutar();
                            maquina.ParesConsumidos();
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Log.Write(ex);
            }
        }