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); }
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;*/ }
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()); }
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; } }
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()); }
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)); }