Example #1
0
        //Motor de la aplicaciĆ³n Estaciones, Bandejas, Moldes, Operaciones, Ordenes de fabricaciĆ³n y piezas
        private void TimerComunicationStatus_Tick(object sender, EventArgs e)
        {
            TimerS7ComunicationStatus.Stop();

            foreach (var station in AppGlobal.Stations)
            {
                if (station.Bussy)
                {
                    continue;
                }

                if (!S7.GetBitAt(AppGlobal.Snap7Server.Read(station.StatusChangeS7), 0, 0))
                {
                    continue;
                }

                var data = AppGlobal.Snap7Server.Read(station.DataAddressS7);
                station.DataContent = Common.GetDataContent(data);

                var pallet    = PalletController.GetByCode(station.DataContent.PalletCode);
                var operation = OperationController.GetByCode(station.DataContent.OperationCode);
                var mold      = MoldRepository.GetByCode(station.DataContent.MoldCode);

                station.ActiveOperation = operation;

                if (operation.InitPart || operation.EndPart)
                {
                    station.Bussy = true;
                    Thread AskForReferencePartThread = new Thread(new ThreadStart(() => AskForReferencePart(station, pallet, operation, mold)));
                    AskForReferencePartThread.Start();
                }
                else
                {
                    OperationRegisterController.Register(station, pallet, operation, mold, "Pieza 1");
                    AppGlobal.Snap7Server.WriteWord(station.StatusChangeS7Ack, (ushort)operation.Code);
                }
            }

            TimerS7ComunicationStatus.Start();
        }