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 } }); }
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); } }
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 } }); }
private void PublishDataPump(MsgPumpData msg) { Program.FrmMain.UpdatePump(msg); }