コード例 #1
0
        public override void execute(Tag tag)
        {
            //TODO LIST:解析流量数据保存流量数据
            UploadTag flowTag    = tag as UploadTag;
            int       itv        = flowTag.CollectInter;
            String    collecTime = flowTag.CollectTime;
            int       len        = flowTag.Len;
            String    dataValue  = flowTag.DataValue;

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

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

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

            for (int i = 0; i < num; i++)
            {
                DjFlowInfo flowInfo = new DjFlowInfo();
                String     insFlow  = strHexToFloat(dataValue.Substring(i * 24, 8)).ToString();
                String     posFlow  = strHexToFloat(dataValue.Substring(i * 24 + 8, 8)).ToString();
                String     negFlow  = strHexToFloat(dataValue.Substring(i * 24 + 16, 8)).ToString();
                flowInfo.INSDATA = insFlow;
                flowInfo.POSDATA = posFlow;
                flowInfo.NEGDATA = negFlow;
                flowInfo.NETDATA = (float.Parse(posFlow) + float.Parse(negFlow)) + "";

                //TODO LIST:电池电量的获取
                flowInfo.LOGTIME = DateTime.Now;
                flowInfo.UPTIME  = baseTime.AddMinutes(i * itv);
                flowInfo.DEVID   = AdlerCmd.devCode;

                djs.Add(flowInfo);
            }
            new BLL.DjFlow().insert(djs);
            new BLL.DjFlow().saveAlarmInfo(djs);
            new BLL.DjFlow().updateDevStatus(AdlerCmd.devCode);

            AdlerCmd.adlerSession.Logger.Info("流量数据保存成功");
        }
コード例 #2
0
        /// <summary>
        /// An internal function to bind values parameters for insert
        /// </summary>
        /// <param name="parms">Database parameters</param>
        /// <param name="flow">Values to bind to parameters</param>
        private void SetAdapterParameters(OracleParameter[] parms, DjFlowInfo flow)
        {
            parms[0].Value = flow.DEVID;

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

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

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

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

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

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

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

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

            if (null != flow.LOGTIME)
            {
                parms[9].Value = flow.LOGTIME;
            }
            else
            {
                parms[9].Value = DBNull.Value;
            }
        }
コード例 #3
0
        public override void ExecuteCommand(DGNSZSession session, StringRequestInfo requestInfo)
        {
            try
            {
                //session.Logger.Info("===================================================================");
                session.Logger.Info("多功能漏损监测仪:流量数据已经上传!");
                session.Logger.Info(requestInfo.Body);

                string[] data = requestInfo.Body.Split(',');

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

                string cfg  = data[6];
                string flow = 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 interval = Int16.Parse(cfg.Substring(0, 4), System.Globalization.NumberStyles.HexNumber);

                //获取一共有多少个瞬时流量数据
                int count = 24 * 60 / Int16.Parse(cfg.Substring(4, 4), System.Globalization.NumberStyles.HexNumber) / Int16.Parse(cfg.Substring(0, 4), System.Globalization.NumberStyles.HexNumber);

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

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

                    //瞬时流量
                    string insStr = flow.Substring(i * 8, 8);
                    byte[] insBt  =
                    {
                        byte.Parse(insStr.Substring(2, 2), System.Globalization.NumberStyles.HexNumber),
                        byte.Parse(insStr.Substring(0, 2), System.Globalization.NumberStyles.HexNumber),
                        byte.Parse(insStr.Substring(6, 2), System.Globalization.NumberStyles.HexNumber),
                        byte.Parse(insStr.Substring(4, 2), System.Globalization.NumberStyles.HexNumber)
                    };
                    float finsData = BitConverter.ToSingle(insBt, 0);
                    if (finsData < -6000)
                    {
                        dj.INSDATA = "0";
                    }
                    else
                    {
                        dj.INSDATA = finsData.ToString();
                    }

                    //获取净累计流量
                    string netStr = flow.Substring(8 * count + 8 * i, 8);
                    byte[] ntBt   =
                    {
                        byte.Parse(netStr.Substring(2, 2), System.Globalization.NumberStyles.HexNumber),
                        byte.Parse(netStr.Substring(0, 2), System.Globalization.NumberStyles.HexNumber),
                        byte.Parse(netStr.Substring(6, 2), System.Globalization.NumberStyles.HexNumber),
                        byte.Parse(netStr.Substring(4, 2), System.Globalization.NumberStyles.HexNumber)
                    };
                    dj.NETDATA = BitConverter.ToSingle(ntBt, 0).ToString();



                    //获取正累计流量
                    string psStr = flow.Substring(8 * 2 * count + 8 * i, 8);
                    byte[] psBt  =
                    {
                        byte.Parse(psStr.Substring(2, 2), System.Globalization.NumberStyles.HexNumber),
                        byte.Parse(psStr.Substring(0, 2), System.Globalization.NumberStyles.HexNumber),
                        byte.Parse(psStr.Substring(6, 2), System.Globalization.NumberStyles.HexNumber),
                        byte.Parse(psStr.Substring(4, 2), System.Globalization.NumberStyles.HexNumber)
                    };
                    dj.POSDATA = BitConverter.ToSingle(psBt, 0).ToString();

                    //获取负累计流量
                    string ngStr = flow.Substring(8 * 3 * count + 8 * i, 8);
                    byte[] ngBt  =
                    {
                        byte.Parse(ngStr.Substring(2, 2), System.Globalization.NumberStyles.HexNumber),
                        byte.Parse(ngStr.Substring(0, 2), System.Globalization.NumberStyles.HexNumber),
                        byte.Parse(ngStr.Substring(6, 2), System.Globalization.NumberStyles.HexNumber),
                        byte.Parse(ngStr.Substring(4, 2), System.Globalization.NumberStyles.HexNumber)
                    };
                    float fnegData = BitConverter.ToSingle(ngBt, 0);
                    if (fnegData < -6000)
                    {
                        dj.NEGDATA = "0";
                    }
                    else
                    {
                        dj.NEGDATA = fnegData.ToString();
                    }



                    //电池电量
                    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.DjFlow().insert(djs);
                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("===================================================================");
            }
        }