Exemple #1
0
        public float getLastData(DjNoiseInfo slNoiseInfo)
        {
            using (OracleConnection conn = new OracleConnection(OracleHelper.ConnectionStringOrderDistributedTransaction))
            {
                String SQL = " SELECT DDATA " +
                             " FROM " +
                             " (SELECT * " +
                             " FROM AD_DJ_NOISE " +
                             " WHERE DEVCODE = :devCode " +
                             " and UPTIME < :uptime " +
                             " order by UPTIME desc) " +
                             " where rownum=1 ";

                /*
                 * String SQL = " SELECT DDATA " +
                 *           " FROM AD_DJ_NOISE " +
                 *           " WHERE DEVCODE = :devCode " +
                 *           " and UPTIME < :uptime " +
                 *           " and rownum=1 " +
                 *           " order by UPTIME desc ";
                 * */
                OracleParameter[] oraParams = new OracleParameter[] {
                    new OracleParameter(":devCode",slNoiseInfo.DEVID),
                    new OracleParameter(":uptime",slNoiseInfo.UPTIME)
                };
                DataTable dt = OracleHelper.ExecuteDataset(conn,CommandType.Text,SQL,oraParams).Tables[0];
                if (dt.Rows.Count > 0)
                {
                    float lastData = float.Parse(dt.Rows[0]["DDATA"].ToString());
                    return(lastData);
                }
            }
            return(-100);
        }
Exemple #2
0
        //0000 0071 前四个字节暂时不用
        public override void execute(Tag tag)
        {
            //TODO LIST:解析流量数据保存流量数据
            UploadTag noiseTag   = tag as UploadTag;
            int       itv        = noiseTag.CollectInter;
            String    collecTime = noiseTag.CollectTime;
            int       len        = noiseTag.Len;
            String    dataValue  = noiseTag.DataValue;

            AdlerCmd.adlerSession.Logger.Info("噪声数据上传TAG:oid:" + noiseTag.Oid + " 采集间隔: " +
                                              itv + "采集时间:" + collecTime + "上传数值:" + dataValue);

            int num = len / 4; //上传的流量数据个数
            List <Model.DjNoiseInfo> djs = new List <DjNoiseInfo>();

            DateTime baseTime = Convert.ToDateTime(AdlerCmd.currentSystemDate + " " + collecTime);

            for (int i = 0; i < num; i++)
            {
                DjNoiseInfo noiseInfo = new DjNoiseInfo();
                //TODO LIST:密集开始时间、密集间隔、密集样本数、无线开启时间、
                //无线关闭时间、密集噪声、电池电量
                noiseInfo.LOGTIME = DateTime.Now;
                noiseInfo.UPTIME  = baseTime.AddMinutes(i * itv);
                noiseInfo.DEVID   = AdlerCmd.devCode;
                String dStr = dataValue.Substring(i * 8 + 4, 4);
                noiseInfo.DDATA = int.Parse("0" + dStr.Substring(1, 1) + dStr.Substring(2, 2), System.Globalization.NumberStyles.HexNumber).ToString();
                djs.Add(noiseInfo);
            }
            new BLL.DjNoise().insert(djs);
            new BLL.DjNoise().saveAlarmInfo(djs);
            new BLL.DjNoise().updateDevStatus(AdlerCmd.devCode);
            AdlerCmd.adlerSession.Logger.Info("噪声数据保存成功");
        }
Exemple #3
0
        private AlarmRecordInfo getAlarmRecord(AlarmRuleInfo alarmRuleInfo, DjNoiseInfo slNoiseInfo)
        {
            if (null != alarmRuleInfo)
            {
                float    curValue   = float.Parse(slNoiseInfo.DDATA);
                IDevice  deviceDal  = SensorHub.DALFactory.Device.Create();
                IDjNoise slNoiseDal = SensorHub.DALFactory.DjNoise.Create();

                AlarmRecordInfo alarmRecordInfo = new AlarmRecordInfo();
                alarmRecordInfo.ACTIVE           = true;
                alarmRecordInfo.DEVICE_CODE      = slNoiseInfo.DEVID;
                alarmRecordInfo.DEVICE_ID        = alarmRuleInfo.DeviceId;
                alarmRecordInfo.DEVICE_TYPE_NAME = deviceDal.getDevTypeByCode(slNoiseInfo.DEVID);
                alarmRecordInfo.ITEMNAME         = "噪声值";
                alarmRecordInfo.ITEMVALUE        = curValue.ToString();
                alarmRecordInfo.MESSAGE_STATUS   = 0;
                alarmRecordInfo.RECORDCODE       = "";
                alarmRecordInfo.RECORDDATE       = System.DateTime.Now;

                if (alarmRuleInfo.HighValue != 0 && curValue > alarmRuleInfo.HighValue)
                {
                    alarmRecordInfo.MESSAGE = "管线泄漏";
                    return(alarmRecordInfo);
                }

                if (alarmRuleInfo.LowValue != 0 && curValue < alarmRuleInfo.LowValue)
                {
                    alarmRecordInfo.MESSAGE = "噪声低于下限";
                    //return alarmRecordInfo;
                    return(null);
                }

                if (alarmRuleInfo.Saltation != 0)
                {
                    float lastData = slNoiseDal.getLastData(slNoiseInfo);
                    if (-100 != lastData && Math.Abs(curValue - lastData) > alarmRuleInfo.Saltation)
                    {
                        alarmRecordInfo.MESSAGE = "噪声异常";
                        // return alarmRecordInfo;
                        return(null);
                    }
                }
            }
            return(null);
        }
Exemple #4
0
        /// <summary>
        /// An internal function to bind values parameters for insert
        /// </summary>
        /// <param name="parms">Database parameters</param>
        /// <param name="noise">Values to bind to parameters</param>
        private void SetAdapterParameters(OracleParameter[] parms, DjNoiseInfo noise)
        {
            parms[0].Value = noise.DEVID;

            if (null != noise.DDATA)
            {
                parms[1].Value = noise.DDATA;
            }
            else
            {
                parms[1].Value = DBNull.Value;
            }

            if (null != noise.DBEGIN)
            {
                parms[2].Value = noise.DBEGIN;
            }
            else
            {
                parms[2].Value = DBNull.Value;
            }

            if (null != noise.DINTERVAL)
            {
                parms[3].Value = noise.DINTERVAL;
            }
            else
            {
                parms[3].Value = DBNull.Value;
            }

            if (null != noise.DCOUNT)
            {
                parms[4].Value = noise.DCOUNT;
            }
            else
            {
                parms[4].Value = DBNull.Value;
            }

            if (null != noise.WARELESSOPEN)
            {
                parms[5].Value = noise.WARELESSOPEN;
            }
            else
            {
                parms[5].Value = DBNull.Value;
            }

            if (null != noise.WARELESSCLOSE)
            {
                parms[6].Value = noise.WARELESSCLOSE;
            }
            else
            {
                parms[6].Value = DBNull.Value;
            }

            if (null != noise.CELL)
            {
                parms[7].Value = noise.CELL;
            }
            else
            {
                parms[7].Value = DBNull.Value;
            }

            if (null != noise.SIGNAL)
            {
                parms[8].Value = noise.SIGNAL;
            }
            else
            {
                parms[8].Value = DBNull.Value;
            }

            if (null != noise.STATUS)
            {
                parms[9].Value = noise.STATUS;
            }
            else
            {
                parms[9].Value = DBNull.Value;
            }

            if (null != noise.UPTIME)
            {
                parms[10].Value = noise.UPTIME;
            }
            else
            {
                parms[10].Value = DBNull.Value;
            }

            if (null != noise.LOGTIME)
            {
                parms[11].Value = noise.LOGTIME;
            }
            else
            {
                parms[11].Value = DBNull.Value;
            }
        }
Exemple #5
0
        public override void ExecuteCommand(DGNSZSession session, StringRequestInfo requestInfo)
        {
            try
            {
                //LSNOISE:02,0075,01,FF,000032,51,000069130118,0200041E0500051E0500780A,1A0F0D090E,
                //FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF,FF,
                //FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
                //FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF,59,9F1E,03

                string[] data = requestInfo.Body.Split(',');
                if (string.IsNullOrEmpty(session.MacID))
                {
                    session.MacID = data[6];
                }

                string cfg   = data[7];  //探头配置
                string lData = data[9];  //松散噪声
                string dData = data[11]; //密集噪声

                //密集噪声个数
                int count = Int32.Parse(cfg.Substring(6, 2), System.Globalization.NumberStyles.HexNumber);

                //密集间隔
                int interval = Int16.Parse(cfg.Substring(4, 2), System.Globalization.NumberStyles.HexNumber);

                //采集时间
                string year = (Int32.Parse(data[8].Substring(8, 2), System.Globalization.NumberStyles.HexNumber) + 2000).ToString();
                string mon  = Int32.Parse(data[8].Substring(6, 2), System.Globalization.NumberStyles.HexNumber).ToString();
                string day  = Int32.Parse(data[8].Substring(4, 2), System.Globalization.NumberStyles.HexNumber).ToString();
                // string time = Utility.CodeUtils.String2Byte(cfg.Substring(2, 2)) + ":" + Utility.CodeUtils.String2Byte(cfg.Substring(0, 2)) + ":00";
                string   time   = Utility.CodeUtils.String2Byte(cfg.Substring(0, 2)) + ":" + Utility.CodeUtils.String2Byte(cfg.Substring(2, 2)) + ":00";
                DateTime upTime = Convert.ToDateTime(year + "-" + mon + "-" + day + " " + time);

                List <Model.DjNoiseInfo> djs = new List <DjNoiseInfo>();
                for (int i = 0; i < count; i++)
                {
                    Model.DjNoiseInfo dj = new DjNoiseInfo();

                    //获取设备ID
                    dj.DEVID = session.MacID;

                    //密集开始时间
                    dj.DBEGIN = time;

                    //密集间隔
                    dj.DINTERVAL = interval.ToString();

                    //密集样本数
                    dj.DCOUNT = count.ToString();

                    //无线开始时间
                    dj.WARELESSOPEN = Utility.CodeUtils.String2Byte(cfg.Substring(8, 2)) + ":" + Utility.CodeUtils.String2Byte(cfg.Substring(10, 2)) + ":00";

                    //无线关闭时间
                    dj.WARELESSCLOSE = Utility.CodeUtils.String2Byte(cfg.Substring(12, 2)) + ":" + Utility.CodeUtils.String2Byte(cfg.Substring(14, 2)) + ":00";

                    //密集噪声
                    string dStr = dData.Substring(i * 4, 4);
                    dj.DDATA = int.Parse(dStr.Substring(2, 2) + dStr.Substring(0, 2), System.Globalization.NumberStyles.HexNumber).ToString();

                    //电池电量
                    dj.CELL = Int16.Parse(data[10], System.Globalization.NumberStyles.HexNumber).ToString();

                    dj.UPTIME = upTime;

                    //录入时间
                    dj.LOGTIME = DateTime.Now;

                    djs.Add(dj);

                    upTime = upTime.AddMinutes(interval);
                }
                new BLL.DjNoise().insert(djs);
                new BLL.DjNoise().saveAlarmInfo(djs);
                new BLL.DjNoise().updateDevStatus(session.MacID);
                session.Logger.Info("多功能漏损监测仪:漏损躁声开始保存!");
            }
            catch (Exception e)
            {
                session.Logger.Error("===================================================================");
                session.Logger.Error("多功能漏损监测仪:漏损躁声保存异常");
                session.Logger.Error(requestInfo.Body);
                session.Logger.Error(e.ToString());
                session.Logger.Error("===================================================================");
            }
            finally
            {
                session.Logger.Info("===================================================================");
            }
        }