Esempio n. 1
0
        protected override void DefWndProc(ref Message m)
        {
            switch (m.Msg)
            {
            case 1001:
                int iErrorMsg = m.WParam.ToInt32();
                if (iErrorMsg == 1)
                {
                    ListViewItem listItem = new ListViewItem();
                    listItem.Text = "Fail";
                    string strTemp = string.Format("NET_SDK_CALLBACK_STATUS_FAILED");
                    listItem.SubItems.Add(strTemp);
                    this.AddList(listViewResponse, listItem);
                }
                else if (iErrorMsg == 2)
                {
                    ListViewItem listItem = new ListViewItem();
                    listItem.Text = "Fail";
                    string strTemp = string.Format("NET_SDK_CALLBACK_STATUS_EXCEPTION");
                    listItem.SubItems.Add(strTemp);
                    this.AddList(listViewResponse, listItem);
                }
                else if (iErrorMsg == 3)
                {
                    ListViewItem listItem = new ListViewItem();
                    listItem.Text = "Fail";
                    string strTemp = string.Format("NET_SDK_CALLBACK_OTHER_ERROR");
                    listItem.SubItems.Add(strTemp);
                    this.AddList(listViewResponse, listItem);
                }
                else if (iErrorMsg == 4)
                {
                    ListViewItem listItem = new ListViewItem();
                    listItem.Text = "Succ";
                    string strTemp = string.Format("NET_SDK_CALLBACK_FINISH");
                    listItem.SubItems.Add(strTemp);
                    this.AddList(listViewResponse, listItem);
                }
                m_bStart = false;
                m_bFirst = true;
                if (-1 != m_lInfoSynHandle)
                {
                    if (CHCNetSDK.NET_DVR_StopRemoteConfig(m_lInfoSynHandle))
                    {
                        m_lInfoSynHandle = -1;
                    }
                }
                break;

            case 1002:
                m_bGetResult = true;
                break;

            case 1003:
                IntPtr ptrResponse       = (IntPtr)m.WParam.ToInt32();
                string strResponseStatus = Marshal.PtrToStringAnsi(ptrResponse);

                string strResponse = null;

                if (m_bFirst)
                {
                    m_bFirst = false;
                    CResponseStatus JsonResponseStatus = new CResponseStatus();
                    strResponse    = strResponseStatus;
                    m_iCurProgress = 0;
                }
                else
                {
                    if (m_command == SynInfoCommand.USER_INFO_SYN)
                    {
                        CUserInfoSyn JsonResponseStatus = new CUserInfoSyn();
                        JsonResponseStatus.UserInfoSync = new CUserInfoSynContent();
                        if (JsonResponseStatus.UserInfoSync != null)
                        {
                            strResponse    = JsonConvert.SerializeObject(JsonResponseStatus.UserInfoSync.SyncInfo);
                            m_iCurProgress = JsonResponseStatus.UserInfoSync.progressValue;
                        }
                        else
                        {
                            strResponse = strResponseStatus;
                        }
                    }
                    else
                    {
                        CCardInfoSyn JsonResponseStatus = new CCardInfoSyn();
                        JsonResponseStatus = JsonConvert.DeserializeObject <CCardInfoSyn>(strResponseStatus);
                        if (JsonResponseStatus.CardInfoSync != null)
                        {
                            strResponse    = JsonConvert.SerializeObject(JsonResponseStatus.CardInfoSync.SyncInfo);
                            m_iCurProgress = JsonResponseStatus.CardInfoSync.progressValue;
                        }
                        else
                        {
                            strResponse = strResponseStatus;
                        }
                    }
                }

                ListViewItem lvItem = new ListViewItem();
                string       strTmp = null;
                lvItem.Text = "Succ";
                strTmp      = string.Format("Percent:{0}-{1}", m_iCurProgress, strResponse);
                lvItem.SubItems.Add(strTmp);
                this.AddList(listViewResponse, lvItem);
                Marshal.FreeHGlobal(ptrResponse);
                break;

            default:
                base.DefWndProc(ref m);
                break;
            }
        }
Esempio n. 2
0
        private void ProcessInfoSynCallback(uint dwType, IntPtr lpBuffer, uint dwBufLen, IntPtr pUserData)
        {
            if (pUserData == null)
            {
                return;
            }

            if (dwType == (uint)CHCNetSDK.NET_SDK_CALLBACK_TYPE.NET_SDK_CALLBACK_TYPE_STATUS)
            {
                uint dwStatus = (uint)Marshal.ReadInt32(lpBuffer);
                if (dwStatus == (uint)CHCNetSDK.NET_SDK_CALLBACK_STATUS_NORMAL.NET_SDK_CALLBACK_STATUS_FAILED)
                {
                    CHCNetSDK.PostMessage(pUserData, 1001, 1, 0);
                    //可以结束了,异常结束
                }
                else if (dwStatus == (uint)CHCNetSDK.NET_SDK_CALLBACK_STATUS_NORMAL.NET_SDK_CALLBACK_STATUS_EXCEPTION)
                {
                    CHCNetSDK.PostMessage(pUserData, 1001, 2, 0);
                    //可以结束了,异常结束
                }
                else if (dwStatus == (uint)CHCNetSDK.NET_SDK_CALLBACK_STATUS_NORMAL.NET_SDK_CALLBACK_STATUS_PROCESSING)
                {
                    ;
                }
                else
                {
                    CHCNetSDK.PostMessage(pUserData, 1001, 3, 0);
                    //可以结束了,异常结束
                }
            }
            else if (dwType == (uint)CHCNetSDK.NET_SDK_CALLBACK_TYPE.NET_SDK_CALLBACK_TYPE_DATA)
            {
                //输出上一包解析信息, 1003
                string strResponseStatus = Marshal.PtrToStringAnsi(lpBuffer);
                IntPtr response          = IntPtr.Zero;

                if (m_bFirst)
                {
                    m_bFirst = false;
                    CResponseStatus JsonResponseStatus = new CResponseStatus();
                    JsonResponseStatus = JsonConvert.DeserializeObject <CResponseStatus>(strResponseStatus);
                    response           = Marshal.StringToHGlobalAnsi(strResponseStatus);
                }
                else
                {
                    if (m_command == SynInfoCommand.USER_INFO_SYN)
                    {
                        CUserInfoSyn JsonResponseStatus = new CUserInfoSyn();
                        JsonResponseStatus = JsonConvert.DeserializeObject <CUserInfoSyn>(strResponseStatus);
                        m_iCurProgress     = JsonResponseStatus.UserInfoSync.progressValue;
                        response           = Marshal.StringToHGlobalAnsi(strResponseStatus);
                    }
                    else
                    {
                        CCardInfoSyn JsonResponseStatus = new CCardInfoSyn();
                        JsonResponseStatus = JsonConvert.DeserializeObject <CCardInfoSyn>(strResponseStatus);
                        m_iCurProgress     = JsonResponseStatus.CardInfoSync.progressValue;
                        response           = Marshal.StringToHGlobalAnsi(strResponseStatus);
                    }
                }

                CHCNetSDK.PostMessage(pUserData, 1003, (int)response, 0);

                if (m_iCurProgress >= 100)
                {
                    CHCNetSDK.PostMessage(pUserData, 1001, 4, 0);
                    //可以结束了,正常(异常)结束
                    return;
                }
                CHCNetSDK.PostMessage(pUserData, 1002, 0, 0);
                //在主线程中发送下一个用户
            }
            return;
        }