//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; }
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; } }