//0000 0071 前四个字节暂时不用 public override void execute(Tag tag, String devCode, CellTag cellTag, SystemDateTag systemDateTag, CasicSession session) { //TODO LIST:解析井盖传感器数据并保存 UploadTag wellTag = tag as UploadTag; int itv = wellTag.CollectInter; String collecTime = wellTag.CollectTime; int len = wellTag.Len; String dataValue = wellTag.DataValue; session.Logger.Info("井盖数据上传TAG:oid:" + wellTag.Oid + " 采集间隔: " + itv + "采集时间:" + collecTime + "上传数值:" + dataValue); int num = len / 1; //上传的井盖数据个数 List <Model.WellSensorInfo> djs = new List <WellSensorInfo>(); //井盖数据tag之前,无系统日期tag数据 // DateTime baseTime = Convert.ToDateTime(CasicCmd.currentSystemDate + " " + collecTime); for (int i = 0; i < num; i++) { //上传的有状态数据、设备ID、可能有电池电量等数据 WellSensorInfo wellInfo = new WellSensorInfo(); wellInfo.DEVID = devCode; wellInfo.LOGTIME = DateTime.Now; byte btStatus = byte.Parse(dataValue, System.Globalization.NumberStyles.HexNumber); string descn = ""; switch (btStatus) { case 0: descn = "状态正常"; new BLL.WellInfo().saveDeviceStatus(wellInfo.DEVID, WellAlarmEnum.NORMAL); break; case 1: descn = "井盖开启"; saveWellAlarm(wellInfo.DEVID, session); break; case 2: descn = "时钟故障"; new BLL.WellInfo().saveDeviceStatus(wellInfo.DEVID, WellAlarmEnum.SYS_ERROR); break; case 3: descn = "低电压"; new BLL.WellInfo().saveDeviceStatus(wellInfo.DEVID, WellAlarmEnum.BATTERY_LOW); break; default: descn = "未知状态"; break; } wellInfo.DESCN = descn; wellInfo.STATUS = btStatus + ""; djs.Add(wellInfo); } new BLL.WellInfo().insert(djs); session.Logger.Info("井盖数据保存成功"); }
/// <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, WellSensorInfo wellInfo) { /* * new OracleParameter(PARM_DEVID, OracleType.VarChar, 19), * new OracleParameter(PARM_CELL, OracleType.VarChar, 255), * new OracleParameter(PARM_DESCN, OracleType.VarChar, 255), * new OracleParameter(PARM_STATUS, OracleType.VarChar, 255), * new OracleParameter(PARM_LOGTIME, OracleType.DateTime) */ parms[0].Value = wellInfo.DEVID; if (null != wellInfo.CELL) { parms[1].Value = wellInfo.CELL; } else { parms[1].Value = DBNull.Value; } if (null != wellInfo.DESCN) { parms[2].Value = wellInfo.DESCN; } else { parms[2].Value = DBNull.Value; } if (null != wellInfo.STATUS) { parms[3].Value = wellInfo.STATUS; } else { parms[3].Value = DBNull.Value; } if (null != wellInfo.LOGTIME) { parms[4].Value = wellInfo.LOGTIME; } else { parms[4].Value = DBNull.Value; } }