예제 #1
0
        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();
        }
예제 #2
0
        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);
            }
        }
예제 #3
0
 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);
 }
예제 #4
0
 private void FormUpdate(common.devices.ACID_Stend.Registers Regs)
 {
     //upd_form
 }
예제 #5
0
 private void FormDataUpdate(common.devices.ACID_Stend.Registers Data)
 {
     //upd_regs
 }
예제 #6
0
        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);
        }