コード例 #1
0
ファイル: XD1100DeviceProcessor.cs プロジェクト: hkiaipc/C3
        /// <summary>
        /// 
        /// </summary>
        /// <param name="d"></param>
        /// <param name="pr"></param>
        private void ProcessReadReal(ITask task, IParseResult pr)
        {
            XD1100Data data = new XD1100Data();

            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 (pr.Results ["IH1"]);
            //data.SH1 = Convert.ToDouble (pr.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);
        }
コード例 #2
0
ファイル: DBI.cs プロジェクト: hkiaipc/C3
        /// <summary>
        /// 
        /// </summary>
        /// <param name="id"></param>
        /// <param name="data"></param>
        internal void InsertXD1100Data(int id, XD1100Data data)
        {
            KeyValueCollection kvs = new KeyValueCollection();
            SqlCommand cmd = new SqlCommand();

            string s = " INSERT INTO tblGRData(DT, GT1, BT1, GT2, BT2, OT, GTBase2, GP1, BP1, WL, GP2, BP2, I1, I2, IR, S1, S2, SR, OD, PA2, IH1, SH1, CM1, CM2, CM3, RM1, RM2, DeviceID)" +
                " VALUES(@dt, @gt1, @BT1, @GT2, @BT2, @OT, @GTBase2, @GP1, @BP1, @WL, @GP2, @BP2, @I1, @I2, @IR, @S1, @S2, @SR, @OD, @PA2, @IH1, @SH1, @CM1, @CM2, @CM3, @RM1, @RM2, @DeviceID)";

            cmd.CommandText = s;
            SqlParameterCollection p = cmd.Parameters ;

            AddSqlParameter(p, "DT", data.DT);
            AddSqlParameter(p, "GT1", data.GT1);
            AddSqlParameter(p, "BT1", data.BT1);
            AddSqlParameter(p, "GT2", data.GT2);
            AddSqlParameter(p, "BT2", data.BT2);
            AddSqlParameter(p, "OT", data.OT);
            AddSqlParameter(p, "GTBase2", data.GTBase2);
            AddSqlParameter(p, "GP1", data.GP1);
            AddSqlParameter(p, "BP1", data.BP1);
            AddSqlParameter(p, "WL", data.WL);
            AddSqlParameter(p, "GP2", data.GP2);
            AddSqlParameter(p, "BP2", data.BP2);
            AddSqlParameter(p, "I1", data.I1);
            AddSqlParameter(p, "I2", data.I2);
            AddSqlParameter(p, "IR", data.IR);
            AddSqlParameter(p, "S1", data.S1);
            AddSqlParameter(p, "S2", data.S2);
            AddSqlParameter(p, "SR", data.SR);
            AddSqlParameter(p, "OD", data.OD);
            AddSqlParameter(p, "PA2", data.PA2);
            AddSqlParameter(p, "IH1", data.IH1);
            AddSqlParameter(p, "SH1", data.SH1);

            AddSqlParameter(p, "CM1", data.CM1.PumpStatusEnum);
            AddSqlParameter(p, "CM2", data.CM2.PumpStatusEnum);
            AddSqlParameter(p, "CM3", data.CM3.PumpStatusEnum);
            AddSqlParameter(p, "RM1", data.RM1.PumpStatusEnum);
            AddSqlParameter(p, "RM2", data.RM2.PumpStatusEnum);
            AddSqlParameter(p, "DeviceID", id);

            ExecuteScalar(cmd);

            InsertGRAlarmData(id, data.DT, data.Warn.WarnList);
        }