Example #1
0
        //login local device
        private void LoginLocalDevice(DeviceInfo deviceInfo)
        {
            //NETDEMO.NETDEV_LOGIN_TYPE_E loginFlag = NETDEMO.NETDEV_LOGIN_TYPE_E.NETDEV_NEW_LOGIN;
            //int DeviceNodeIndex = 0;
            for (int i = 0; i < deviceInfos.Count(); i++)
            {
                if (NETDEMO.NETDEMO_DEVICE_TYPE_E.NETDEMO_DEVICE_INVALID == deviceInfos[i].m_eDeviceType)
                {
                    continue;
                }

                if (deviceInfo.m_ip == deviceInfos[i].m_ip &&
                    deviceInfo.m_port == deviceInfos[i].m_port &&
                    deviceInfos[i].m_lpDevHandle != IntPtr.Zero)
                {
                    //MessageBox.Show("The device already exists!");
                    return;
                }

                //if (deviceInfo.m_ip == deviceInfos[i].m_ip
                //    && deviceInfo.m_port == deviceInfos[i].m_port
                //    && deviceInfos[i].m_lpDevHandle == IntPtr.Zero)//again login
                //{
                //    loginFlag = NETDEMO.NETDEV_LOGIN_TYPE_E.NETDEV_AGAIN_LOGIN;
                //    DeviceNodeIndex = i;
                //}
            }

            NETDEV_DEVICE_LOGIN_INFO_S pstDevLoginInfo = new NETDEV_DEVICE_LOGIN_INFO_S();
            NETDEV_SELOG_INFO_S        pstSELogInfo    = new NETDEV_SELOG_INFO_S();

            pstDevLoginInfo.szIPAddr     = deviceInfo.m_ip;
            pstDevLoginInfo.dwPort       = deviceInfo.m_port;
            pstDevLoginInfo.szUserName   = deviceInfo.m_userName;
            pstDevLoginInfo.szPassword   = deviceInfo.m_password;
            pstDevLoginInfo.dwLoginProto = (int)NETDEV_LOGIN_PROTO_E.NETDEV_LOGIN_PROTO_ONVIF;

            IntPtr lpDevHandle = NETDEVSDK.NETDEV_Login_V30(ref pstDevLoginInfo, ref pstSELogInfo);

            if (lpDevHandle == IntPtr.Zero)
            {
                return;
            }

            //if (loginFlag == NETDEMO.NETDEV_LOGIN_TYPE_E.NETDEV_AGAIN_LOGIN)
            //{
            //    deviceInfos[DeviceNodeIndex].m_lpDevHandle = lpDevHandle;
            //}

            DeviceInfo deviceInfoTemp = new DeviceInfo();

            deviceInfoTemp.m_lpDevHandle = lpDevHandle;
            deviceInfoTemp.m_ip          = deviceInfo.m_ip;
            deviceInfoTemp.m_port        = deviceInfo.m_port;
            deviceInfoTemp.m_userName    = deviceInfo.m_userName;
            deviceInfoTemp.m_password    = deviceInfo.m_password;
            deviceInfoTemp.m_eDeviceType = deviceInfo.m_eDeviceType;
            deviceInfoTemp.m_cameraName  = deviceInfo.m_cameraName;

            int iRet;
            //get the channel list
            int    pdwChlCount     = 256;
            IntPtr pstVideoChlList = new IntPtr();

            //pstVideoChlList = Marshal.AllocHGlobal(NETDEVSDK.NETDEV_LEN_32 * Marshal.SizeOf(typeof(NETDEV_VIDEO_CHL_DETAIL_INFO_S)));
            pstVideoChlList = Marshal.AllocHGlobal(256 * Marshal.SizeOf(typeof(NETDEV_VIDEO_CHL_DETAIL_INFO_S)));
            iRet            = NETDEVSDK.NETDEV_QueryVideoChlDetailList(deviceInfoTemp.m_lpDevHandle, ref pdwChlCount, pstVideoChlList);
            if (NETDEVSDK.TRUE == iRet)
            {
                deviceInfoTemp.m_channelNumber = pdwChlCount;
                NETDEV_VIDEO_CHL_DETAIL_INFO_S stCHLItem = new NETDEV_VIDEO_CHL_DETAIL_INFO_S();
                for (int i = 0; i < pdwChlCount; i++)
                {
                    IntPtr ptrTemp = new IntPtr(pstVideoChlList.ToInt64() + Marshal.SizeOf(typeof(NETDEV_VIDEO_CHL_DETAIL_INFO_S)) * i);
                    stCHLItem = (NETDEV_VIDEO_CHL_DETAIL_INFO_S)Marshal.PtrToStructure(ptrTemp, typeof(NETDEV_VIDEO_CHL_DETAIL_INFO_S));

                    ChannelInfo channelInfo = new ChannelInfo();
                    channelInfo.m_devVideoChlInfo = stCHLItem;
                    deviceInfoTemp.m_channelInfoList.Add(channelInfo);
                    deviceInfoTemp.m_channelNumber = deviceInfos.Count + 1;
                }
                deviceInfos.Add(deviceInfoTemp);
            }

            Marshal.FreeHGlobal(pstVideoChlList);
            NETDEV_DEVICE_INFO_S pstDevInfo = new NETDEV_DEVICE_INFO_S();

            NETDEVSDK.NETDEV_GetDeviceInfo(deviceInfoTemp.m_lpDevHandle, ref pstDevInfo);
            deviceInfoTemp.m_stDevInfo = pstDevInfo;
        }
Example #2
0
        public void DevLogin(DeviceInfo devInfo)
        {
            if (DeviceInfo != null &&
                DeviceInfo.m_ip == devInfo.m_ip &&
                DeviceInfo.m_port == devInfo.m_port
                )
            {
                return;
            }

            NETDEMO.NETDEV_LOGIN_TYPE_E loginFlag       = NETDEMO.NETDEV_LOGIN_TYPE_E.NETDEV_NEW_LOGIN;
            NETDEV_DEVICE_LOGIN_INFO_S  pstDevLoginInfo = new NETDEV_DEVICE_LOGIN_INFO_S();
            NETDEV_SELOG_INFO_S         pstSELogInfo    = new NETDEV_SELOG_INFO_S();

            pstDevLoginInfo.szIPAddr   = devInfo.m_ip;
            pstDevLoginInfo.dwPort     = devInfo.m_port;
            pstDevLoginInfo.szUserName = devInfo.m_userName;
            pstDevLoginInfo.szPassword = devInfo.m_password;
            if (NETDEMO.NETDEMO_DEVICE_TYPE_E.NETDEMO_DEVICE_VMS == devInfo.m_eDeviceType)
            {
                pstDevLoginInfo.dwLoginProto = (int)NETDEV_LOGIN_PROTO_E.NETDEV_LOGIN_PROTO_PRIVATE;
            }
            else
            {
                pstDevLoginInfo.dwLoginProto = (int)NETDEV_LOGIN_PROTO_E.NETDEV_LOGIN_PROTO_ONVIF;
            }
            IntPtr lpDevHandle = NETDEVSDK.NETDEV_Login_V30(ref pstDevLoginInfo, ref pstSELogInfo);

            if (lpDevHandle == IntPtr.Zero)
            {
                Debug.WriteLine(devInfo.m_ip + " : " + devInfo.m_port, "login", NETDEVSDK.NETDEV_GetLastError());
                return;
            }
            lpUserID = lpDevHandle;
            if (loginFlag == NETDEMO.NETDEV_LOGIN_TYPE_E.NETDEV_AGAIN_LOGIN)
            {
                devInfo.m_lpDevHandle = lpDevHandle;
            }
            int iRet = NETDEVSDK.NETDEV_SetExceptionCallBack(excepCB, IntPtr.Zero);

            if (NETDEVSDK.FALSE == iRet)
            {
                Debug.WriteLine(devInfo.m_ip + " : " + devInfo.m_port, "register ExceptionCallBack", NETDEVSDK.NETDEV_GetLastError());
                return;
            }
            devInfo.m_lpDevHandle = lpDevHandle;
            DeviceInfo deviceInfoTemp = devInfo;

            //DeviceInfo deviceInfoTemp = new DeviceInfo();
            //deviceInfoTemp.m_lpDevHandle = lpDevHandle;
            //deviceInfoTemp.m_ip = devInfo.m_ip;
            //deviceInfoTemp.m_port = devInfo.m_port;
            //deviceInfoTemp.m_userName = devInfo.m_userName;
            //deviceInfoTemp.m_password = devInfo.m_password;
            //deviceInfoTemp.m_eDeviceType = devInfo.m_eDeviceType;

            //get the channel list
            if (NETDEMO.NETDEMO_DEVICE_TYPE_E.NETDEMO_DEVICE_VMS == devInfo.m_eDeviceType)
            {
                deviceInfoTemp.stVmsDevInfo = new NETDEMO_VMS_DEVICE_INFO_S();

                NETDEV_ORG_FIND_COND_S stFindCond = new NETDEV_ORG_FIND_COND_S();
                stFindCond.udwRootOrgID = 0;
                IntPtr lpFindOrgHandle = NETDEVSDK.NETDEV_FindOrgInfoList(lpDevHandle, ref stFindCond);
                if (IntPtr.Zero == lpFindOrgHandle)
                {
                    Debug.WriteLine(devInfo.m_ip + " : " + devInfo.m_port, "find org list", NETDEVSDK.NETDEV_GetLastError());
                    return;
                }

                while (true)
                {
                    NETDEMO_VMS_ORG_INFO_S stDemoOrgInfo = new NETDEMO_VMS_ORG_INFO_S();
                    NETDEV_ORG_INFO_S      stOrgInfo     = new NETDEV_ORG_INFO_S();
                    iRet = NETDEVSDK.NETDEV_FindNextOrgInfo(lpFindOrgHandle, ref stOrgInfo);
                    if (NETDEVSDK.FALSE == iRet)
                    {
                        break;
                    }

                    stDemoOrgInfo.stOrgInfo = stOrgInfo;
                    deviceInfoTemp.stVmsDevInfo.stOrgInfoList.Add(stDemoOrgInfo);
                }

                NETDEVSDK.NETDEV_FindCloseOrgInfo(lpFindOrgHandle);

                IntPtr lpFindDevHandle = NETDEVSDK.NETDEV_FindDevList(lpDevHandle, (int)NETDEV_DEVICE_MAIN_TYPE_E.NETDEV_DTYPE_MAIN_ENCODE);
                if (IntPtr.Zero == lpFindDevHandle)
                {
                    Debug.WriteLine(devInfo.m_ip + " : " + devInfo.m_port, "NETDEV_FindDevList", NETDEVSDK.NETDEV_GetLastError());
                    //return;
                }

                while (true)
                {
                    NETDEMO_VMS_DEV_BASIC_INFO_S stDemoVmsBasicInfo = new NETDEMO_VMS_DEV_BASIC_INFO_S();

                    NETDEV_DEV_BASIC_INFO_S pstDevBasicInfo = new NETDEV_DEV_BASIC_INFO_S();
                    iRet = NETDEVSDK.NETDEV_FindNextDevInfo(lpFindDevHandle, ref pstDevBasicInfo);
                    if (NETDEVSDK.FALSE == iRet)
                    {
                        break;
                    }

                    stDemoVmsBasicInfo.stDevBasicInfo = pstDevBasicInfo;

                    IntPtr lpFindDevChnHandle = NETDEVSDK.NETDEV_FindDevChnList(lpDevHandle, pstDevBasicInfo.dwDevID, 0);
                    if (IntPtr.Zero == lpFindDevChnHandle)
                    {
                        Debug.WriteLine(devInfo.m_ip + " : " + devInfo.m_port, "NETDEV_FindDevChnList", NETDEVSDK.NETDEV_GetLastError());
                        break;
                    }

                    while (true)
                    {
                        NETDEMO_VMS_DEV_CHANNEL_INFO_S stDemoVmsChnInfo = new NETDEMO_VMS_DEV_CHANNEL_INFO_S();

                        int pdwBytesReturned = 0;
                        NETDEV_DEV_CHN_ENCODE_INFO_S stDevChnInfo = new NETDEV_DEV_CHN_ENCODE_INFO_S();
                        IntPtr lpOutBuffer = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(NETDEV_DEV_CHN_ENCODE_INFO_S)));
                        Marshal.StructureToPtr(stDevChnInfo, lpOutBuffer, true);
                        iRet = NETDEVSDK.NETDEV_FindNextDevChn(lpFindDevChnHandle, lpOutBuffer, Marshal.SizeOf(typeof(NETDEV_DEV_CHN_ENCODE_INFO_S)), ref pdwBytesReturned);
                        if (NETDEVSDK.FALSE == iRet)
                        {
                            Marshal.FreeHGlobal(lpOutBuffer);
                            break;
                        }
                        else
                        {
                            stDevChnInfo = (NETDEV_DEV_CHN_ENCODE_INFO_S)Marshal.PtrToStructure(lpOutBuffer, typeof(NETDEV_DEV_CHN_ENCODE_INFO_S));
                            stDemoVmsChnInfo.stChnInfo = stDevChnInfo;
                            stDemoVmsBasicInfo.stChnInfoList.Add(stDemoVmsChnInfo);

                            Marshal.FreeHGlobal(lpOutBuffer);
                        }
                    }

                    NETDEVSDK.NETDEV_FindCloseDevChn(lpFindDevChnHandle);

                    for (int k = 0; k < deviceInfoTemp.stVmsDevInfo.stOrgInfoList.Count; k++)
                    {
                        if (stDemoVmsBasicInfo.stDevBasicInfo.dwOrgID == deviceInfoTemp.stVmsDevInfo.stOrgInfoList[k].stOrgInfo.dwOrgID)
                        {
                            deviceInfoTemp.stVmsDevInfo.stOrgInfoList[k].stVmsDevBasicInfoList.Add(stDemoVmsBasicInfo);
                        }
                    }
                }

                NETDEVSDK.NETDEV_FindCloseDevInfo(lpFindDevHandle);

                //if (loginFlag == NETDEMO.NETDEV_LOGIN_TYPE_E.NETDEV_AGAIN_LOGIN)//again login
                //{
                //    m_deviceInfoList[DeviceNodeIndex] = deviceInfoTemp;
                //    TreeNode treeNode = TreeViewFindNode(DeviceTree, DeviceNodeIndex, 0, NETDEMO.NETDEMO_FIND_TREE_NODE_TYPE_E.NETDEMO_FIND_TREE_NODE_DEVICE_INDEX);
                //    if (null != treeNode)
                //    {
                //        setDeviceTreeNode(treeNode, DeviceNodeIndex, deviceInfoTemp);
                //        //updatedeviceTreeStatus(DeviceNodeIndex);

                //        for (int j = 0; j < deviceInfo.m_RealPlayInfoList.Count; j++)
                //        {
                //            m_CurSelectTreeNodeInfo = new TreeNodeInfo();
                //            m_CurSelectTreeNodeInfo.dwDeviceIndex = DeviceNodeIndex;
                //            m_CurSelectTreeNodeInfo.dwChannelID = deviceInfo.m_RealPlayInfoList[j].m_channel;
                //            m_curRealPanel = arrayRealPanel[deviceInfo.m_RealPlayInfoList[j].m_panelIndex];
                //            startRealPlay();
                //        }
                //    }
                //}
                //else
                //{
                //    setTreeView(deviceInfoTemp);
                //    m_deviceInfoList.Add(deviceInfoTemp);
                //}
            }
            else
            {
                int    pdwChlCount     = 256;
                IntPtr pstVideoChlList = new IntPtr();
                //pstVideoChlList = Marshal.AllocHGlobal(NETDEVSDK.NETDEV_LEN_32 * Marshal.SizeOf(typeof(NETDEV_VIDEO_CHL_DETAIL_INFO_S)));
                pstVideoChlList = Marshal.AllocHGlobal(256 * Marshal.SizeOf(typeof(NETDEV_VIDEO_CHL_DETAIL_INFO_S)));
                iRet            = NETDEVSDK.NETDEV_QueryVideoChlDetailList(deviceInfoTemp.m_lpDevHandle, ref pdwChlCount, pstVideoChlList);
                if (NETDEVSDK.TRUE == iRet)
                {
                    deviceInfoTemp.m_channelNumber = pdwChlCount;
                    NETDEV_VIDEO_CHL_DETAIL_INFO_S stCHLItem = new NETDEV_VIDEO_CHL_DETAIL_INFO_S();
                    for (int i = 0; i < pdwChlCount; i++)
                    {
                        IntPtr ptrTemp = new IntPtr(pstVideoChlList.ToInt64() + Marshal.SizeOf(typeof(NETDEV_VIDEO_CHL_DETAIL_INFO_S)) * i);
                        stCHLItem = (NETDEV_VIDEO_CHL_DETAIL_INFO_S)Marshal.PtrToStructure(ptrTemp, typeof(NETDEV_VIDEO_CHL_DETAIL_INFO_S));

                        ChannelInfo channelInfo = new ChannelInfo();
                        channelInfo.m_devVideoChlInfo = stCHLItem;
                        deviceInfoTemp.m_channelInfoList.Add(channelInfo);
                        TreeNodeInfo.dwChannelID = stCHLItem.dwChannelID;
                    }

                    NETDEV_PREVIEWINFO_S stPreviewInfo = new NETDEV_PREVIEWINFO_S();
                    stPreviewInfo.dwChannelID = TreeNodeInfo.dwChannelID;
                    //stPreviewInfo.dwFluency =
                    stPreviewInfo.dwLinkMode   = (int)NETDEV_PROTOCAL_E.NETDEV_TRANSPROTOCAL_RTPTCP;
                    stPreviewInfo.dwStreamType = (int)NETDEV_LIVE_STREAM_INDEX_E.NETDEV_LIVE_STREAM_INDEX_MAIN;
                    stPreviewInfo.hPlayWnd     = CurrentHandle;
                    IntPtr Handle = NETDEVSDK.NETDEV_RealPlay(devInfo.m_lpDevHandle, ref stPreviewInfo, IntPtr.Zero, IntPtr.Zero);
                    if (Handle == IntPtr.Zero)
                    {
                        return;
                    }
                    CurrentHandle = Handle;
                    //if (loginFlag == NETDEMO.NETDEV_LOGIN_TYPE_E.NETDEV_AGAIN_LOGIN)//again login
                    //{
                    //    m_deviceInfoList[DeviceNodeIndex] = deviceInfoTemp;
                    //    TreeNode treeNode = TreeViewFindNode(DeviceTree, DeviceNodeIndex, 0, NETDEMO.NETDEMO_FIND_TREE_NODE_TYPE_E.NETDEMO_FIND_TREE_NODE_DEVICE_INDEX);
                    //    if (null != treeNode)
                    //    {
                    //        setDeviceTreeNode(treeNode, DeviceNodeIndex, deviceInfoTemp);
                    //        //updatedeviceTreeStatus(DeviceNodeIndex);

                    //        for (int j = 0; j < deviceInfo.m_RealPlayInfoList.Count; j++)
                    //        {
                    //            m_CurSelectTreeNodeInfo = new TreeNodeInfo();
                    //            m_CurSelectTreeNodeInfo.dwDeviceIndex = DeviceNodeIndex;
                    //            m_CurSelectTreeNodeInfo.dwChannelID = deviceInfo.m_RealPlayInfoList[j].m_channel;
                    //            m_curRealPanel = arrayRealPanel[deviceInfo.m_RealPlayInfoList[j].m_panelIndex];
                    //            startRealPlay();
                    //        }
                    //    }
                    //}
                    //else
                    //{
                    //    setTreeView(deviceInfoTemp);
                    //    m_deviceInfoList.Add(deviceInfoTemp);
                    //}
                }
                Marshal.FreeHGlobal(pstVideoChlList);

                NETDEV_DEVICE_INFO_S pstDevInfo = new NETDEV_DEVICE_INFO_S();
                NETDEVSDK.NETDEV_GetDeviceInfo(deviceInfoTemp.m_lpDevHandle, ref pstDevInfo);
                deviceInfoTemp.m_stDevInfo = pstDevInfo;
            }
        }