コード例 #1
0
        private void SuscribirTopicLecturaPDA()
        {
            try
            {
                /*Store.TCPServidor.OnMensajeRecibido += (s, ev) =>
                 * {
                 *  MensajeTCP mensaje = AnalizadorMensajes.ObtenerMensaje(ev.Mensaje);
                 *  if(mensaje != null)
                 *  {
                 *      switch (mensaje.Tipo)
                 *      {
                 *          case Entidades.Enum.TipoMensajeTCP.cambiarIpPda:
                 *              {
                 *                  Store.TCPCliente.Conectar((mensaje as MensajeTCPCambioIpPda).Ip);
                 *                  break;
                 *              }
                 *
                 *          case Entidades.Enum.TipoMensajeTCP.fichaje:
                 *              {
                 *                  MensajeTCPFichaje mensajeFichaje = mensaje as MensajeTCPFichaje;
                 *                  FichajeAgente.EtiquetaFichada(mensajeFichaje.CodigoMaquina);
                 *                  FichajeAgente.EtiquetaFichada(mensajeFichaje.CodigoBarquilla);
                 *                  break;
                 *              }
                 *          default: { break; }
                 *      }
                 *  }
                 *
                 * };*/

                Entidades.Util.Topic topicLectura = new Entidades.Util.Topic("/moldeado/pantalla/" + ClienteMqtt.clientIp + "/lectura", (byte)1);
                topicLectura.OnMensajeRecibido += (se, ev) =>
                {
                    /* LecturaPDA lectura = JsonConvert.DeserializeObject<LecturaPDA>(ev.Cuerpo);
                     * FichajeAgente.EtiquetaFichada(lectura.CodigoMaquina);
                     * FichajeAgente.EtiquetaFichada(lectura.CodigoBarquilla);*/
                    string[] partes = ev.Cuerpo.Split(';');
                    if (partes.Length == 3)
                    {
                        FichajeAgente.EtiquetaFichada(partes[1].Trim());
                        FichajeAgente.EtiquetaFichada(partes[2].Trim());
                    }
                };

                Entidades.Util.Topic topicHojaProduccion = new Entidades.Util.Topic("/moldeado/pantalla/" + ClienteMqtt.clientIp + "/hojaProduccion", (byte)1);
                topicHojaProduccion.OnMensajeRecibido += (se, ev) =>
                {
                    if (Store.Operario != null)
                    {
                        ClienteMqtt.Publicar(string.Format("/operario/imprimir/moldeado/hojaProduccion"), "{\"IdOperario\": " + Store.Operario.Id + "}", 2);
                    }
                };
                ClienteMqtt.Suscribir(topicLectura);
                ClienteMqtt.Suscribir(topicHojaProduccion);
            }
            catch (Exception ex)
            {
                new Log().Escribir(ex);
            }
        }
        public PrensaGenericaControl(Maquinas maquina, Operarios op)
        {
            InitializeComponent();
            this.DataContext            = this;
            this.Maquina                = maquina;
            this.Maquina.OperarioACargo = op;
            this.MinHeight              = 30;
            Grid.SetRow(this, (int)maquina.Top);
            Grid.SetColumn(this, (int)maquina.Left);
            Maquina.OnParesConsumidos          += Maquina_OnParesConsumidos;
            Maquina.OnInfoEjecucionActualizada += Maquina_OnInfoEjecucionActualizada;
            Maquina.OnModoCambiado             += Maquina_OnModoCambiado;
            Maquina.OnFichajeMaquina           += Maquina_OnFichajeMaquina;
            this.PreviewMouseUp += PrensaLayout_PreviewMouseUp;

            this.timerCalentamiento          = new DispatcherTimer();
            this.timerCalentamiento.Interval = new TimeSpan(0, 0, 0, 0, 400);
            this.timerCalentamiento.Tick    += TimerCalentamiento_Tick;;
            this.timerInactividad            = new DispatcherTimer();
            this.timerInactividad.Interval   = new TimeSpan(0, 10, 0);
            this.timerInactividad.Tick      += TimerInactividad_Tick;
            this.timerLimiteCaja             = new DispatcherTimer();
            this.timerLimiteCaja.Interval    = new TimeSpan(0, 0, 30);
            this.timerLimiteCaja.Tick       += TimerLimiteCaja_Tick;

            this.timerLimiteCaja.Start();
            this.timerInactividad.Start();

            this.PreviewMouseDown += PrensaGenericaControl_PreviewMouseUp;


            try
            {
                BackgroundWorker            bwActualizarCola = new BackgroundWorker();
                List <MaquinasColasTrabajo> cola             = new List <MaquinasColasTrabajo>();
                Maquinas maquinaDb = null;
                List <MaquinasRegistrosDatos> paquetesHistorico = new List <MaquinasRegistrosDatos>();
                DateTime ahora = DateTime.Now;
                Turno    turno = HorarioTurnos.CalcularTurnoAFecha(ahora);
                DateTime fechaInicio;
                DateTime fechaFin;
                HorarioTurnos.CalcularHorarioTurno(turno, ahora, out fechaInicio, out fechaFin);

                maquina.Pulsos.Clear();

                bwActualizarCola.DoWork += (se, ev) =>
                {
                    maquinaDb         = daoPuesto.ObtenerMaquinaConColaTrabajo(maquina.ID);
                    paquetesHistorico = daoTarea.ObtenerHistoricoParesOperario(op.Id, maquina.IpAutomata, maquina.Posicion, fechaInicio, fechaFin);
                };
                bwActualizarCola.RunWorkerCompleted += (se, ev) =>
                {
                    cola = maquinaDb.MaquinasColasTrabajo.ToList();
                    this.Maquina.IpAutomata     = maquinaDb.IpAutomata;
                    this.Maquina.Posicion       = maquinaDb.Posicion;
                    this.Maquina.PosicionGlobal = maquinaDb.PosicionGlobal;

                    this.topicNormal                          = new Topic(string.Format("/{0}/plc/{1}/normal", maquina.Tipo, maquina.IpAutomata), (byte)2, this.Maquina.Nombre);
                    this.topicCalentar                        = new Topic(string.Format("/{0}/plc/{1}/calentar", maquina.Tipo, maquina.IpAutomata), (byte)1, this.Maquina.Nombre);
                    this.topicAsociarTarea                    = new Topic(string.Format("/{0}/plc/{1}/asociarTarea", maquina.Tipo, maquina.IpAutomata), (byte)1, this.Maquina.Nombre);
                    this.topicNormal.OnMensajeRecibido       += TopicNormal_OnMensajeRecibido;
                    this.topicCalentar.OnMensajeRecibido     += TopicCalentar_OnMensajeRecibido;
                    this.topicAsociarTarea.OnMensajeRecibido += TopicAsociarTarea_OnMensajeRecibido;

                    maquina.AsignarColaTrabajo(cola);

                    ClienteMqtt.Suscribir(this.topicNormal);
                    ClienteMqtt.Suscribir(this.topicCalentar);
                    ClienteMqtt.Suscribir(this.topicAsociarTarea);

                    foreach (var paquete in paquetesHistorico.Where(x => x.PiezaIntroducida))
                    {
                        Maquina.Pulsos.Add(new PulsoMaquina
                        {
                            CodigoEtiqueta = paquete.CodigoEtiqueta,
                            Control        = daoTarea.BuscarControlGuardado(paquete.IdOperacion, Maquina.IdTipo ?? 0),
                            Ciclo          = paquete.Ciclo,
                            Fecha          = paquete.FechaCreacion,
                            Pares          = paquete.Pares,
                            PosicionGlobal = Maquina.PosicionGlobal ?? 0,
                            IdOperario     = paquete.IdOperario,
                        });
                    }
                    Notifica("Maquina");
                    Loader.Visibility         = Visibility.Collapsed;
                    PanelPrincipal.Visibility = Visibility.Visible;
                };

                bwActualizarCola.RunWorkerAsync();
            }
            catch (Exception ex)
            {
                new Log().Escribir(ex);
            }
        }