private void TimerLimiteCaja_Tick(object sender, EventArgs e)
        {
            try
            {
                if ((this.Maquina.Modo == Entidades.Enum.ModoMaquina.Normal &&
                     this.Maquina.CantidadCaja <= this.Maquina.CantidadCajaRealizada && !inactiva))
                {
                    PonerColorError();
                    //Store.TCPCliente.EnviarMensaje(new MensajeTCPErrorPrensa { NombrePrensa = Maquina.Nombre, ParesFabricados = this.Maquina.CantidadCajaRealizada, ParesFabricar = this.Maquina.CantidadCaja });

                    //ClienteMqtt.Publicar(string.Format("/{0}/pantalla/{1}/sobrepasado", Maquina.Tipo, ClienteMqtt.clientIp), string.Format("{0};{1}/{2};", Maquina.Nombre,this.Maquina.CantidadCajaRealizada, this.Maquina.CantidadCaja), 2);
                }
                else
                {
                    //Store.TCPCliente.EnviarMensaje(new MensajeTCPOkPrensa { NombrePrensa = Maquina.Nombre});
                }

                if (this.Maquina.CantidadCaja <= this.Maquina.CantidadCajaRealizada)
                {
                    ClienteMqtt.Publicar(string.Format("/{0}/pantalla/{1}/sobrepasado", Maquina.Tipo, ClienteMqtt.clientIp), string.Format("2;{0};{1}/{2}", Maquina.Nombre, this.Maquina.CantidadCajaRealizada, this.Maquina.CantidadCaja), 1);

                    //Store.TCPCliente.EnviarMensaje(new MensajeTCPErrorPrensa { NombrePrensa = Maquina.Nombre, ParesFabricados = this.Maquina.CantidadCajaRealizada, ParesFabricar = this.Maquina.CantidadCaja });
                }
                else
                {
                    ClienteMqtt.Publicar(string.Format("/{0}/pantalla/{1}/desobrepasado", Maquina.Tipo, ClienteMqtt.clientIp), string.Format("3;{0};{1}/{2}", Maquina.Nombre, this.Maquina.CantidadCajaRealizada, this.Maquina.CantidadCaja), 1);

                    //Store.TCPCliente.EnviarMensaje(new MensajeTCPOkPrensa { NombrePrensa = Maquina.Nombre });
                }
            }
            catch (Exception ex)
            {
                new Log().Escribir(ex);
            }
        }
예제 #2
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);
            }
        }
        private void MqttAsociarBarquilla(List <SP_BarquillaBuscarInformacionEnSeccion_Result> prepaquete, Maquinas maquina, bool asociacion = true)
        {
            try
            {
                string nombreCliente = prepaquete.First().NOMBRECLI ?? "ARNEPLANT S.L.";
                nombreCliente = new Regex("[^A-Za-z0-9 ]").Replace(nombreCliente, " ");
                if (nombreCliente.Length > 25)
                {
                    nombreCliente = nombreCliente.Substring(0, 24);
                }

                string mensaje = string.Format("{0};{1};{2};{3};{4};{5};{6};{7};{8};{9};{10};{11};{12};{13};",
                                               maquina.Posicion
                                               , prepaquete.First().IdTarea.ToString().PadLeft(10, '0')
                                               , prepaquete.First().CantidadFabricar.ToString().PadLeft(10, '0')
                                               , prepaquete.First().Codigo.PadLeft(13)
                                               , prepaquete.First().CodUtillaje.PadLeft(25)
                                               , prepaquete.First().IdUtillajeTalla.PadLeft(10)
                                               , prepaquete.First().Talla.PadLeft(10)
                                               , prepaquete.First().CodigoEtiqueta.PadLeft(13)
                                               , prepaquete.First().IdOrden.ToString().PadLeft(10, '0')
                                               , prepaquete.First().IdOperacion.ToString().PadLeft(10, '0')
                                               , nombreCliente.PadLeft(25)
                                               , prepaquete.First().CodigoArticulo.PadLeft(20)
                                               , prepaquete.First().Productividad.ToString().PadLeft(3)
                                               , maquina.OperarioACargo.Id.ToString().PadLeft(5));

                ClienteMqtt.Publicar(string.Format("/{0}/plc/{1}/asociarTarea", maquina.Tipo, maquina.IpAutomata.PadLeft(3)), mensaje, 1);


                maquina.CargarInformacion(new AsociacionTarea
                {
                    Cliente        = prepaquete.First().NOMBRECLI,
                    CodigoArticulo = prepaquete.First().CodigoArticulo,
                    CodigoOrden    = prepaquete.First().Codigo,
                    IdOperacion    = prepaquete.First().IdOperacion,
                    IdOrden        = prepaquete.First().IdOrden,
                    Utillaje       = prepaquete.First().CodUtillaje,
                    TallaUtillaje  = prepaquete.First().IdUtillajeTalla,
                    TallasArticulo = prepaquete.First().Tallas,
                    IdTarea        = prepaquete.First().IdTarea ?? 0,
                    Pares          = prepaquete.First().CantidadFabricar.HasValue ? (int)prepaquete.First().CantidadFabricar : 0,
                    CodigoEtiqueta = prepaquete.First().CodigoEtiqueta,
                    IdOperario     = maquina.OperarioACargo.Id,
                    ParesUtillaje  = (int)prepaquete.First().Productividad,
                    Prensa         = maquina.Posicion,
                    CantidadCaja   = prepaquete.Sum(x => x.Cantidad),
                });
            }
            catch (Exception ex)
            {
                new Log().Escribir(ex);
            }
        }
예제 #4
0
 private void MqttInformarUbicacion(CambioUbicacion cambio)
 {
     try
     {
         ClienteMqtt.Publicar("/ubicacion", JsonConvert.SerializeObject(cambio), 1);
     }
     catch (Exception ex)
     {
         new Log().Escribir(ex);
     }
 }
        private void TopicNormal_OnMensajeRecibido(object sender, Entidades.Eventos.MqttMensajeRecibidoEventArgs e)
        {
            timerCalentamiento.Stop();
            try
            {
                ConsumoPrensa consumo = JsonConvert.DeserializeObject <ConsumoPrensa>(e.Cuerpo);
                if (consumo == null)
                {
                    new Log().Escribir("consumo nulo");
                }

                if (consumo.Prensa != this.Maquina.Posicion)
                {
                    return;
                }

                if (this.Maquina.Modo != Entidades.Enum.ModoMaquina.Normal)
                {
                    this.Maquina.CambiarModo(Entidades.Enum.ModoMaquina.Normal);
                }

                this.Maquina.CargarInformacion(consumo);

                if (this.Maquina.TrabajoEjecucion != null)
                {
                    this.Maquina.Pulsos.Add(new PulsoMaquina
                    {
                        PiezaIntroducida = consumo.PiezaIntroducida == 1,
                        CodigoEtiqueta   = this.Maquina.TrabajoEjecucion.CodigoEtiquetaFichada,
                        Control          = new OperacionesControles
                        {
                            IdTipoMaquina           = 1,
                            TiempoBaseEjecucion     = 0.01,
                            TiempoCambioBarquilla   = 0.3,
                            TiempoInicio            = 0,
                            TiempoUtillajeEjecucion = 0.1,
                        },
                        Ciclo          = consumo.SgCiclo,
                        Fecha          = DateTime.Now,
                        IdOperario     = Maquina.OperarioACargo.Id,
                        PosicionGlobal = Maquina.PosicionGlobal ?? 0,
                        Pares          = (consumo.ParesUtillaje == 0?1:consumo.ParesUtillaje) * consumo.NumMoldes,
                    });

                    if (consumo.PiezaIntroducida == 1)
                    {
                        this.Maquina.InsertarPares(this.Maquina.TrabajoEjecucion, consumo.NumMoldes * (consumo.ParesUtillaje == 0 ? 1 : consumo.ParesUtillaje));
                    }

                    Notifica("Maquina");
                }
                else
                {
                    BackgroundWorker            bw          = new BackgroundWorker();
                    List <MaquinasColasTrabajo> colaTrabajo = new List <MaquinasColasTrabajo>();
                    bw.DoWork += (se, ev) =>
                    {
                        colaTrabajo = daoPuesto.ObtenerColaTrabajoMaquina(this.Maquina.ID);
                    };
                    bw.RunWorkerCompleted += (se, ev) =>
                    {
                        if (colaTrabajo.Count == 0)
                        {
                            ClienteMqtt.Publicar(string.Format("/{0}/fallo/{1}", Maquina.Tipo, this.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();
                }
            }catch (Exception ex)
            {
                new Log().Escribir(ex);
            }
        }
 private void Maquina_OnFichajeMaquina(object sender, Entidades.Eventos.FichajeAsociacionEventArgs e)
 {
     ClienteMqtt.Publicar(string.Format("/{0}/pantalla/{1}/desobrepasado", Maquina.Tipo, ClienteMqtt.clientIp), string.Format("{0};{1}/{2};", Maquina.Nombre, this.Maquina.CantidadCaja, this.Maquina.CantidadCajaRealizada), 2);
 }