コード例 #1
0
        public void SendPumpData(MsgPumpData msg)
        {
            LocalRepository localRepository = LocalRepository.GetInstance();

            Task.Factory.StartNew(() =>
            {
                try
                {
                    if (msg.StatusPump == PumpStatus.On)
                    {
                        localRepository.Pump.TurnOnPump();
                    }
                    else
                    {
                        localRepository.Pump.TurnOffPump();
                    }

                    if (msg.OperationMode == OperationMode.Automatic)
                    {
                        localRepository.Pump.OperationMode = OperationMode.Automatic;
                    }
                    else
                    {
                        localRepository.Pump.OperationMode = OperationMode.Manual;
                    }

                    Program.UartService.SendMessage(new MsgTelegram200((int)msg.StatusPump, (int)msg.OperationMode));
                }
                catch (Exception e)
                {
                    //TODO: Implementar framework de log
                }
            });
        }
コード例 #2
0
        public void UpdatePump(MsgPumpData msg)
        {
            _MsgPumpData = msg;

            MethodInvoker mth = (MethodInvoker) delegate()
            {
                try
                {
                    btnPumpLed.BackgroundImage = msg.StatusPump == PumpStatus.On ? Properties.Resources.led_on : Properties.Resources.led_off;
                    btnOnOff.BackgroundImage   = msg.StatusPump == PumpStatus.On ? Properties.Resources.button_off : Properties.Resources.button_on;
                    btnOperationMode.IsOn      = msg.OperationMode == OperationMode.Automatic ? true : false;
                    UpdatePipes(msg.StatusPump);
                }
                catch (Exception e)
                {
                    txtMsg.Text = e.Message;
                }
            };

            if (!this.IsHandleCreated)
            {
                mth.Invoke();
            }
            else
            {
                this.BeginInvoke(mth);
            }
        }
コード例 #3
0
        private void DataPublishingLoop(int interval)
        {
            Task.Run(async delegate
            {
                LocalRepository localRepository = LocalRepository.GetInstance();

                try
                {
                    while (true)
                    {
                        bool send = false;

                        MsgWaterTankData[] msgsDataWaterTank = new MsgWaterTankData[2];
                        for (int i = 0; i < localRepository.Tanks.Length; i++)
                        {
                            WaterTank waterTank  = localRepository.Tanks[i];
                            msgsDataWaterTank[i] = new MsgWaterTankData(waterTank.Level, waterTank.MinLevel);
                            send |= waterTank.Changed;
                            waterTank.Changed = false;
                        }

                        if (send)
                        {
                            PublishDataWaterTank(msgsDataWaterTank);
                        }

                        if (localRepository.Pump.Changed)
                        {
                            MsgPumpData msg = new MsgPumpData(localRepository.Pump.Status, localRepository.Pump.OperationMode);
                            PublishDataPump(msg);
                            localRepository.Pump.Changed = false;
                        }

                        for (int i = 0; i < localRepository.ProcessChart.Data.Count; i++)
                        {
                            if (localRepository.ProcessChart.Changed)
                            {
                                MsgChartData msg = new MsgChartData();
                                msg.Data         = localRepository.ProcessChart.Data;
                                PublishChart(msg);
                            }
                        }

                        await Task.Delay(interval);
                    }
                }
                catch (Exception exc)
                {
                    //TODO: Implementar framework de log
                }
            });
        }
コード例 #4
0
 private void PublishDataPump(MsgPumpData msg)
 {
     Program.FrmMain.UpdatePump(msg);
 }