//Lưu dữ liệu từ datagridview vào list private bool saveToJson() { if (validation()) { Dictionary <string, DuLieuModel> ListDuLieuChoTungPLC = new Dictionary <string, DuLieuModel>(); string a = dgvDataProtocol.Rows[0].Cells[0].Value.ToString(); foreach (DataGridViewRow dr in dgvDataProtocol.Rows) { if (dr.Index == dgvDataProtocol.Rows.Count - 1) { break; } DuLieuModel duLieuTemp = new DuLieuModel(); duLieuTemp.Ten = dr.Cells[0].Value.ToString(); duLieuTemp.DiaChi = dr.Cells[1].Value.ToString(); duLieuTemp.DonViDo = dr.Cells[2].Value.ToString(); ListDuLieuChoTungPLC.Add(duLieuTemp.Ten, duLieuTemp); } deviceDic[txtTenGiaoThuc.Text].ListDuLieuChoTungPLC = ListDuLieuChoTungPLC; WriteListToJson(); return(true); } else { return(false); } }
//thêm dữ liệu protocol private void btnAddData_Click(object sender, EventArgs e) { if (validation()) { Dictionary <string, DuLieuModel> ListDuLieuChoTungPLC = new Dictionary <string, DuLieuModel>(); string a = dgvDataProtocol.Rows[0].Cells[0].Value.ToString(); foreach (DataGridViewRow dr in dgvDataProtocol.Rows) { if (dr.Index == dgvDataProtocol.Rows.Count - 1) { break; } DuLieuModel duLieuTemp = new DuLieuModel(); duLieuTemp.Ten = dr.Cells[0].Value.ToString(); duLieuTemp.DiaChi = dr.Cells[1].Value.ToString(); duLieuTemp.DonViDo = dr.Cells[2].Value.ToString(); ListDuLieuChoTungPLC.Add(duLieuTemp.Ten, duLieuTemp); } deviceDic[txtTenGiaoThuc.Text].ListDuLieuChoTungPLC = ListDuLieuChoTungPLC; WriteListToJson(); MessageBox.Show("Lưu thành công !", "Cảnh báo", MessageBoxButtons.OK, MessageBoxIcon.Information); } }
private void LuuTruDuLieuCOM(DuLieuModel duLieu, ThietBiModel thietBi, ArrayList DsDuLieuNhanDuoc) { try { if (duLieu.DiaChi.StartsWith("0")) { bool[] DsDuLieuCoils = DsDuLieuNhanDuoc[0] as bool[]; if (DsDuLieuCoils != null) { int diaChiCoils = Convert.ToInt32(duLieu.DiaChi) - thietBi.MinAddressCoils; duLieu.GiaTri = DsDuLieuCoils[diaChiCoils].ToString(); } } else if (duLieu.DiaChi.StartsWith("1")) { bool[] DsDuLieuInputs = DsDuLieuNhanDuoc[0] as bool[]; if (DsDuLieuInputs != null) { int diaChiInputs = Convert.ToInt32(duLieu.DiaChi) - 10000 - thietBi.MaxAddressInputs; duLieu.GiaTri = DsDuLieuInputs[diaChiInputs].ToString(); } } else if (duLieu.DiaChi.StartsWith("3")) { int[] DsDuLieuInputRegisters = DsDuLieuNhanDuoc[0] as int[]; if (DsDuLieuInputRegisters != null) { int diaChiInputRegisters = Convert.ToInt32(duLieu.DiaChi) - 30000 - thietBi.MinAddressInputRegisters; duLieu.GiaTri = DsDuLieuInputRegisters[diaChiInputRegisters].ToString(); } } else if (duLieu.DiaChi.StartsWith("4")) { int[] DsDuLieuHoldingRegisters = DsDuLieuNhanDuoc[0] as int[]; if (DsDuLieuHoldingRegisters != null) { int diaChiHoldingRegisters = Convert.ToInt32(duLieu.DiaChi) - 40000 - thietBi.MinAddressHoldingRegisters; duLieu.GiaTri = DsDuLieuHoldingRegisters[diaChiHoldingRegisters].ToString(); } } thietBi.TrangThaiTinHieu = TrangThaiKetNoi.Good; } catch (Exception ex) { } finally { duLieu.ThoiGianDocGiuLieu = DateTime.Now; } }
//lấy dữ liệu của các thiết bị private void getDataDevice(KeyValuePair <string, DeviceModel> deviceUnit, string filePath) { string[] output = new string[deviceUnit.Value.ListDuLieuChoTungPLC.Count]; //doc tung dong trong list data cua 1 device for (int i = 0; i < deviceUnit.Value.ListDuLieuChoTungPLC.Count; i++) { DuLieuModel duLieuTemp = deviceUnit.Value.ListDuLieuChoTungPLC.ElementAt(i).Value; string giaTriDuLieu = ""; try { if (Convert.ToInt32(duLieuTemp.DiaChi) <= 65536) { bool[] readCoil = mobus.ReadCoils(Convert.ToInt32(duLieuTemp.DiaChi), 1); giaTriDuLieu = readCoil[0].ToString(); } else if (Convert.ToInt32(duLieuTemp.DiaChi) <= 165536 && Convert.ToInt32(duLieuTemp.DiaChi) >= 100001) { bool[] discreteInput = mobus.ReadDiscreteInputs(Convert.ToInt32(duLieuTemp.DiaChi) - 100001, 1); giaTriDuLieu = discreteInput[0].ToString(); } else if (Convert.ToInt32(duLieuTemp.DiaChi) <= 365536 && Convert.ToInt32(duLieuTemp.DiaChi) >= 300001) { int[] readRegister = mobus.ReadInputRegisters(Convert.ToInt32(duLieuTemp.DiaChi) - 300001, 1); giaTriDuLieu = readRegister[0].ToString(); } else if (Convert.ToInt32(duLieuTemp.DiaChi) <= 465536 && Convert.ToInt32(duLieuTemp.DiaChi) >= 400001) { int[] readHoldingRegister = mobus.ReadHoldingRegisters(Convert.ToInt32(duLieuTemp.DiaChi) - 400001, 1); giaTriDuLieu = readHoldingRegister[0].ToString(); } duLieuTemp.GiaTri = Convert.ToInt32(giaTriDuLieu); duLieuTemp.ThoiGianDocGiuLieu = DateTime.Now; deviceUnit.Value.TrangThaiKetNoi = 1; } catch (Exception ex) { } } }
public static Dictionary <string, DiemDoModel> LayDsDiemDoTuDgv(DataGridView dgvDataProtocol) { Dictionary <string, DiemDoModel> dsDiemDoGiamSat = new Dictionary <string, DiemDoModel>(); foreach (DataGridViewRow dr in dgvDataProtocol.Rows) { if (dr.Index == dgvDataProtocol.Rows.Count - 1) { break; } DuLieuModel duLieu = new DuLieuModel(); duLieu.Ten = dr.Cells[0].Value.ToString(); duLieu.DiemDo = dr.Cells[1].Value.ToString(); duLieu.DiaChi = dr.Cells[2].Value.ToString(); duLieu.Scale = dr.Cells[3].Value.ToString(); duLieu.DonViDo = dr.Cells[4].Value.ToString(); if (dsDiemDoGiamSat.ContainsKey(duLieu.DiemDo)) { dsDiemDoGiamSat[duLieu.DiemDo].DsDulieu.Add(duLieu.Ten, duLieu); } else { dsDiemDoGiamSat.Add( duLieu.DiemDo, new DiemDoModel( duLieu.DiemDo, new Dictionary <string, DuLieuModel>() ) ); dsDiemDoGiamSat[duLieu.DiemDo].DsDulieu.Add(duLieu.Ten, duLieu); } } return(dsDiemDoGiamSat); }