Example #1
0
        public static void AddThietBiToNhaMay(string tenNhaMay, ThietBiModel newThietBi)
        {
            var path = GetPathJson.getPathConfig("DeviceAndData.json");
            Dictionary <string, NhaMayModel> dicNhaMay = GetDicNhaMay();

            if (dicNhaMay.ContainsKey(tenNhaMay))
            {
                dicNhaMay[tenNhaMay].dsThietBi.Add(newThietBi.Name, newThietBi);
            }


            string jsonString = (new JavaScriptSerializer()).Serialize((object)dicNhaMay);

            File.WriteAllText(path, jsonString);
        }
Example #2
0
        public static void UpdateDuLieuSlave(string tenNhaMay, string tenThietBi, string oldNameSlave, SlaveModel newSlave)
        {
            var path = GetPathJson.getPathConfig("DeviceAndData.json");
            Dictionary <string, NhaMayModel> dicNhaMay = GetDicNhaMay();

            ThietBiModel thietBi = dicNhaMay[tenNhaMay].dsThietBi[tenThietBi];

            if (thietBi.dsSlave.ContainsKey(oldNameSlave))
            {
                thietBi.dsSlave.Remove(oldNameSlave);
                thietBi.dsSlave.Add(newSlave.Name, newSlave);
            }

            string jsonString = (new JavaScriptSerializer()).Serialize((object)dicNhaMay);

            File.WriteAllText(path, jsonString);
        }
        private void cms_Them_SlaveAddress(object sender, EventArgs e)
        {
            TreeNode node = rightClickNode;

            splitContainer.Panel2.Controls.Clear();

            ProtocolConfiguration protocolConfiguration = new ProtocolConfiguration(this);

            protocolConfiguration.Dock = DockStyle.Fill;
            protocolConfiguration.dgvDataProtocol.DataSource = null;
            protocolConfiguration.HideTabCauHinh();
            protocolConfiguration.isAddSlave = true;

            // get Thiet Bi
            string thietBi_name = node.Name == TreeName.Name.ThietBi.ToString() ? node.Text : "";

            if (!String.IsNullOrEmpty(thietBi_name))
            {
                ThietBiModel thietBi_model = ThietBiGiamSatService.GetThietBiGiamSat("Quang Ninh", thietBi_name);
                protocolConfiguration.SetThietBiAndSlave(thietBi_model, null);
            }

            protocolConfiguration.SetDsThietBi(ThietBiGiamSatService.GetDsThietBi("Quang Ninh"));

            //
            splitContainer.Panel2.Controls.Add(protocolConfiguration);


            formProtocolConfiguration = protocolConfiguration;//lưu vào biến toàn cục
            isInFormEdit = true;
            formProtocolConfiguration.isTabConfigHaveAnyChanged = false;
            formProtocolConfiguration.isTabDataHaveAnyChanged   = false;
            formProtocolConfiguration.isTabSlaveChanged         = false;

            /*formProtocolConfiguration = protocolConfiguration;
             * isInFormEdit = false;*/
        }
Example #4
0
        public static bool[] LayDuLieuTCPInputs(ModbusClient modbus, ushort quantityInputs, ushort minAddressInputs, ThietBiModel thietBiModel)
        {
            List <bool> readDiscreteInputs = new List <bool>();

            if (quantityInputs != 0)
            {
                try
                {
                    int soNguyenSauChia = quantityInputs / DonViQuantityMoiLanDoc;
                    for (int i = 0; i <= soNguyenSauChia; i++)
                    {
                        if (i != soNguyenSauChia)
                        {
                            int startAddress = i * DonViQuantityMoiLanDoc + minAddressInputs;
                            int quantity     = DonViQuantityMoiLanDoc - minAddressInputs;
                            var temp         = modbus.ReadDiscreteInputs(startAddress, (ushort)(quantity));
                            readDiscreteInputs.AddRange(temp.ToList());
                        }
                        else if (i == soNguyenSauChia)
                        {
                            int startAddress = i * DonViQuantityMoiLanDoc + minAddressInputs;
                            int quantity     = quantityInputs % DonViQuantityMoiLanDoc - minAddressInputs;
                            if (quantity != 0)
                            {
                                var temp = modbus.ReadDiscreteInputs(startAddress, (ushort)(quantity));
                                readDiscreteInputs.AddRange(temp.ToList());
                            }
                        }
                    }
                }
                catch (ModbusException ex)
                {
                    ExceptionFunctionCode(ex, thietBiModel);
                    throw;
                }
                catch (Exception ex)//Lỗi lấy dữ liệu thất bại
                {
                    ExceptionErrorConnection(ex, thietBiModel);
                    throw;
                }
            }
            return(readDiscreteInputs.ToArray());
        }
Example #5
0
        public static int[] LayDuLieuTCPHoldingRegister(ModbusClient modbus, ushort quantityHoldingRegisters, ushort minAddressHoldingRegister, ThietBiModel thietBiModel)
        {
            List <int> readHoldingRegister = new List <int>();

            if (quantityHoldingRegisters != 0)
            {
                try
                {
                    int soNguyenSauChia = quantityHoldingRegisters / DonViQuantityMoiLanDoc;
                    for (int i = 0; i <= soNguyenSauChia; i++)
                    {
                        if (i != soNguyenSauChia)
                        {
                            int startAddress = i * DonViQuantityMoiLanDoc + minAddressHoldingRegister;
                            int quantity     = DonViQuantityMoiLanDoc - minAddressHoldingRegister;
                            var temp         = modbus.ReadHoldingRegisters(startAddress, (ushort)(quantity));
                            readHoldingRegister.AddRange(temp.ToList());
                        }
                        else if (i == soNguyenSauChia)
                        {
                            int startAddress = i * DonViQuantityMoiLanDoc + minAddressHoldingRegister;
                            int quantity     = quantityHoldingRegisters % DonViQuantityMoiLanDoc - minAddressHoldingRegister;
                            if (quantity != 0)
                            {
                                var temp = modbus.ReadHoldingRegisters(startAddress, (ushort)(quantity));
                                readHoldingRegister.AddRange(temp.ToList());
                            }
                        }
                    }
                }
                catch (ModbusException ex)
                {
                    ExceptionFunctionCode(ex, thietBiModel);
                    throw;
                }
                catch (Exception ex)//Lỗi lấy dữ liệu thất bại
                {
                    ExceptionErrorConnection(ex, thietBiModel);
                    throw;
                }
            }
            return(readHoldingRegister.ToArray());
        }
        private void tvMain_NodeMouseDoubleClick(object sender, TreeNodeMouseClickEventArgs e)
        {
            e.Node.Expand();

            TreeNode node = tvMain.SelectedNode;

            //use for in ProtocolConfiguration
            selectedNodeDouble = tvMain.SelectedNode;

            var ports = SerialPort.GetPortNames();

            if (node != null && (node.Name == TreeName.Name.SlaveAddress.ToString() || node.Name == TreeName.Name.ThietBi.ToString()))
            {
                splitContainer.Panel2.Controls.Clear();

                ProtocolConfiguration protocolConfiguration = new ProtocolConfiguration(this);
                protocolConfiguration.Dock = DockStyle.Fill;

                protocolConfiguration.cbCOM.DataSource          = ports;
                protocolConfiguration.btnEditProtocol.Visible   = true;
                protocolConfiguration.btnAddNewProtocol.Visible = false;

                string thietBi_name = node.Name == TreeName.Name.ThietBi.ToString() ? node.Text : node.Parent.Text;
                string slave_name   = node.Name == TreeName.Name.SlaveAddress.ToString() ? node.Text : null;

                protocolConfiguration.txtTenGiaoThuc.Text  = thietBi_name;
                protocolConfiguration.txtSlaveAddress.Text = slave_name;

                ThietBiModel thietBi_model = ThietBiGiamSatService.GetThietBiGiamSat("Quang Ninh", thietBi_name);
                SlaveModel   slave_model   = ThietBiGiamSatService.GetDsSlave("Quang Ninh", thietBi_name, slave_name);
                if (node.Name == TreeName.Name.SlaveAddress.ToString())
                {
                    protocolConfiguration.txtScanRate.Text = slave_model.ScanRate.ToString();
                }


                protocolConfiguration.SetThietBiAndSlave(thietBi_model, slave_name);
                protocolConfiguration.SetDsThietBi(ThietBiGiamSatService.GetDsThietBi("Quang Ninh"));

                if (node.Name == TreeName.Name.SlaveAddress.ToString())
                {
                    protocolConfiguration.LoadDuLieuLenDgv();
                }


                if (node.Name == TreeName.Name.ThietBi.ToString())
                {
                    protocolConfiguration.HideTabDuLieu();
                    protocolConfiguration.HideTabSlave();
                }

                try
                {
                    ThietBiTCPIP deviceTemp = (ThietBiTCPIP)thietBi_model;
                    protocolConfiguration.txtIPAdress.Text = deviceTemp.IP;
                    protocolConfiguration.txtPort.Text     = deviceTemp.Port.ToString();
                    protocolConfiguration.cbProtocol.Text  = deviceTemp.Protocol.ToString();
                }
                catch
                {
                    ThietBiCOM deviceTemp = (ThietBiCOM)thietBi_model;
                    protocolConfiguration.cbCOM.Text      = deviceTemp.Com;
                    protocolConfiguration.cbBaud.Text     = deviceTemp.Baud.ToString();
                    protocolConfiguration.cbParity.Text   = deviceTemp.Parity.ToString();
                    protocolConfiguration.cbDataBit.Text  = deviceTemp.Databit.ToString();
                    protocolConfiguration.cbStopBit.Text  = deviceTemp.StopBits.ToString();
                    protocolConfiguration.cbProtocol.Text = deviceTemp.Protocol.ToString();
                }


                splitContainer.Panel2.Controls.Add(protocolConfiguration);
                formProtocolConfiguration = protocolConfiguration;//lưu vào biến toàn cục
                isInFormEdit = true;
                formProtocolConfiguration.isTabConfigHaveAnyChanged = false;
                formProtocolConfiguration.isTabDataHaveAnyChanged   = false;
                formProtocolConfiguration.isTabSlaveChanged         = false;
            }
        }
Example #7
0
        public static bool[] LayDuLieuCOMInputs(SerialPort serialPort, ushort quantityInputs, ushort minAddressInputs, ThietBiModel thietBiModel)
        {
            IModbusMaster master        = ModbusSerialMaster.CreateRtu(serialPort);
            List <bool>   discreteInput = new List <bool>();

            if (quantityInputs != 0)
            {
                try
                {
                    byte slaveAddress    = 1;
                    int  soNguyenSauChia = quantityInputs / DonViQuantityMoiLanDoc;
                    for (int i = 0; i <= soNguyenSauChia; i++)
                    {
                        if (i != soNguyenSauChia)
                        {
                            int startAddress = i * DonViQuantityMoiLanDoc + minAddressInputs;
                            int quantity     = DonViQuantityMoiLanDoc - minAddressInputs;
                            var temp         = master.ReadInputs(slaveAddress, (ushort)startAddress, (ushort)(quantity));
                            discreteInput.AddRange(temp.ToList());
                        }
                        else if (i == soNguyenSauChia)
                        {
                            int startAddress = i * DonViQuantityMoiLanDoc + minAddressInputs;
                            int quantity     = quantityInputs % DonViQuantityMoiLanDoc - minAddressInputs;
                            if (quantity != 0)
                            {
                                var temp = master.ReadInputs(slaveAddress, (ushort)startAddress, (ushort)(quantity));
                                discreteInput.AddRange(temp.ToList());
                            }
                        }
                    }
                }
                catch (TimeoutException ex)
                {
                    ExceptionTimeOut(ex, thietBiModel);
                    throw;
                }
                catch (Modbus.SlaveException ex)
                {
                    ExceptionErrorSlave(ex, thietBiModel);
                    throw;
                }
                catch (Exception ex)
                {
                    throw;
                }
            }
            return(discreteInput.ToArray());
        }
Example #8
0
        public static int[] LayDuLieuCOMHoldingRegisters(SerialPort serialPort, ushort quantityHoldingRegisters, ushort minAddressHoldingRegisters, ThietBiModel thietBiModel)
        {
            IModbusMaster master = ModbusSerialMaster.CreateRtu(serialPort);
            List <ushort> readHoldingRegistersUshortTpye = new List <ushort>();

            if (quantityHoldingRegisters != 0)
            {
                try
                {
                    byte slaveAddress    = 1;
                    int  soNguyenSauChia = quantityHoldingRegisters / DonViQuantityMoiLanDoc;
                    for (int i = 0; i <= soNguyenSauChia; i++)
                    {
                        if (i != soNguyenSauChia)
                        {
                            int startAddress = i * DonViQuantityMoiLanDoc + minAddressHoldingRegisters;
                            int quantity     = DonViQuantityMoiLanDoc - minAddressHoldingRegisters;
                            var temp         = master.ReadHoldingRegisters(slaveAddress, (ushort)startAddress, (ushort)(quantity));

                            readHoldingRegistersUshortTpye.AddRange(temp.ToList());
                        }
                        else if (i == soNguyenSauChia)
                        {
                            int startAddress = i * DonViQuantityMoiLanDoc + minAddressHoldingRegisters;
                            int quantity     = quantityHoldingRegisters % DonViQuantityMoiLanDoc - minAddressHoldingRegisters;
                            if (quantity != 0)
                            {
                                var temp = master.ReadHoldingRegisters(slaveAddress, (ushort)startAddress, (ushort)(quantity));
                                readHoldingRegistersUshortTpye.AddRange(temp.ToList());
                            }
                        }
                    }
                }
                catch (TimeoutException ex)
                {
                    ExceptionTimeOut(ex, thietBiModel);
                    throw;
                    //lỗi không đọc được dữ liệu
                }
                catch (Modbus.SlaveException ex)
                {
                    ExceptionErrorSlave(ex, thietBiModel);
                    throw;
                    //lỗi số bản ghi cần đọc vượt quá lượng bản ghi trả về
                }
                catch (Exception ex)
                {
                    throw;
                }
            }
            return(ConvertArrayUshortToIntArray(readHoldingRegistersUshortTpye));
        }