private double GetBT1FromCRL_G(Xd100e xd100eDevice) { double r = 0d; /* * foreach (IDevice device in xd100eDevice.Station.Devices) * { * if (device is IBT1Provider) * { * IBT1Provider bt1Pro = device as IBT1Provider; * if (bt1Pro.BT1DataDT != DateTime.MinValue) * { * r = bt1Pro.BT1; * } * } * } */ // 1. get heat kind device collection // 2. get device collection with place != unknown // 3. if device count > 1, select first device // 4. get device.bt1 DeviceCollection heatDevices = xd100eDevice.Station.Devices.GetDevices(KIND); RemoveUnknownPlaceDevice(heatDevices); bool hasData = heatDevices.HasData(HasDataOption.All); if (hasData) { r = Calc(heatDevices, "BT", CalcType.Avg); } return(r); }
/// <summary> /// get crl-g gt1 property /// </summary> /// <param name="xd100eDevice"></param> /// <returns></returns> private double GetGT1FromCRL_G(Xd100e xd100eDevice) { double r = 0d; DeviceCollection heatDevices = xd100eDevice.Station.Devices.GetDevices(KIND); RemoveUnknownPlaceDevice(heatDevices); bool hasData = heatDevices.HasData(HasDataOption.All); if (hasData) { r = Calc(heatDevices, "GT", CalcType.Avg); } return(r); }
/// <summary> /// /// </summary> /// <param name="task"></param> /// <param name="parseResult"></param> public override void OnProcess(ITask task, IParseResult pr) { if (pr.IsSuccess) { //Xd100eData data = Xd100eData.GetCachedData(); Xd100e xd100eDevice = (Xd100e)task.Device; Xd100eData data = xd100eDevice.GetCachedData(); Console.WriteLine("ori xd100e id: " + GuidHelper.ConvertToInt32(xd100eDevice.Guid)); string opera = task.Opera.Name; if (StringHelper.Equal(opera, READ_REAL)) { for (int i = Xd100eData.BeginChannelNO; i <= Xd100eData.EndChannelNO; i++) { int no = i; string channelName = GetChannelName(no); float val = Convert.ToSingle(pr.Results[channelName]); val /= 100f; data.SetChannelDataAI(no, val); data.IsSetAI = true; } } else if (StringHelper.Equal(opera, READ_REAL_DI)) { //XD100EData data = xd100eDevice.XD100EData; for (int i = Xd100eData.BeginChannelNO; i <= Xd100eData.EndChannelNO; i++) { int no = i; string channelName = GetChannelName(no); byte value = Convert.ToByte(pr.Results[channelName]); data.SetChannelDataDI(no, value > 0); data.IsSetDI = true; } } // // if (data.IsComplete()) { double ir = 0d, sr = 0d; //bool hasRecuritFluxDevice; string recuritEx = string.Empty; //bool success = GetFluxValues(xd100eDevice, FluxPlace.RecruitSide, out hasRecuritFluxDevice, // out ir, out sr, out recuritEx); // get kind == fluxdevice device collection // DeviceCollection rDevices = xd100eDevice.Station.Devices.GetDevices(KIND_FLUX_DEVICE); rDevices = Filter(rDevices, FluxPlace.RecruitSide); bool hasRecuritFluxDevice = rDevices.Count > 0; bool hasRecuritFluxData = rDevices.HasData(HasDataOption.All); if (hasRecuritFluxData) { ir = Calc(rDevices, "InstantFlux", CalcType.Sum); sr = Calc(rDevices, "Sum", CalcType.Sum); recuritEx = GetRecuritEx(rDevices); } // get recruite device collection // get recruite data // // get kind == heatdevcie device collection // check has data // [x] get place == first ? // get device gt bt double if1 = 0d, sf1 = 0d, gt1 = 0d, bt1 = 0d, ih1 = 0d, sh1 = 0d; //bool hasFirstFluxDevice; //string firstEx; //bool success2 = GetFluxValues(xd100eDevice, FluxPlace.FirstSide, out hasFirstFluxDevice, // out if1, out sf1, out firstEx); DeviceCollection hs = xd100eDevice.Station.Devices.GetDevices(KIND); hs = Filter(hs, FluxPlace.FirstSide); bool hasFirstFluxDevice = hs.Count > 0; bool hasFirstFluxData = hs.HasData(HasDataOption.All); if (hasFirstFluxData) { if1 = Calc(hs, "InstantFlux", CalcType.Sum); sf1 = Calc(hs, "Sum", CalcType.Sum); gt1 = Calc(hs, "GT", CalcType.Avg); bt1 = Calc(hs, "BT", CalcType.Avg); ih1 = Calc(hs, "InstantHeat", CalcType.Sum); sh1 = Calc(hs, "SumHeat", CalcType.Sum); } bool success = true; if (hasRecuritFluxDevice) { if (hasRecuritFluxData) { data.IR = ir; data.SR = sr; data.REx = recuritEx; } else { success = false; } } // // if (success) { if (hasFirstFluxDevice) { if (hasFirstFluxData) { // xd100e ai5 == if1 // // ai1 - gt1, ai2 - bt1 // data.IF1 = if1; data.SF1 = sf1; data.AI5 = Convert.ToSingle(if1); data.AI1 = Convert.ToSingle(gt1); data.AI2 = Convert.ToSingle(bt1); data.IH1 = ih1; data.SH1 = sh1; } else { success = false; } } } if (success) { data.DT = DateTime.Now; xd100eDevice.DeviceDataManager.Last = data; int deviceID = GuidHelper.ConvertToInt32(xd100eDevice.Guid); Console.WriteLine("write xd100e id: " + deviceID); DBI.Instance.InsertXd100eData(deviceID, data); } //if (success && success2) //{ // data.IR = ir; // data.SR = sr; // data.REx = recuritEx; // data.IF1 = if1; // data.SF1 = sf1; // if (hasFirstFluxDevice) // { // // xd100e ai5 == if1 // // // // ai1 - gt1, ai2 - bt1 // // // data.AI5 = Convert.ToSingle(if1); // data.AI1 = Convert.ToSingle(GetGT1FromCRL_G(xd100eDevice)); // data.AI2 = Convert.ToSingle(GetBT1FromCRL_G(xd100eDevice)); // } // data.DT = DateTime.Now; // xd100eDevice.DeviceDataManager.Last = data; // int deviceID = GuidHelper.ConvertToInt32(xd100eDevice.Guid); // Console.WriteLine("write xd100e id: " + deviceID); // DBI.Instance.InsertXd100eData(deviceID, data); //} } } }
/// <summary> /// /// </summary> /// <param name="d"></param> /// <param name="parseResult"></param> private void ProcessReadReal(ITask task, IParseResult pr) { GRData data = new GRData(); data.DT = DateTime.Now; data.GT1 = Convert.ToSingle(pr.Results["GT1"]); data.BT1 = Convert.ToSingle(pr.Results["BT1"]); data.GT2 = Convert.ToSingle(pr.Results["GT2"]); data.BT2 = Convert.ToSingle(pr.Results["BT2"]); data.OT = Convert.ToSingle(pr.Results["OT"]); data.GTBase2 = Convert.ToSingle(pr.Results["GTBase2"]); data.GP1 = Convert.ToSingle(pr.Results["GP1"]); data.BP1 = Convert.ToSingle(pr.Results["BP1"]); data.WL = Convert.ToSingle(pr.Results["WL"]); data.GP2 = Convert.ToSingle(pr.Results["GP2"]); data.BP2 = Convert.ToSingle(pr.Results["BP2"]); data.I1 = Convert.ToSingle(pr.Results["I1"]); data.IR = Convert.ToSingle(pr.Results["IR"]); data.I2 = Convert.ToSingle(pr.Results["I2"]); data.S2 = Convert.ToInt32(pr.Results["S2"]); data.S1 = Convert.ToInt32(pr.Results["S1"]); data.SR = Convert.ToInt32(pr.Results["SR"]); data.OD = Convert.ToInt32(pr.Results["OD"]); //data.IH1 = Convert.ToDouble (parseResult.Results ["IH1"]); //data.SH1 = Convert.ToDouble (parseResult.Results ["SH1"]); data.IH1 = 0d; data.SH1 = 0d; // 2012-10-09 xd1100 pump status // bool[] pumpStatusArray = (bool[])pr.Results["pumpstate"]; data.CM1 = IsPumpRun(pumpStatusArray[0]); data.CM2 = IsPumpRun(pumpStatusArray[1]); data.CM3 = IsPumpRun(pumpStatusArray[2]); data.RM1 = IsPumpRun(pumpStatusArray[3]); data.RM2 = IsPumpRun(pumpStatusArray[4]); object objWarn = pr.Results["Warn"]; IList listWarn = (IList)objWarn; bool isContainsPowerAlaram = listWarn.Contains(POWER_ALARM); if (!isContainsPowerAlaram) { if (HasPowerAlaramInStatus(task.Device as XD1100Device)) { listWarn.Add(POWER_ALARM); } } WarnWrapper ww = new WarnWrapper(listWarn); data.Warn = ww; XD1100Device d = (XD1100Device)task.Device; //List<IFluxProvider> fluxProviderList = GetFluxProviderList(d); DeviceCollection fluxDevices = d.Station.Devices.GetDevices(this.KIND_FLUX); fluxDevices = RemoveUnkonwnPlaceDevice(fluxDevices); bool hasFluxDevices = fluxDevices.Count > 0; bool hasFluxData = fluxDevices.HasData(HasDataOption.All); bool success = true; if (hasFluxDevices) { if (hasFluxData) { Hashtable fluxResultHashTable = GetFluxDatas(fluxDevices); foreach (object obj in fluxResultHashTable.Keys) { FluxPlace place = (FluxPlace)obj; List <double> list = (List <double>)fluxResultHashTable[obj]; switch (place) { case FluxPlace.FirstSide: data.I1 = Convert.ToSingle(list[0]); data.S1 = Convert.ToInt32(list[1]); break; case FluxPlace.SecondSide: data.I2 = Convert.ToSingle(list[0]); data.S2 = Convert.ToInt32(list[1]); break; case FluxPlace.RecruitSide: data.IR = Convert.ToSingle(list[0]); data.SR = Convert.ToInt32(list[1]); break; default: break; } } } else { success = false; } } if (!success) { return; } DeviceCollection heatDevices = d.Station.Devices.GetDevices(KIND_HEAT); //heatDevices = RemoveUnkonwnPlaceDevice(heatDevices); heatDevices = this.Filter(heatDevices, FluxPlace.FirstSide); bool hasHeatDevices = heatDevices.Count > 0; bool hasHeatData = heatDevices.HasData(HasDataOption.All); if (hasHeatDevices) { if (hasHeatData) { double instantFlux = 0d; double sumFlux = 0d; double ih = 0d; double sh = 0d; foreach (IDevice hd in heatDevices) { IData last = hd.DeviceDataManager.Last; ih += Convert.ToDouble(last.GetValue("InstantHeat")); sh += Convert.ToDouble(last.GetValue("SumHeat")); instantFlux += Convert.ToDouble(last.GetValue("InstantFlux")); sumFlux += Convert.ToDouble(last.GetValue("Sum")); } data.I1 = Convert.ToSingle(instantFlux); data.S1 = Convert.ToInt32(sumFlux); data.IH1 = ih; data.SH1 = sh; } else { success = false; } } if (!success) { return; } switch (d.HtmMode.ModeValue) { case ModeValue.Indirect: data.CyclePumpDatas.Add(new PumpData("1#", Convert.ToInt32(pr.Results["cyclefrequency"]))); data.RecruitPumpDatas.Add(new PumpData("1#", Convert.ToInt32(pr.Results["recruitfrequency"]))); break; case ModeValue.Direct: data.GT1 = data.GT2; data.BT1 = data.BT2; break; case ModeValue.Mixed: data.BT1 = data.BT2; data.CyclePumpDatas.AddRange( new PumpData("1#", Convert.ToInt32(pr.Results["cyclefrequency"])), new PumpData("2#", Convert.ToInt32(pr.Results["recruitfrequency"])), new PumpData("3#", Convert.ToInt32(pr.Results["I2"]))); break; } d.DeviceDataManager.Last = data; // save // int id = GuidHelper.ConvertToInt32(d.Guid); DBI.Instance.InsertXD1100Data(id, data); }