public void ExplainData188(byte[] bFrame)
        {
            if (bFrame.Length < 13)
            {
                return;
            }

            if (!(bFrame[11] == 0x30 && bFrame[12] == 0x11))
            {
                return;
            }
            //主站主动下发
            List <CommandPara> lsCmdPars = new List <CommandPara>();

            string strCmdFrame = "";

            for (int i = 0; i < bFrame.Length; i++)
            {
                strCmdFrame += GetStrFromHex(bFrame[i]);
            }

            CommandPara currCmdPara = new CommandPara();

            currCmdPara.isNum     = true;
            currCmdPara.paraName  = "L";
            currCmdPara.paraValue = (strCmdFrame.Length / 2).ToString();
            lsCmdPars.Add(currCmdPara);

            currCmdPara           = new CommandPara();
            currCmdPara.isNum     = false;
            currCmdPara.paraName  = "MOT";
            currCmdPara.paraValue = strCmdFrame;
            lsCmdPars.Add(currCmdPara);

            string strTermAddr = GetStrFromHex(bFrame[8]) + GetStrFromHex(bFrame[7]) + GetStrFromHex(bFrame[6]) + GetStrFromHex(bFrame[5]) +
                                 GetStrFromHex(bFrame[4]) + GetStrFromHex(bFrame[3]) + GetStrFromHex(bFrame[2]);
            string strCTIOTID = "";

            string strDeviceID = GlbData.GetDeviceID(strTermAddr, ref strCTIOTID);

            if (strDeviceID == "")
            {
                return;
            }

            if (strCTIOTID == "")
            {
                return;
            }

            if (GlbData.CTIOTAppParaList.Contains(strCTIOTID))
            {
                CTIOT_APP_PARA ctiot_app_para = (CTIOT_APP_PARA)(GlbData.CTIOTAppParaList[strCTIOTID]);

                if (ctiot_app_para != null)
                {
                    NASDK currsdk = new NASDK(ctiot_app_para.SVR_IP, ctiot_app_para.SVR_PORT, ctiot_app_para.APP_ID, ctiot_app_para.APP_PWD,
                                              ctiot_app_para.CERT_FILE, ctiot_app_para.CERT_PWD);
                    string   strToken = ctiot_app_para.TOKEN;
                    DateTime dtLastgetTokenTime;

                    try
                    {
                        dtLastgetTokenTime = DateTime.Parse(ctiot_app_para.LAST_GETTOKEN_TIME);
                    }
                    catch
                    {
                        dtLastgetTokenTime = new DateTime(2000, 1, 1);
                    }

                    DateTime dtNow = DateTime.Now;
                    if (strToken == "" || (dtLastgetTokenTime < dtNow.AddMinutes(-30)))
                    {
                        TokenResult tr = currsdk.getToken();

                        if (tr == null)
                        {
                            return;
                        }

                        strToken = tr.accessToken.Trim();
                        string strLastgetTokenTime = dtNow.ToString("yyyy-MM-dd HH:mm:ss");

                        //存储
                        string strSQL = "update CT_IOT_APP_PARA set TOKEN='{0}',LAST_GETTOKEN_TIME='{1}' where ID=" + strCTIOTID;
                        strSQL = string.Format(strSQL, strToken, strLastgetTokenTime);

                        if (GlbData.DBConn.ExeSQL(strSQL))
                        {
                            ctiot_app_para.TOKEN = strToken;
                            ctiot_app_para.LAST_GETTOKEN_TIME = strLastgetTokenTime;

                            GlbData.CTIOTAppParaList[strCTIOTID] = ctiot_app_para;
                        }
                    }

                    string result = currsdk.sendCommand(strToken, strDeviceID, ctiot_app_para.CALLBACKURL, "DATA_UP", "MOT_DOWN", lsCmdPars);
                    if (result == null)
                    {
                        return;
                    }
                }
            }
        }
Ejemplo n.º 2
0
        public Form1()
        {
            InitializeComponent();

            GlbData.GetNAInfo();
        }
        public void ExplainData(byte[] bFrame)
        {
            if (bFrame.Length >= 20)
            {
                if ((bFrame[1] & 0x01) == 0x01)
                {
                    string strAddr     = (bFrame[9] + bFrame[10] * 256).ToString();
                    string strTermAddr = GetStrFromHex(bFrame[8]) + GetStrFromHex(bFrame[7]) + strAddr;

                    if (GlbData.GetProtocolID(strTermAddr) == "93")
                    {
                        ExplainData130(bFrame);
                        return;
                    }
                }

                byte bCtrlWord = bFrame[6];

                if ((bCtrlWord & 0x40) > 0)
                {
                    if (bFrame[12] == 0x02)
                    {
                        //链接帧数据,由IOT平台代发ACK,这里不再下发
                        return;
                    }

                    //主站主动下发
                    List <CommandPara> lsCmdPars = new List <CommandPara>();

                    string strCmdFrame = "";

                    for (int i = 0; i < bFrame.Length; i++)
                    {
                        strCmdFrame += GetStrFromHex(bFrame[i]);
                    }

                    CommandPara currCmdPara = new CommandPara();
                    currCmdPara.isNum     = false;
                    currCmdPara.paraName  = "CmdFrame";
                    currCmdPara.paraValue = strCmdFrame;
                    lsCmdPars.Add(currCmdPara);

                    currCmdPara           = new CommandPara();
                    currCmdPara.isNum     = true;
                    currCmdPara.paraName  = "TimeOut";
                    currCmdPara.paraValue = "30";
                    lsCmdPars.Add(currCmdPara);

                    string strTermAddr = GetStrFromHex(bFrame[8]) + GetStrFromHex(bFrame[7]) + GetStrFromHex(bFrame[10]) + GetStrFromHex(bFrame[9]);
                    string strCTIOTID  = "";

                    string strDeviceID = GlbData.GetDeviceID(strTermAddr, ref strCTIOTID);

                    if (strDeviceID == "")
                    {
                        return;
                    }

                    if (strCTIOTID == "")
                    {
                        return;
                    }

                    if (GlbData.CTIOTAppParaList.Contains(strCTIOTID))
                    {
                        CTIOT_APP_PARA ctiot_app_para = (CTIOT_APP_PARA)(GlbData.CTIOTAppParaList[strCTIOTID]);

                        if (ctiot_app_para != null)
                        {
                            NASDK currsdk = new NASDK(ctiot_app_para.SVR_IP, ctiot_app_para.SVR_PORT, ctiot_app_para.APP_ID, ctiot_app_para.APP_PWD,
                                                      ctiot_app_para.CERT_FILE, ctiot_app_para.CERT_PWD);
                            string   strToken = ctiot_app_para.TOKEN;
                            DateTime dtLastgetTokenTime;

                            try
                            {
                                dtLastgetTokenTime = DateTime.Parse(ctiot_app_para.LAST_GETTOKEN_TIME);
                            }
                            catch
                            {
                                dtLastgetTokenTime = new DateTime(2000, 1, 1);
                            }

                            DateTime dtNow = DateTime.Now;
                            if (strToken == "" || (dtLastgetTokenTime < dtNow.AddMinutes(-30)))
                            {
                                TokenResult tr = currsdk.getToken();

                                if (tr == null)
                                {
                                    return;
                                }

                                strToken = tr.accessToken.Trim();
                                string strLastgetTokenTime = dtNow.ToString("yyyy-MM-dd HH:mm:ss");

                                //存储
                                string strSQL = "update CT_IOT_APP_PARA set TOKEN='{0}',LAST_GETTOKEN_TIME='{1}' where ID=" + strCTIOTID;
                                strSQL = string.Format(strSQL, strToken, strLastgetTokenTime);

                                if (GlbData.DBConn.ExeSQL(strSQL))
                                {
                                    ctiot_app_para.TOKEN = strToken;
                                    ctiot_app_para.LAST_GETTOKEN_TIME = strLastgetTokenTime;

                                    GlbData.CTIOTAppParaList[strCTIOTID] = ctiot_app_para;
                                }
                            }

                            string result = currsdk.sendCommand(strToken, strDeviceID, ctiot_app_para.CALLBACKURL, "CmdService", "Cmd_Down", lsCmdPars);
                            if (result == null)
                            {
                                return;
                            }
                        }
                    }
                    else
                    {
                        return;
                    }
                }
                else
                {
                    //主站对设备请求的响应
                }
            }
            return;
        }
        void HandlePostData(string strData, HttpListenerContext ctx)
        {
            byte[] bFrame        = new byte[20];
            int    iDataLen      = 20;
            string strConcenAddr = "";
            string strDeviceID   = "";

            if ((strData.IndexOf("Reportframe") != -1 && strData.IndexOf("deviceDataChanged") != -1) ||

                (strData.ToUpper().IndexOf("RESPONSEFRAME") != -1))
            {
                bool bRestoHttpSvrNBCtrlCmd = false;

                if (strData.IndexOf("Reportframe") != -1)
                {
                    DevReportCmd drc = new DevReportCmd();

                    drc = JsonConvert.DeserializeObject <DevReportCmd>(strData);

                    if (drc.deviceId != "")
                    {
                        if (drc.service.data.Reportframe != null)
                        {
                            string strReportFrame = drc.service.data.Reportframe.Trim();

                            iDataLen = strReportFrame.Length / 2;

                            bFrame = new byte[iDataLen];

                            for (int i = 0; i < iDataLen; i++)
                            {
                                bFrame[i] = DevTcpClient.GetByteFromstrHex(strReportFrame.Substring(2 * i, 2));
                            }
                            strConcenAddr = DevTcpClient.GetStrFromHex(bFrame[8]) + DevTcpClient.GetStrFromHex(bFrame[7]) +
                                            DevTcpClient.GetStrFromHex(bFrame[10]) + DevTcpClient.GetStrFromHex(bFrame[9]);

                            if ((bFrame[0] == 0x68) && (bFrame[1] == 0x10) && ((bFrame[9] == 0x81) || (bFrame[9] == 0x06)))
                            {
                                strConcenAddr = DevTcpClient.GetStrFromHex(bFrame[8]) + DevTcpClient.GetStrFromHex(bFrame[7]) +
                                                DevTcpClient.GetStrFromHex(bFrame[6]) + DevTcpClient.GetStrFromHex(bFrame[5]) + DevTcpClient.GetStrFromHex(bFrame[4]) +
                                                DevTcpClient.GetStrFromHex(bFrame[3]) + DevTcpClient.GetStrFromHex(bFrame[2]);
                            }

                            strDeviceID = drc.deviceId.Trim();
                        }
                    }
                }
                else if (strData.ToUpper().IndexOf("RESPONSEFRAME") != -1)
                {
                    DevResponse drp = new DevResponse();

                    drp = JsonConvert.DeserializeObject <DevResponse>(strData);

                    if (drp.result.resultDetail.Responseframe != null)
                    {
                        string strResponseFrame = drp.result.resultDetail.Responseframe.Trim();

                        iDataLen = strResponseFrame.Length / 2;

                        bFrame = new byte[iDataLen];

                        for (int i = 0; i < iDataLen; i++)
                        {
                            bFrame[i] = DevTcpClient.GetByteFromstrHex(strResponseFrame.Substring(2 * i, 2));
                        }
                        strConcenAddr = DevTcpClient.GetStrFromHex(bFrame[8]) + DevTcpClient.GetStrFromHex(bFrame[7]) +
                                        DevTcpClient.GetStrFromHex(bFrame[10]) + DevTcpClient.GetStrFromHex(bFrame[9]);

                        if ((bFrame[0] == 0x68) && (bFrame[1] == 0x10) && ((bFrame[9] == 0x81) || (bFrame[9] == 0x06)))
                        {
                            strConcenAddr = DevTcpClient.GetStrFromHex(bFrame[8]) + DevTcpClient.GetStrFromHex(bFrame[7]) +
                                            DevTcpClient.GetStrFromHex(bFrame[6]) + DevTcpClient.GetStrFromHex(bFrame[5]) + DevTcpClient.GetStrFromHex(bFrame[4]) +
                                            DevTcpClient.GetStrFromHex(bFrame[3]) + DevTcpClient.GetStrFromHex(bFrame[2]);
                        }

                        strDeviceID = drp.deviceId.Trim();
                        ////////

                        if (GlbData.NBCtrlCmdList.ContainsKey(strConcenAddr))
                        {
                            NBCtrlCmd NCC = (NBCtrlCmd)GlbData.NBCtrlCmdList[strConcenAddr];
                            NCC.strReturnFrame = strResponseFrame;
                            GlbData.NBCtrlCmdList[strConcenAddr] = NCC;

                            bRestoHttpSvrNBCtrlCmd = true;
                        }
                    }
                }

                if (strConcenAddr.Length == 8)
                {
                    DevTcpClient duc;

                    string strIPPort = GlbData.ServerIPPort;

                    if (TcpClientList.ContainsKey(strConcenAddr))
                    {
                        duc = (DevTcpClient)(TcpClientList[strConcenAddr]);

                        if (DateTime.Now.Subtract(duc.LastRcvTime) > new TimeSpan(0, 5, 0))
                        {
                            duc.iLastSendState = 0;
                        }

                        if (duc.iLastSendState == 0)
                        {
                            TcpClientList.Remove(strConcenAddr);
                            duc          = new DevTcpClient(strIPPort);
                            duc.deviceID = strDeviceID;
                            duc.OpenDevice();

                            if (!(bFrame.Length == 20 && bFrame[12] == 0x02))
                            {
                                byte[] bFrame1 = new byte[20];
                                bFrame1[0]  = 0x68;
                                bFrame1[1]  = 0x32;
                                bFrame1[2]  = 0x00;
                                bFrame1[3]  = 0x32;
                                bFrame1[4]  = 0x00;
                                bFrame1[5]  = 0x68;
                                bFrame1[6]  = 0xC9;
                                bFrame1[7]  = DevTcpClient.GetByteFromstrHex(strConcenAddr.Substring(2, 2));
                                bFrame1[8]  = DevTcpClient.GetByteFromstrHex(strConcenAddr.Substring(0, 2));
                                bFrame1[9]  = DevTcpClient.GetByteFromstrHex(strConcenAddr.Substring(6, 2));
                                bFrame1[10] = DevTcpClient.GetByteFromstrHex(strConcenAddr.Substring(4, 2));
                                bFrame1[11] = 0x00;
                                bFrame1[12] = 0x02;
                                bFrame1[13] = 0x70;
                                bFrame1[14] = 0x00;
                                bFrame1[15] = 0x00;
                                bFrame1[16] = 0x01;
                                bFrame1[17] = 0x00;
                                bFrame1[18] = DevTcpClient.CheckSum(bFrame1, 6, 12);
                                bFrame1[19] = 0x16;

                                duc.WriteDevice(bFrame1, 0, 20);
                            }
                            if (!TcpClientList.ContainsKey(strConcenAddr))
                            {
                                TcpClientList.Add(strConcenAddr, duc);
                            }
                        }
                        else
                        {
                            if (duc.deviceID.Trim() != strDeviceID.Trim())
                            {
                                duc.deviceID = strDeviceID.Trim();
                                TcpClientList[strConcenAddr] = duc;
                            }
                        }
                    }
                    else
                    {
                        duc          = new DevTcpClient(strIPPort);
                        duc.deviceID = strDeviceID;
                        duc.OpenDevice();
                        Thread.Sleep(500);

                        if (!(bFrame.Length == 20 && bFrame[12] == 0x02))
                        {
                            byte[] bFrame1 = new byte[20];
                            bFrame1[0]  = 0x68;
                            bFrame1[1]  = 0x32;
                            bFrame1[2]  = 0x00;
                            bFrame1[3]  = 0x32;
                            bFrame1[4]  = 0x00;
                            bFrame1[5]  = 0x68;
                            bFrame1[6]  = 0xC9;
                            bFrame1[7]  = DevTcpClient.GetByteFromstrHex(strConcenAddr.Substring(2, 2));
                            bFrame1[8]  = DevTcpClient.GetByteFromstrHex(strConcenAddr.Substring(0, 2));
                            bFrame1[9]  = DevTcpClient.GetByteFromstrHex(strConcenAddr.Substring(6, 2));
                            bFrame1[10] = DevTcpClient.GetByteFromstrHex(strConcenAddr.Substring(4, 2));
                            bFrame1[11] = 0x00;
                            bFrame1[12] = 0x02;
                            bFrame1[13] = 0x70;
                            bFrame1[14] = 0x00;
                            bFrame1[15] = 0x00;
                            bFrame1[16] = 0x01;
                            bFrame1[17] = 0x00;
                            bFrame1[18] = DevTcpClient.CheckSum(bFrame1, 6, 12);
                            bFrame1[19] = 0x16;

                            duc.WriteDevice(bFrame1, 0, 20);
                        }
                        if (!TcpClientList.ContainsKey(strConcenAddr))
                        {
                            TcpClientList.Add(strConcenAddr, duc);
                        }
                    }

                    if (!bRestoHttpSvrNBCtrlCmd)
                    {
                        duc.WriteDevice(bFrame, 0, iDataLen);
                    }
                }
                else if (strConcenAddr.Length == 14)
                {
                    DevTcpClient duc;

                    string strIPPort = GlbData.ServerIPPort;

                    if (TcpClientList.ContainsKey(strConcenAddr))
                    {
                        duc = (DevTcpClient)(TcpClientList[strConcenAddr]);

                        if (duc.iLastSendState == 0)
                        {
                            TcpClientList.Remove(strConcenAddr);
                            duc          = new DevTcpClient(strIPPort);
                            duc.deviceID = strDeviceID;
                            duc.OpenDevice();
                            if (!TcpClientList.ContainsKey(strConcenAddr))
                            {
                                TcpClientList.Add(strConcenAddr, duc);
                            }
                        }
                        else
                        {
                            if (duc.deviceID.Trim() != strDeviceID.Trim())
                            {
                                duc.deviceID = strDeviceID.Trim();
                                TcpClientList[strConcenAddr] = duc;
                            }
                        }
                    }
                    else
                    {
                        duc          = new DevTcpClient(strIPPort);
                        duc.deviceID = strDeviceID;
                        duc.OpenDevice();
                        Thread.Sleep(500);
                        if (!TcpClientList.ContainsKey(strConcenAddr))
                        {
                            TcpClientList.Add(strConcenAddr, duc);
                        }
                    }

                    if (!bRestoHttpSvrNBCtrlCmd)
                    {
                        duc.WriteDevice(bFrame, 0, iDataLen);
                    }
                }
                else
                {
                }
            }
            ///////////////130协议水表数据上送
            else if (strData.IndexOf("DeliverySchedule") != -1 && strData.IndexOf("deviceDatasChanged") != -1)
            {
                DevReportCmd_Water drc = new DevReportCmd_Water();

                drc = JsonConvert.DeserializeObject <DevReportCmd_Water>(strData);

                if (drc.deviceId != "")
                {
                    int iIndex = -1;
                    if (drc.services.Length > 0)
                    {
                        for (int i = 0; i < drc.services.Length; i++)
                        {
                            if (drc.services[i].serviceType == "DeliverySchedule")
                            {
                                iIndex = i;
                                break;
                            }
                        }
                    }

                    if (iIndex < 0)
                    {
                        return;
                    }

                    if (drc.services[iIndex].data != null)
                    {
                        string strReportFrame = drc.services[iIndex].data.transpond.Trim();

                        iDataLen = strReportFrame.Length / 2;

                        bFrame = new byte[iDataLen];

                        for (int i = 0; i < iDataLen; i++)
                        {
                            bFrame[i] = DevTcpClient.GetByteFromstrHex(strReportFrame.Substring(2 * i, 2));
                        }

                        string strAddr = (bFrame[9] + bFrame[10] * 256).ToString().PadLeft(5, '0');

                        strConcenAddr = DevTcpClient.GetStrFromHex(bFrame[8]) + DevTcpClient.GetStrFromHex(bFrame[7]) + strAddr;

                        strDeviceID = drc.deviceId.Trim();
                    }
                }

                DevTcpClient duc;

                string strIPPort = GlbData.ServerIPPort;

                if (TcpClientList.ContainsKey(strConcenAddr))
                {
                    duc = (DevTcpClient)(TcpClientList[strConcenAddr]);

                    if (DateTime.Now.Subtract(duc.LastSendTime) > new TimeSpan(0, 5, 0))
                    {
                        TcpClientList.Remove(strConcenAddr);
                        duc          = new DevTcpClient(strIPPort);
                        duc.deviceID = strDeviceID;
                        duc.OpenDevice();
                        Thread.Sleep(500);
                        if (!TcpClientList.ContainsKey(strConcenAddr))
                        {
                            TcpClientList.Add(strConcenAddr, duc);
                        }
                    }
                    else
                    {
                        if (duc.deviceID.Trim() != strDeviceID.Trim())
                        {
                            duc.deviceID = strDeviceID.Trim();
                            TcpClientList[strConcenAddr] = duc;
                        }
                    }

                    //if (duc.iLastSendState == 0)
                    //{
                    //    TcpClientList.Remove(strConcenAddr);
                    //    duc = new DevTcpClient(strIPPort);
                    //    duc.deviceID = strDeviceID;
                    //    duc.OpenDevice();
                    //    TcpClientList.Add(strConcenAddr, duc);
                    //}
                    //else
                    //{
                    //    if (duc.deviceID.Trim() != strDeviceID.Trim())
                    //    {
                    //        duc.deviceID = strDeviceID.Trim();
                    //        TcpClientList[strConcenAddr] = duc;
                    //    }
                    //}

                    duc.WriteDevice(bFrame, 0, iDataLen);
                }
                else
                {
                    duc          = new DevTcpClient(strIPPort);
                    duc.deviceID = strDeviceID;
                    duc.OpenDevice();
                    Thread.Sleep(500);
                    if (!TcpClientList.ContainsKey(strConcenAddr))
                    {
                        TcpClientList.Add(strConcenAddr, duc);
                    }

                    duc.WriteDevice(bFrame, 0, iDataLen);
                }
            }
            else if (strData.IndexOf("NBConcenAddr") != -1)
            {
                string[] strs = strData.Split(',');

                string[] strs1 = strs[0].Split(':');

                string[] strs2 = strs[1].Split(':');

                string strTermAddr = strs1[1];

                string strCmdFrame = strs2[1];

                //主站主动下发
                List <CommandPara> lsCmdPars = new List <CommandPara>();

                CommandPara currCmdPara = new CommandPara();
                currCmdPara.isNum     = false;
                currCmdPara.paraName  = "CmdFrame";
                currCmdPara.paraValue = strCmdFrame;
                lsCmdPars.Add(currCmdPara);

                currCmdPara           = new CommandPara();
                currCmdPara.isNum     = true;
                currCmdPara.paraName  = "TimeOut";
                currCmdPara.paraValue = "30";
                lsCmdPars.Add(currCmdPara);

                string strCTIOTID = "";

                string strDeviceID1 = GlbData.GetDeviceID(strTermAddr, ref strCTIOTID);

                if (strDeviceID1 == "")
                {
                    return;
                }

                if (strCTIOTID == "")
                {
                    return;
                }

                if (GlbData.CTIOTAppParaList.Contains(strCTIOTID))
                {
                    CTIOT_APP_PARA ctiot_app_para = (CTIOT_APP_PARA)(GlbData.CTIOTAppParaList[strCTIOTID]);

                    if (ctiot_app_para != null)
                    {
                        NASDK currsdk = new NASDK(ctiot_app_para.SVR_IP, ctiot_app_para.SVR_PORT, ctiot_app_para.APP_ID, ctiot_app_para.APP_PWD,
                                                  ctiot_app_para.CERT_FILE, ctiot_app_para.CERT_PWD);
                        string   strToken = ctiot_app_para.TOKEN;
                        DateTime dtLastgetTokenTime;

                        try
                        {
                            dtLastgetTokenTime = DateTime.Parse(ctiot_app_para.LAST_GETTOKEN_TIME);
                        }
                        catch
                        {
                            dtLastgetTokenTime = new DateTime(2000, 1, 1);
                        }

                        DateTime dtNow = DateTime.Now;
                        if (strToken == "" || (dtLastgetTokenTime < dtNow.AddMinutes(-30)))
                        {
                            TokenResult tr = currsdk.getToken();

                            if (tr == null)
                            {
                                return;
                            }

                            strToken = tr.accessToken.Trim();
                            string strLastgetTokenTime = dtNow.ToString("yyyy-MM-dd HH:mm:ss");

                            //存储
                            string strSQL = "update CT_IOT_APP_PARA set TOKEN='{0}',LAST_GETTOKEN_TIME='{1}' where ID=" + strCTIOTID;
                            strSQL = string.Format(strSQL, strToken, strLastgetTokenTime);

                            if (GlbData.DBConn.ExeSQL(strSQL))
                            {
                                ctiot_app_para.TOKEN = strToken;
                                ctiot_app_para.LAST_GETTOKEN_TIME = strLastgetTokenTime;

                                GlbData.CTIOTAppParaList[strCTIOTID] = ctiot_app_para;
                            }
                        }

                        string result             = currsdk.sendCommand(strToken, strDeviceID1, ctiot_app_para.CALLBACKURL, "CmdService", "Cmd_Down", lsCmdPars);
                        NBCtrlCmdSendResult NCCSR = new NBCtrlCmdSendResult();
                        NCCSR.NBConcenAddr = strTermAddr;

                        if (result == null)
                        {
                            NCCSR.SendTime = "";
                        }
                        else
                        {
                            NBCtrlCmd NCC = new NBCtrlCmd();
                            NCC.NBConcenAddr   = strTermAddr;
                            NCC.SendTime       = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
                            NCC.strReturnFrame = "";

                            if (!GlbData.NBCtrlCmdList.ContainsKey(strTermAddr))
                            {
                                GlbData.NBCtrlCmdList.Add(strTermAddr, NCC);
                            }
                            else
                            {
                                GlbData.NBCtrlCmdList[strTermAddr] = NCC;
                            }

                            TimeSpan outTimeSpan = new TimeSpan(0, 1, 0);   //超时时间60秒

                            NCC = (NBCtrlCmd)GlbData.NBCtrlCmdList[strTermAddr];

                            NCCSR.NBConcenAddr = strTermAddr;
                            NCCSR.SendTime     = NCC.SendTime;

                            while (NCC.strReturnFrame == "")
                            {
                                if ((DateTime.Now - DateTime.Parse(NCC.SendTime)) > outTimeSpan)
                                {
                                    //返回超时
                                    NCCSR.strReturnFrame = "";
                                    break;
                                }
                            }

                            if (NCC.strReturnFrame != "")
                            {
                                NCCSR.strReturnFrame = NCC.strReturnFrame;
                            }
                        }

                        string strResult = JsonConvert.SerializeObject(NCCSR); //将消息转成jason格式返回

                        GlbData.NBCtrlCmdList.Remove(strTermAddr);

                        byte[] buffer = System.Text.Encoding.UTF8.GetBytes(strResult);
                        //对客户端输出相应信息.
                        try
                        {
                            ctx.Response.ContentLength64 = buffer.Length;
                            System.IO.Stream output = ctx.Response.OutputStream;
                            output.Write(buffer, 0, buffer.Length);             //关闭输出流,释放相应资源
                            output.Close();
                        }
                        catch
                        { }
                    }
                }
                else
                {
                    return;
                }
            }
        }