public CPara Clone() { CPara pa = new CPara(); pa.RunStatus = this.RunStatus; pa.AlarmCode = this.AlarmCode; for (int i = 0; i < pa.Phase.Count; i++) { pa.Phase[i].name = this.Phase[i].name; pa.Phase[i].acv = this.Phase[i].acv; pa.Phase[i].aci = this.Phase[i].aci; pa.Phase[i].power = this.Phase[i].power; } return(pa); }
/// <summary> /// 读取滤波器数据 /// </summary> /// <param name="addr"></param> /// <param name="para"></param> /// <param name="er"></param> /// <returns></returns> public bool ReadData(int addr, out CPara para, out string er) { para = new CPara(); er = string.Empty; try { //读取运行状态 int rVal1 = 0; if (!Read(addr, ERegType.D, 0x6008, out rVal1, out er)) { return(false); } para.RunStatus = (rVal1 & (1 << 3)) == 0 ? 0 : 1; para.AlarmCode = (rVal1 & (1 << 6)) == 0 ? 0 : 1; //读取电网有效电压 int[] rVal = new int[3]; if (!Read(addr, ERegType.D, 0x600D, ref rVal, out er)) { return(false); } for (int i = 0; i < rVal.Length; i++) { para.Phase[i].acv = (double)rVal[i] / 10; } //读取电网有效电流 if (!Read(addr, ERegType.D, 0x6016, ref rVal, out er)) { return(false); } for (int i = 0; i < rVal.Length; i++) { para.Phase[i].aci = (double)rVal[i] / 10; } //读取电网有效功率 if (!Read(addr, ERegType.D, 0x0180, ref rVal, out er)) { return(false); } for (int i = 0; i < rVal.Length; i++) { para.Phase[i].power = (double)rVal[i] / 10; } return(true); } catch (Exception ex) { er = ex.ToString(); return(false); } }