private void StartPoll() { pollCount = 0; slaves = 0; if (mb.Open(cboPort.SelectedItem.ToString(), Convert.ToInt32(cboBaud.SelectedItem.ToString()), 8, Parity.None, StopBits.One)) //Now open The Port { //Disable double starts: btnstart.Enabled = false; btnstop.Enabled = true; //Set polling flag: isPolling = true; //Start timer using provided values: timer.AutoReset = true; timer.Interval = 500; timer.Start(); } } #region Timer Elapsed Event Handler void timer_Elapsed(object sender, ElapsedEventArgs e) { PollFunction(); } #end region # region Pollingfuntion private void PollFunction() { //Update GUI: DoGUIClear(); pollCount++; //Create array to accept read values: string[] rs485data = new string[72]; ushort pollStart; ushort pollLength; pollStart = 0; pollLength = 72; string stringTocheck0 = "0"; string stringTocheck1 = "1"; string stringTocheck2 = "2"; SID = Convert.ToByte(slaveaddress[slaves]); add = slaves; //Read registers and display data in desired format: try { while (!mb.SendFc3(SID, pollStart, pollLength, ref values)) ; } catch (Exception err) { DoGUIStatus("Error in modbus read: " + err.Message); } slaves++; for (int s = 0; s < 72; s++) { rs485data[s] = Convert.ToString(values[s + 1]); } switch (dataType) { case "Decimal": if (rs485data.All(s =>; s.Contains(stringTocheck0)) == true) { errorIndexZero[add] = SID; this.Invoke(new EventHandler(ResetChangeBtnColor)); } else if (rs485data.Any(s =>; s.Contains(stringTocheck1)) == true) { errorIndexOne[add] = SID; this.Invoke(new EventHandler(TestChangeBtnColor)); } else if (rs485data.Any(s =>; s.Contains(stringTocheck2)) == true) { errorIndexTwo[add] = SID; this.Invoke(new EventHandler(AcceptChangeBtnColor)); } break; } if (slaves == devicescount1) { slaves = 0; } } #end region public void TestChangeBtnColor(object sender, System.EventArgs e) { timer2.Enabled = true; } private void timer2_Tick(object sender, EventArgs e) { for (int n = 0; n < btn.Length; n++) { if (errorIndexOne[n]!=0) { if (btn[n].BackColor == Color.LightGreen) { btn[n].BackColor = Color.Red; } else { btn[n].BackColor = Color.LightGreen; } } } }
var
This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)