コード例 #1
0
ファイル: SlNoise.cs プロジェクト: predatorZhang/SensorHubEY
        public float getLastData(SlNoiseInfo slNoiseInfo)
        {
            using (OracleConnection conn = new OracleConnection(OracleHelper.ConnectionStringOrderDistributedTransaction))
            {
                String SQL = " SELECT DENSEDATA " +
                             " FROM " +
                             " (SELECT * " +
                             " FROM AD_SL_NOISE " +
                             " WHERE DEVCODE = :devCode " +
                             " and UPTIME < :uptime " +
                             " order by UPTIME desc) " +
                             " where rownum=1 ";

                OracleParameter[] oraParams = new OracleParameter[] {
                    new OracleParameter(":devCode",slNoiseInfo.SRCID),
                    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]["DENSEDATA"].ToString());
                    return(lastData);
                }
            }
            return(-100);
        }
コード例 #2
0
        static void testZZSLNoise()
        {
            List <SensorHub.Model.SlNoiseInfo> djs = new List <SensorHub.Model.SlNoiseInfo>();
            SlNoiseInfo slNoiseInfo = new SlNoiseInfo();

            slNoiseInfo.CELL      = "1.1";
            slNoiseInfo.LOGTIME   = System.DateTime.Now;
            slNoiseInfo.UPTIME    = System.DateTime.Now;
            slNoiseInfo.SRCID     = "212016090004";
            slNoiseInfo.DSTID     = "FFFF";
            slNoiseInfo.DENSEDATA = "15";

            SlNoiseInfo slNoiseInfo0 = new SlNoiseInfo();

            slNoiseInfo0.CELL      = "1.1";
            slNoiseInfo0.LOGTIME   = System.DateTime.Now;
            slNoiseInfo0.UPTIME    = System.DateTime.Now;
            slNoiseInfo0.SRCID     = "212016090004";
            slNoiseInfo0.DSTID     = "FFFF";
            slNoiseInfo0.DENSEDATA = "7";

            djs.Add(slNoiseInfo);
            djs.Add(slNoiseInfo0);

            new SensorHub.BLL.SlNoise().SaveZZAlarmInfo(djs);
        }
コード例 #3
0
        public AlarmRecordInfo getAlarmRecordByTime(AlarmRuleInfo alarmRuleInfo, SlNoiseInfo slNoiseInfo)
        {
            if (alarmRuleInfo != null)
            {
                string days     = System.Configuration.ConfigurationSettings.AppSettings["SL_ALARM_DAYS"];
                int    num_days = Convert.ToInt32(days);

                float curValue = float.Parse(slNoiseInfo.DENSEDATA);
                if (alarmRuleInfo.HighValue != 0 && curValue > alarmRuleInfo.HighValue)
                {
                    IDevice         deviceDal       = SensorHub.DALFactory.Device.Create();
                    AlarmRecordInfo alarmRecordInfo = new AlarmRecordInfo();
                    alarmRecordInfo.ACTIVE           = true;
                    alarmRecordInfo.DEVICE_CODE      = slNoiseInfo.SRCID;
                    alarmRecordInfo.DEVICE_ID        = alarmRuleInfo.DeviceId;
                    alarmRecordInfo.DEVICE_TYPE_NAME = deviceDal.getDevTypeByCode(slNoiseInfo.SRCID);
                    alarmRecordInfo.ITEMNAME         = "噪声值";
                    alarmRecordInfo.ITEMVALUE        = curValue.ToString();
                    alarmRecordInfo.MESSAGE_STATUS   = 0;
                    alarmRecordInfo.RECORDCODE       = "";
                    alarmRecordInfo.RECORDDATE       = System.DateTime.Now;
                    alarmRecordInfo.MESSAGE          = "管线泄漏";
                    return(alarmRecordInfo);
                    //TODO LIST:查询过去7天的报警记录

                    /*
                     * DateTime endTime = slNoiseInfo.UPTIME;
                     * DateTime startTime = endTime.AddDays(-num_days);
                     *
                     * ISlNoise slNoiseDal = SensorHub.DALFactory.SlNoise.Create();
                     *
                     * int nums = slNoiseDal.getAlarmNumsByArrange(alarmRuleInfo.HighValue,
                     *  startTime, endTime, slNoiseInfo.SRCID);
                     * if (nums == num_days)
                     * {
                     *  IDevice deviceDal = SensorHub.DALFactory.Device.Create();
                     *
                     *  AlarmRecordInfo alarmRecordInfo = new AlarmRecordInfo();
                     *  alarmRecordInfo.ACTIVE = true;
                     *  alarmRecordInfo.DEVICE_CODE = slNoiseInfo.SRCID;
                     *  alarmRecordInfo.DEVICE_ID = alarmRuleInfo.DeviceId;
                     *  alarmRecordInfo.DEVICE_TYPE_NAME = deviceDal.getDevTypeByCode(slNoiseInfo.SRCID);
                     *  alarmRecordInfo.ITEMNAME = "噪声值";
                     *  alarmRecordInfo.ITEMVALUE = curValue.ToString();
                     *  alarmRecordInfo.MESSAGE_STATUS = false;
                     *  alarmRecordInfo.RECORDCODE = "";
                     *  alarmRecordInfo.RECORDDATE = System.DateTime.Now;
                     *  alarmRecordInfo.MESSAGE = "管线泄漏";
                     *  return alarmRecordInfo;
                     * }
                     * */
                }
            }
            return(null);
        }
コード例 #4
0
        static void testSlNoise()
        {
            List <SensorHub.Model.SlNoiseInfo> djs = new List <SensorHub.Model.SlNoiseInfo>();
            SlNoiseInfo slNoiseInfo = new SlNoiseInfo();

            slNoiseInfo.CELL      = "1.1";
            slNoiseInfo.LOGTIME   = System.DateTime.Now;
            slNoiseInfo.UPTIME    = System.DateTime.Now;
            slNoiseInfo.SRCID     = "JS_S3_001";
            slNoiseInfo.DSTID     = "FFFF";
            slNoiseInfo.DENSEDATA = "8";
            djs.Add(slNoiseInfo);

            new SensorHub.BLL.SlNoise().saveAlarmInfo(djs);
            new SensorHub.BLL.SlNoise().updateDevStatus(djs);
        }
コード例 #5
0
        private AlarmRecordInfo getAlarmRecord(AlarmRuleInfo alarmRuleInfo, SlNoiseInfo slNoiseInfo)
        {
            if (null != alarmRuleInfo)
            {
                float    curValue   = float.Parse(slNoiseInfo.DENSEDATA);
                IDevice  deviceDal  = SensorHub.DALFactory.Device.Create();
                ISlNoise slNoiseDal = SensorHub.DALFactory.SlNoise.Create();

                AlarmRecordInfo alarmRecordInfo = new AlarmRecordInfo();
                alarmRecordInfo.ACTIVE           = true;
                alarmRecordInfo.DEVICE_CODE      = slNoiseInfo.SRCID;
                alarmRecordInfo.DEVICE_ID        = alarmRuleInfo.DeviceId;
                alarmRecordInfo.DEVICE_TYPE_NAME = deviceDal.getDevTypeByCode(slNoiseInfo.SRCID);
                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);
        }
コード例 #6
0
        //0000 0071 前四个字节暂时不用
        public override void execute(Tag tag, String devCode, CellTag cellTag,
                                     SystemDateTag systemDateTag, CasicSession session)
        {
            //TODO LIST:解析流量数据保存流量数据
            UploadTag noiseTag   = tag as UploadTag;
            int       itv        = noiseTag.CollectInter;
            String    collecTime = noiseTag.CollectTime;
            int       len        = noiseTag.Len;
            String    dataValue  = noiseTag.DataValue;

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

            int num = len / 4; //上传的流量数据个数,修改未2个字节//yxw修改为4个字节,加频率
            List <Model.SlNoiseInfo> djs = new List <SlNoiseInfo>();

            DateTime baseTime = Convert.ToDateTime(systemDateTag.CollectDate + " " + collecTime);

            for (int i = 0; i < num; i++)
            {
                // DjNoiseInfo noiseInfo = new DjNoiseInfo();
                SlNoiseInfo slNoiseInfo = new SlNoiseInfo();
                //TODO LIST:密集开始时间、密集间隔、密集样本数、无线开启时间、
                //无线关闭时间、密集噪声、电池电量
                slNoiseInfo.CELL    = (cellTag == null ? "" : cellTag.Cell);
                slNoiseInfo.LOGTIME = DateTime.Now;
                slNoiseInfo.UPTIME  = baseTime.AddMinutes(i * itv);
                slNoiseInfo.SRCID   = devCode;
                slNoiseInfo.DSTID   = "FFFF";
                String dStr      = dataValue.Substring(i * 8 + 0, 4);
                String frequency = dataValue.Substring(i * 8 + 4, 4);

                slNoiseInfo.DENSEDATA = int.Parse(dStr.Substring(0, 2) + dStr.Substring(2, 2), System.Globalization.NumberStyles.HexNumber).ToString();
                slNoiseInfo.FREQUENCY = int.Parse(frequency.Substring(0, 2) + frequency.Substring(2, 2), System.Globalization.NumberStyles.HexNumber).ToString();
                djs.Add(slNoiseInfo);
            }
            new BLL.SlNoise().insert(djs);
            new BLL.SlNoise().SaveZZAlarmInfo(djs);
            new BLL.SlNoise().updateDevStatus(devCode);

            session.Logger.Info("噪声数据保存成功");
        }
コード例 #7
0
ファイル: SlNoise.cs プロジェクト: predatorZhang/SensorHubEY
        /// <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, SlNoiseInfo noise)
        {
            parms[0].Value = noise.SRCID;
            parms[1].Value = noise.DSTID;

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

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

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

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

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

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

            if (null != noise.FREQUENCY)
            {
                parms[8].Value = noise.FREQUENCY;
            }
            else
            {
                parms[8].Value = DBNull.Value;
            }
        }
コード例 #8
0
        public override void ExecuteCommand(SZSLNoiseSession session, StringRequestInfo requestInfo)
        {
            try
            {
                string[] data = requestInfo.Body.Split(',');

                if (string.IsNullOrEmpty(session.MacID))
                {
                    session.MacID = data[4];
                }

                string cfg   = data[6];
                string ddata = data[10];

                //密集样本数
                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[7].Substring(8, 2), System.Globalization.NumberStyles.HexNumber) + 2000).ToString();
                string   mon    = Int32.Parse(data[7].Substring(6, 2), System.Globalization.NumberStyles.HexNumber).ToString();
                string   day    = Int32.Parse(data[7].Substring(4, 2), System.Globalization.NumberStyles.HexNumber).ToString();
                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.SlNoiseInfo> djs = new List <SlNoiseInfo>();
                for (int i = 0; i < count; i++)
                {
                    Model.SlNoiseInfo dj = new SlNoiseInfo();

                    //源ID
                    dj.SRCID = data[4];

                    //目标ID
                    dj.DSTID = data[5];

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

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

                    //采集时间
                    dj.UPTIME = upTime;

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

                    djs.Add(dj);

                    upTime = upTime.AddMinutes(interval);
                }
                new BLL.SlNoise().insert(djs);
                new BLL.SlNoise().saveAlarmInfo(djs);
                new BLL.SlNoise().updateDevStatus(data[4]);
                session.Logger.Info("渗漏预警仪:渗漏噪声数据已经保存!");
            }
            catch (Exception e)
            {
                session.Logger.Error("渗漏预警仪:渗漏噪声数据保存失败:" + e.ToString());
            }
        }
コード例 #9
0
 public float getLastData(SlNoiseInfo slNoiseInfo)
 {
     return(SensorHub.DALFactory.SlNoise.Create().getLastData(slNoiseInfo));
 }