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); }
//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("噪声数据保存成功"); }
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); }
/// <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; } }
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("==================================================================="); } }