public Device() { stateRegs = new WorkState(); stateRegs = WorkState.Idle; //Regs_Update = new BackgroundWorker(); //Regs_Update.WorkerSupportsCancellation = true; //Regs_Update.WorkerReportsProgress = true; //Regs_Update.DoWork += Regs_Update_DoWork; //Regs_Update.ProgressChanged += Regs_Update_ProgressChanged; m_mbMaster = ModbusSerialMaster.CreateRtu(COM); m_mbMaster.Transport.ReadTimeout = 100; m_mbMaster.Transport.Retries = 3; m_mbMaster.Transport.SlaveBusyUsesRetryCount = true; m_mbMaster.Transport.WaitToRetryMilliseconds = 100; m_bgwModbusUpdater = new BackgroundWorker(); m_bgwModbusUpdater.WorkerSupportsCancellation = true; m_bgwModbusUpdater.WorkerReportsProgress = true; m_bgwModbusUpdater.DoWork += M_bgwModbusUpdater_DoWork;; m_bgwModbusUpdater.ProgressChanged += M_bgwModbusUpdater_ProgressChanged;; m_bgwModbusUpdater.RunWorkerAsync(); Regs = new common.devices.ACID_Stend.Registers(); }
private bool ModbusUpdate() { try { lock (m_syncObject) { switch (state) { case State.Read: try { rdBuf = m_mbMaster.ReadHoldingRegisters(slaveaddr, read_start_addr, read_regs_number); Regs = BufToStruct <common.devices.ACID_Stend.Registers, ushort>(rdBuf); state = State.New; } catch { m_lastError = "Ошибка чтения"; error_cnt++; return(false); } break; case State.Write: try { txBuf = StructToBuff <ushort, common.devices.ACID_Stend.Registers>(Regs); m_mbMaster.WriteMultipleRegisters(slaveaddr, read_start_addr, txBuf); state = State.Set; } catch { m_lastError = "Ошибка записи"; error_cnt++; return(false); } break; case State.New: break; case State.Set: break; } } return(true); } catch (Exception ex) { m_lastError = ex.Message; return(false); } }
private bool CheckNewData(common.devices.ACID_Stend.Registers Form, common.devices.ACID_Stend.Registers Device) { ushort[] Buf_new = StructToBuff <ushort, common.devices.ACID_Stend.Registers>(Form); ushort[] Buf_dev = StructToBuff <ushort, common.devices.ACID_Stend.Registers>(Device); for (int i = 0; i < Buf_new.Length; i++) { if (Buf_new[i] != Buf_dev[i]) { return(true); } } return(false); }
private void FormUpdate(common.devices.ACID_Stend.Registers Regs) { //upd_form }
private void FormDataUpdate(common.devices.ACID_Stend.Registers Data) { //upd_regs }
public Form1() { InitializeComponent(); Form_Update = new BackgroundWorker(); Form_Update.WorkerSupportsCancellation = true; Form_Update.WorkerReportsProgress = true; Form_Update.DoWork += Form_Update_DoWork; Form_Update.ProgressChanged += Form_Update_ProgressChanged; Form_Update.RunWorkerAsync(); is_connected = false; stateForm = WorkState.Idle; // Dev = new Device(); m_mbMaster = ModbusSerialMaster.CreateRtu(COM); m_mbMaster.Transport.ReadTimeout = 100; m_mbMaster.Transport.Retries = 3; m_mbMaster.Transport.SlaveBusyUsesRetryCount = true; m_mbMaster.Transport.WaitToRetryMilliseconds = 100; m_bgwModbusUpdater = new BackgroundWorker(); m_bgwModbusUpdater.WorkerSupportsCancellation = true; m_bgwModbusUpdater.WorkerReportsProgress = true; m_bgwModbusUpdater.DoWork += M_bgwModbusUpdater_DoWork; m_bgwModbusUpdater.ProgressChanged += M_bgwModbusUpdater_ProgressChanged; m_bgwModbusUpdater.RunWorkerAsync(); Regs = new common.devices.ACID_Stend.Registers(); myPane = zedGraphControl1.GraphPane; myPane2 = DropGraph.GraphPane; myPane3 = IR_graph.GraphPane; ColorSelect.SelectedItem = "White"; ScalSelect.SelectedItem = "2%"; LEDTrack.Value = 0; LEDLabel.Text = LEDTrack.Value.ToString(); OE_check.Checked = true; IRTrack.Value = 0; IR_val_lbl.Text = IRTrack.Value.ToString(); PUMPTrack.Value = 0; PUMPLabel.Text = PUMPTrack.Value.ToString(); Heater_flag = false; TBList.Add(PUMPTrack); TBList.Add(IRTrack); TBList.Add(LEDTrack); CBList.Add(ColorSelect); CBList.Add(ScalSelect); BtnList.Add(set_min_btn); BtnList.Add(set_red_max_btn); BtnList.Add(set_green_max); BtnList.Add(set_blue_max); BtnList.Add(set_white_max); ZGList.Add(zedGraphControl1); ZGList.Add(DropGraph); ZGList.Add(IR_graph); CHList.Add(Heater); CHList.Add(OE_check); EnableControl(false); }