Exemplo n.º 1
0
        public override void execute(Tag tag)
        {
            //TODO LIST:解析压力数据,保存压力数据
            UploadTag pressTag   = tag as UploadTag;
            int       itv        = pressTag.CollectInter;
            String    collecTime = pressTag.CollectTime;
            int       len        = pressTag.Len;
            String    dataValue  = pressTag.DataValue;

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

            int num = len / 4; //上传的压力数据个数
            List <Model.DjPressInfo> djs = new List <Model.DjPressInfo>();

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

            for (int i = 0; i < num; i++)
            {
                DjPressInfo pressInfo = new DjPressInfo();
                String      press     = strHexToFloat(dataValue.Substring(i * 8, 8)).ToString();

                //TODO LIST:电池电量
                pressInfo.PRESSDATA = press;
                pressInfo.LOGTIME   = DateTime.Now;
                pressInfo.UPTIME    = baseTime.AddMinutes(i * itv);
                pressInfo.DEVID     = AdlerCmd.devCode;

                djs.Add(pressInfo);
            }
            new BLL.DjPress().insert(djs);
            new BLL.DjPress().saveAlarmInfo(djs);
            new BLL.DjPress().updateDevStatus(AdlerCmd.devCode);
            AdlerCmd.adlerSession.Logger.Info("压力数据保存成功");
        }
Exemplo n.º 2
0
        /// <summary>
        /// An internal function to bind values parameters for insert
        /// </summary>
        /// <param name="parms">Database parameters</param>
        /// <param name="press">Values to bind to parameters</param>
        private void SetAdapterParameters(OracleParameter[] parms, DjPressInfo press)
        {
            parms[0].Value = press.DEVID;

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

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

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

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

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

            if (null != press.LOGTIME)
            {
                parms[6].Value = press.LOGTIME;
            }
            else
            {
                parms[6].Value = DBNull.Value;
            }
        }
Exemplo n.º 3
0
        public override void execute(Tag tag, String devCode, CellTag cellTag,
                                     SystemDateTag systemDateTag, CasicSession session)
        {
            //TODO LIST:解析压力数据保存压力数据
            UploadTag pressTag   = tag as UploadTag;
            int       itv        = pressTag.CollectInter;
            String    collecTime = pressTag.CollectTime;
            int       len        = pressTag.Len;
            String    dataValue  = pressTag.DataValue;

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

            int num = len / 4; //上传的液位数据个数
            //List<Model.CasicPress> djs = new List<Model.CasicPress>();
            List <Model.DjPressInfo> djs = new List <Model.DjPressInfo>();

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

            for (int i = 0; i < num; i++)
            {
                DjPressInfo pressInfo = new DjPressInfo();
                String      press     = strHexToFloat(dataValue.Substring(i * 8, 8)).ToString();

                //TODO LIST:电池电量
                pressInfo.CELL      = (cellTag == null ? "" : cellTag.Cell);
                pressInfo.PRESSDATA = press;
                pressInfo.LOGTIME   = DateTime.Now;
                pressInfo.UPTIME    = baseTime.AddMinutes(i * itv);
                pressInfo.DEVID     = devCode;

                djs.Add(pressInfo);
            }

            new BLL.DjPress().insert(djs);
            //new BLL.DjPress().saveAlarmInfo(djs);
            new BLL.DjPress().updateDevStatus(devCode);
            session.Logger.Info("压力数据保存成功");
        }
        public override void ExecuteCommand(DGNSZSession session, StringRequestInfo requestInfo)
        {
            try
            {
                session.Logger.Info("多功能漏损监测仪:压力数据已经上传!");
                session.Logger.Info(requestInfo.Body);

                //LSPRESS:40,002A,01,000033,51,000069130118,000105A0,039E,0D090E,1A0F0D090E,
                //000000000000000000,59,59,61B1,03
                string[] data = requestInfo.Body.Split(',');
                if (string.IsNullOrEmpty(session.MacID))
                {
                    session.MacID = data[5];
                }

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

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


                //采集压力数据条数
                int count = 24 * 60 / Int16.Parse(cfg.Substring(4, 4), System.Globalization.NumberStyles.HexNumber) / Int16.Parse(cfg.Substring(0, 4), System.Globalization.NumberStyles.HexNumber);

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

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

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

                    //压力数据
                    dj.PRESSDATA = HexToASCII(data[10].Substring(i * 18, 18));

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

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

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

                    djs.Add(dj);

                    upTime = upTime.AddMinutes(-interval * (count - i - 1));
                }

                new BLL.DjPress().insert(djs);
                new BLL.DjPress().saveAlarmInfo(djs);
                new BLL.DjPress().updateDevStatus(session.MacID);

                session.Logger.Info("多功能漏损监测仪:压力数据已经保存!");
            }
            catch (Exception e)
            {
                session.Logger.Error("多功能漏损监测仪:压力数据保存失败!");
                session.Logger.Error(requestInfo.Body);
                session.Logger.Error(e.ToString());
            }
        }