/// <summary> /// 功能:开始语音对讲 /// </summary> /// <param name="IUserID">Login的返回值</param> /// <param name="callback">回调音频数据函数</param> /// <param name="dwUser">用户数据</param> /// <returns>返回值:-1表示失败,其他值作为其它函数的参数</returns> public int StartVoiceCom(int IUserID, SDKPlugInData.fVoiceDataCallBack callback, int dwUser) { PVoiceComInfo pVoiceComInfo; pVoiceComInfo.m_sIP = hashtable_ip[IUserID].ToString(); pVoiceComInfo.m_sUserName = hashtable_username[IUserID].ToString(); pVoiceComInfo.m_sUserPassWord = hashtable_password[IUserID].ToString(); pVoiceComInfo.m_bytSendMode = 0; pVoiceComInfo.m_bUserCheck = false; fVoiceDataCallBack fvoicedatacallback = null; return MP4Net_ClientStartVoiceCom(ref pVoiceComInfo, fvoicedatacallback, (uint)dwUser); }
/// <summary> /// 功能:云台控制,必须在启动预览之后调用 /// </summary> /// <param name="lRealPlayHandle">RealPlay()的返回值.</param> /// <param name="code">云台控制命令.</param> /// <param name="dwStop">让云台停止动作还是开始动作,0-开始,1-停.</param> /// <returns>返回值:TRUE 表示成功,FALSE 表示失败。</returns> public bool PTZControl(int lRealPlayHandle, SDKPlugInData.PTZCode code, int dwStop) { IRealHandleData realHandleData = realHandleDataList.FindByRealPlayHandle(lRealPlayHandle); if (realHandleData != null) { uint lRealHandle =realHandleData.RealHandle; dwStop = dwStop == 0 ? 1 : 0; switch (code) { case SDKPlugInData.PTZCode.LIGHT_PWRON: return VSNET_ClientPTZCtrl(lRealHandle, (int)PTZEnum.PTZ_LIGH, dwStop); case SDKPlugInData.PTZCode.WIPER_PWRON: return VSNET_ClientPTZCtrl(lRealHandle, (int)PTZEnum.PTZ_WIPER, dwStop); case SDKPlugInData.PTZCode.FAN_PWRON: return VSNET_ClientPTZCtrl(lRealHandle, (int)PTZEnum.PTZ_FAN, dwStop); case SDKPlugInData.PTZCode.HEATER_PWRON: return VSNET_ClientPTZCtrl(lRealHandle, (int)PTZEnum.PTZ_HEATER, dwStop); case SDKPlugInData.PTZCode.AUX_PWRON: return VSNET_ClientPTZCtrl(lRealHandle, (int)PTZEnum.PTZ_AUX, dwStop); case SDKPlugInData.PTZCode.ZOOM_IN: return VSNET_ClientPTZCtrl(lRealHandle, (int)PTZEnum.PTZ_ZOOM_IN, dwStop); case SDKPlugInData.PTZCode.ZOOM_OUT: return VSNET_ClientPTZCtrl(lRealHandle, (int)PTZEnum.PTZ_ZOOM_OUT, dwStop); case SDKPlugInData.PTZCode.FOCUS_IN: return VSNET_ClientPTZCtrl(lRealHandle, (int)PTZEnum.PTZ_FOCUS_IN, dwStop); case SDKPlugInData.PTZCode.FOCUS_OUT: return VSNET_ClientPTZCtrl(lRealHandle, (int)PTZEnum.PTZ_FOCUS_OUT, dwStop); case SDKPlugInData.PTZCode.IRIS_ENLARGE: return VSNET_ClientPTZCtrl(lRealHandle, (int)PTZEnum.PTZ_IRIS_ENLARGE, dwStop); case SDKPlugInData.PTZCode.IRIS_SHRINK: return VSNET_ClientPTZCtrl(lRealHandle, (int)PTZEnum.PTZ_IRIS_SHRINK, dwStop); case SDKPlugInData.PTZCode.TILT_UP: return VSNET_ClientPTZCtrl(lRealHandle, (int)PTZEnum.PTZ_UP, dwStop); case SDKPlugInData.PTZCode.TILT_DOWN: return VSNET_ClientPTZCtrl(lRealHandle, (int)PTZEnum.PTZ_DOWN, dwStop); case SDKPlugInData.PTZCode.PAN_LEFT: return VSNET_ClientPTZCtrl(lRealHandle, (int)PTZEnum.PTZ_LEFT, dwStop); case SDKPlugInData.PTZCode.PAN_RIGHT: return VSNET_ClientPTZCtrl(lRealHandle, (int)PTZEnum.PTZ_RIGHT, dwStop); case SDKPlugInData.PTZCode.PAN_AUTO: return VSNET_ClientPTZCtrl(lRealHandle, (int)PTZEnum.PTZ_AUTO, dwStop); } return false; } else { return false; } }
/// <summary> /// 进行设备设置初始化 /// </summary> /// <param name="para">设备初始化设置参数</param> /// <param name="callback">消息回调(接收硬盘录像机消息)</param> /// <returns>执行结果代码:0 - 成功,1 - 设置连接时间和连接次数失败,2 - 设置硬盘录像机消息失败,3-设置硬盘录像机消息回调函数失败,4-设置显示模式失败</returns> public int SDKParaInit(SDKPlugInData.DeviceInitparameter para, SDKPlugInData.AllCallBack callback) { bool success=VSNET_ClientStartup((ushort)para.UserMessageCode, para.DVRMessageHWnd) ; if (success) return 0; else return 1; }
/// <summary> /// 进行SDK参数初始化 /// </summary> /// <param name="para">SDK初始化设置参数</param> /// <param name="callback"> 消息回调(接收硬盘录像机消息)</param> /// <returns>执行结果代码:0 - 成功,1 - 设置连接时间和连接次数失败,2 - 设置硬盘录像机消息失败,3-设置硬盘录像机消息回调函数失败,4-设置显示模式失败</returns> public int SDKParaInit(SDKPlugInData.DeviceInitparameter para, SDKPlugInData.AllCallBack callback) { allcallback = callback; IntPtr intptr = IntPtr.Zero; bool success = VSNET_ClientStartup((uint)(para.UserMessageCode), para.DVRMessageHWnd); if (success) return 0; else return 1; }
/// <summary> /// 功能:开始语音对讲 /// </summary> /// <param name="IUserID">Login的返回值</param> /// <param name="callback">回调音频数据函数</param> /// <param name="dwUser">用户数据</param> /// <returns>返回值:-1表示失败,其他值作为其它函数的参数</returns> public int StartVoiceCom(int IUserID, SDKPlugInData.fVoiceDataCallBack callback, int dwUser) { ILoginData loginData = loginDataList.FindByLoginDataHandle(IUserID); if (IUserID != -1 && loginData != null) { AudioTalkParam audioTalkParam = new AudioTalkParam(); audioTalkParam.nChannels = 1; audioTalkParam.nCtrlPort = 5656; audioTalkParam.nLiveInterval = 30; audioTalkParam.nSampleBits = 16; audioTalkParam.nSampleRate = 8000; audioTalkParam.szAudioCodec = "G711"; audioTalkParam.szDVSIP = loginData.DeviceIP; audioTalkParam.szUserName = "******"; audioTalkParam.szPassWord = "******"; audioTalkParam.szStreamName = "a0"; uint IVoiceComHandle = VSNET_ClientStartVoiceCom(loginData.LoginHandle, ref audioTalkParam, pVoiceTalkCallback, (uint) dwUser); if (Convert.ToInt32(IVoiceComHandle) == 0) { return -1; } else { return Convert.ToInt32(IVoiceComHandle); } } else { return -1; } }
/// <summary> /// 功能:云台控制,必须在启动预览之后调用 /// </summary> /// <param name="lRealHandle">RealPlay()的返回值</param> /// <param name="code">云台控制命令</param> /// <param name="dwStop">让云台停止动作还是开始动作,0-开始,1-停</param> /// <param name="dwSpeed">云台控制的速度</param> /// <returns>返回值:TRUE 表示成功,FALSE 表示失败。</returns> public bool PTZControlWithSpeed(int lRealHandle, SDKPlugInData.PTZCode code, int dwStop, int dwSpeed) { return true; }
/// <summary> /// 功能:开始语音对讲 /// </summary> /// <param name="IUserID">Login的返回值</param> /// <param name="callback">回调音频数据函数</param> /// <param name="dwUser">用户数据</param> /// <returns>返回值:-1表示失败,其他值作为其它函数的参数</returns> public int StartVoiceCom(int IUserID, SDKPlugInData.fVoiceDataCallBack callback, int dwUser) { TalkCallBack talkcallback = null; return VSNET_ClientTalkExchangeStart(hashtable_ip[IUserID].ToString(), hashtable_username[IUserID].ToString(), hashtable_password[IUserID].ToString(), (ushort.Parse(hashtable_port[IUserID].ToString())), talkcallback, "video server"); }
/// <summary> /// 功能:设置声卡工播放模式 /// </summary> /// <param name="dwMode">声卡模式.</param> /// <returns>返回值:TRUE 表示成功,FALSE 表示失败。</returns> public bool SetAudioMode(SDKPlugInData.AudioMode dwMode) { bool flag = true; if (dwMode == SDKPlugInData.AudioMode.share) { mode = SDKPlugInData.AudioMode.share; flag = NET_DVR_SetAudioMode(2); if (!flag) IsAudioEnable = false; } else { AudioMode = SDKPlugInData.AudioMode.single; flag = NET_DVR_SetAudioMode(1); if (!flag) IsAudioEnable = false; } return flag; }
/// <summary> /// 功能:开始语音对讲 /// </summary> /// <param name="IUserID">Login的返回值</param> /// <param name="callback">回调音频数据函数</param> /// <param name="dwUser">用户数据</param> /// <returns>返回值:-1表示失败,其他值作为其它函数的参数</returns> public int StartVoiceCom(int IUserID, SDKPlugInData.fVoiceDataCallBack callback, int dwUser) { return NET_DVR_StartVoiceCom(IUserID, callback, dwUser); }
/// <summary> /// 云台预置位操作 /// </summary> /// <param name="lRealHandle">用户登陆ID</param> /// <param name="presetcode">云台预置命令(-1 - 删除预置点,0 - 转至预置点,1 - 设置预置点)</param> /// <param name="dwPreSetIndex">预置点的序号</param> /// <returns></returns> public bool PTZPreSet(int lRealHandle, SDKPlugInData.PTZPreSetCode presetcode, int dwPreSetIndex) { switch (presetcode) { case SDKPlugInData.PTZPreSetCode.DEL: return NET_DVR_PTZPreset_EX(lRealHandle, 9, dwPreSetIndex); case SDKPlugInData.PTZPreSetCode.TRANSFER: return NET_DVR_PTZPreset_EX(lRealHandle, 39, dwPreSetIndex); case SDKPlugInData.PTZPreSetCode.SET: return NET_DVR_PTZPreset_EX(lRealHandle, 8, dwPreSetIndex); default: break; } return false; }
/// <summary> /// 进行设备设置初始化 /// </summary> /// <param name="para">设备初始化设置参数</param> /// <param name="Acallback">消息回调(接收硬盘录像机消息)</param> /// <returns>执行结果代码:0 - 成功,1 - 设置连接时间和连接次数失败,2 - 设置硬盘录像机消息失败,3-设置硬盘录像机消息回调函数失败,4-设置显示模式失败</returns> public int SDKParaInit(SDKPlugInData.DeviceInitparameter para, SDKPlugInData.AllCallBack Acallback) { allcallback = Acallback; if (NET_DVR_SetConnectTime(para.WaitTime, para.TryTime)) { return 1; } else { if (NET_DVR_SetDVRMessage(para.UserMessageCode, para.DVRMessageHWnd)) { callback = new fMessCallBack(MessCallBack); if (NET_DVR_SetDVRMessCallBack(callback)) { if (!NET_DVR_SetShowMode(0, 0xff000000)) { return 4; } } else { return 3; } } else { return 2; } } return 0; }
/// <summary> /// 功能:云台控制,必须在启动预览之后调用 /// </summary> /// <param name="lRealHandle">RealPlay()的返回值</param> /// <param name="code">云台控制命令</param> /// <param name="dwStop">让云台停止动作还是开始动作,0-开始,1-停</param> /// <param name="dwSpeed">云台控制的速度</param> /// <returns>返回值:TRUE 表示成功,FALSE 表示失败。</returns> public bool PTZControlWithSpeed(int lRealHandle, SDKPlugInData.PTZCode code, int dwStop, int dwSpeed) { switch (code) { case SDKPlugInData.PTZCode.LIGHT_PWRON: return NET_DVR_PTZControlWithSpeed(lRealHandle, 2, dwStop, dwSpeed); case SDKPlugInData.PTZCode.WIPER_PWRON: return NET_DVR_PTZControlWithSpeed(lRealHandle, 3, dwStop, dwSpeed); case SDKPlugInData.PTZCode.FAN_PWRON: return NET_DVR_PTZControlWithSpeed(lRealHandle, 4, dwStop, dwSpeed); case SDKPlugInData.PTZCode.HEATER_PWRON: return NET_DVR_PTZControlWithSpeed(lRealHandle, 5, dwStop, dwSpeed); case SDKPlugInData.PTZCode.AUX_PWRON: return NET_DVR_PTZControlWithSpeed(lRealHandle, 6, dwStop, dwSpeed); case SDKPlugInData.PTZCode.ZOOM_IN: return NET_DVR_PTZControlWithSpeed(lRealHandle, 11, dwStop, dwSpeed); case SDKPlugInData.PTZCode.ZOOM_OUT: return NET_DVR_PTZControlWithSpeed(lRealHandle, 12, dwStop, dwSpeed); case SDKPlugInData.PTZCode.FOCUS_IN: return NET_DVR_PTZControlWithSpeed(lRealHandle, 13, dwStop, dwSpeed); case SDKPlugInData.PTZCode.FOCUS_OUT: return NET_DVR_PTZControlWithSpeed(lRealHandle, 14, dwStop, dwSpeed); case SDKPlugInData.PTZCode.IRIS_ENLARGE: return NET_DVR_PTZControlWithSpeed(lRealHandle, 15, dwStop, dwSpeed); case SDKPlugInData.PTZCode.IRIS_SHRINK: return NET_DVR_PTZControlWithSpeed(lRealHandle, 16, dwStop, dwSpeed); case SDKPlugInData.PTZCode.TILT_UP: return NET_DVR_PTZControlWithSpeed(lRealHandle, 21, dwStop, dwSpeed); case SDKPlugInData.PTZCode.TILT_DOWN: return NET_DVR_PTZControlWithSpeed(lRealHandle, 22, dwStop, dwSpeed); case SDKPlugInData.PTZCode.PAN_LEFT: return NET_DVR_PTZControlWithSpeed(lRealHandle, 23, dwStop, dwSpeed); case SDKPlugInData.PTZCode.PAN_RIGHT: return NET_DVR_PTZControlWithSpeed(lRealHandle, 24, dwStop, dwSpeed); case SDKPlugInData.PTZCode.PAN_AUTO: return NET_DVR_PTZControlWithSpeed(lRealHandle, 29, dwStop, dwSpeed); default: break; } return false; }
/// <summary> /// 注册用户到硬盘录像机上 /// </summary> /// <param name="DVRIp">硬盘录像机的IP 地址.</param> /// <param name="DVRPort">硬盘录像机的端口号.</param> /// <param name="username">登录的用户名.</param> /// <param name="password">用户密码.</param> /// <param name="lpinfo">指向DEVICEINFO 结构的指针.</param> /// <returns>-1 表示失败,其他值表示返回用户的ID 值,该ID 值是由SDK 分配,每个ID 值在客户端是唯一的。</returns> public int DeviceLogin(string DVRIp, ushort DVRPort, string username, string password, ref SDKPlugInData.DEVICEINFO lpinfo, string servername) { NET_DVR_DEVICEINFO info1 = new NET_DVR_DEVICEINFO(); int temp = NET_DVR_Login(DVRIp, DVRPort, username, password, ref info1); lpinfo.sSerialNumber = info1.sSerialNumber; lpinfo.byAlarmInPortNum = info1.byAlarmInPortNum; lpinfo.byAlarmOutPortNum = info1.byAlarmOutPortNum; lpinfo.byDiskNum = info1.byDiskNum; lpinfo.byDVRType = info1.byDVRType; lpinfo.byChanNum = info1.byChanNum; lpinfo.byStartChan = info1.byStartChan; return temp; }
private static extern Int32 NET_DVR_StartVoiceCom_MR(Int32 lUserID, SDKPlugInData.fVoiceDataCallBack fVoiceData, int dwUser);
/// <summary> /// 注册用户到硬盘录像机上 /// </summary> /// <param name="DVRIp">硬盘录像机的IP 地址.</param> /// <param name="DVRPort">硬盘录像机的端口号.</param> /// <param name="username">登录的用户名.</param> /// <param name="password">用户密码.</param> /// <param name="lpinfo">指向DEVICEINFO 结构的指针.</param> /// <returns>-1 表示失败,其他值表示返回用户的ID 值,该ID 值是由SDK 分配,每个ID 值在客户端是唯一的。</returns> public int DeviceLogin(string DVRIp, ushort DVRPort, string username, string password, ref SDKPlugInData.DEVICEINFO lpinfo, string servername) { if (!hashtable_ip.Contains(DevideID)) hashtable_ip.Add(DevideID, DVRIp); if (!hashtable_port.Contains(DevideID)) hashtable_port.Add(DevideID, DVRPort); if (!hashtable_username.Contains(DevideID)) hashtable_username.Add(DevideID, username); if (!hashtable_password.Contains(DevideID)) hashtable_password.Add(DevideID, password); if (!hashtable_sername.Contains(DevideID)) hashtable_sername.Add(DevideID, servername); DevideID++; return DevideID-1; }
/// <summary> /// 声音播放模式设定 /// </summary> private void SetAudioMode(SDKPlugInData.AudioMode dwMode) { foreach (SDKInterface sdk in sdklibrarys) { if (sdk.Enable) { if (!sdk.SetAudioMode(dwMode)) { //TODO:设置音频播放模式失败 MessageBox.Show("设置音频播放模式失败"); } } } }
/// <summary> /// 功能:云台控制,必须在启动预览之后调用 /// </summary> /// <param name="lRealHandle">RealPlay()的返回值.</param> /// <param name="code">云台控制命令.</param> /// <param name="dwStop">让云台停止动作还是开始动作,0-开始,1-停.</param> /// <returns>返回值:TRUE 表示成功,FALSE 表示失败。</returns> public bool PTZControl(int lRealHandle, SDKPlugInData.PTZCode code, int dwStop) { switch (code) { case SDKPlugInData.PTZCode.LIGHT_PWRON: if (dwStop == 0) return VSNET_ClientPTZCtrl(lRealHandle, 24, dwStop,0); else return VSNET_ClientPTZCtrl(lRealHandle, 25, dwStop,0); case SDKPlugInData.PTZCode.WIPER_PWRON: if (dwStop == 0) return VSNET_ClientPTZCtrl(lRealHandle, 26, dwStop, 0); else return VSNET_ClientPTZCtrl(lRealHandle, 27, dwStop, 0); case SDKPlugInData.PTZCode.FAN_PWRON: return VSNET_ClientPTZCtrl(lRealHandle, 4, dwStop, 0); case SDKPlugInData.PTZCode.HEATER_PWRON: return VSNET_ClientPTZCtrl(lRealHandle, 5, dwStop, 0); case SDKPlugInData.PTZCode.AUX_PWRON: return VSNET_ClientPTZCtrl(lRealHandle, 6, dwStop, 0); case SDKPlugInData.PTZCode.ZOOM_IN: if (dwStop == 0) return VSNET_ClientPTZCtrl(lRealHandle, 8, dwStop, 0); else return VSNET_ClientPTZCtrl(lRealHandle, 22, dwStop, 0); case SDKPlugInData.PTZCode.ZOOM_OUT: if (dwStop == 0) return VSNET_ClientPTZCtrl(lRealHandle, 9, dwStop, 0); else return VSNET_ClientPTZCtrl(lRealHandle, 23, dwStop, 0); case SDKPlugInData.PTZCode.FOCUS_IN: if (dwStop == 0) return VSNET_ClientPTZCtrl(lRealHandle, 6, dwStop, 0); else return VSNET_ClientPTZCtrl(lRealHandle, 20, dwStop, 0); case SDKPlugInData.PTZCode.FOCUS_OUT: if (dwStop == 0) return VSNET_ClientPTZCtrl(lRealHandle, 7, dwStop, 0); else return VSNET_ClientPTZCtrl(lRealHandle, 21, dwStop, 0); case SDKPlugInData.PTZCode.IRIS_ENLARGE: if (dwStop == 0) return VSNET_ClientPTZCtrl(lRealHandle, 4, dwStop, 0); else return VSNET_ClientPTZCtrl(lRealHandle, 18, dwStop, 0); case SDKPlugInData.PTZCode.IRIS_SHRINK: if (dwStop == 0) return VSNET_ClientPTZCtrl(lRealHandle, 5, dwStop, 0); else return VSNET_ClientPTZCtrl(lRealHandle, 19, dwStop, 0); case SDKPlugInData.PTZCode.TILT_UP: if (dwStop == 0) return VSNET_ClientPTZCtrl(lRealHandle, 2, dwStop, 0); else return VSNET_ClientPTZCtrl(lRealHandle, 16, dwStop, 0); case SDKPlugInData.PTZCode.TILT_DOWN: if (dwStop == 0) return VSNET_ClientPTZCtrl(lRealHandle, 3, dwStop, 0); else return VSNET_ClientPTZCtrl(lRealHandle, 17, dwStop, 0); case SDKPlugInData.PTZCode.PAN_LEFT: if (dwStop == 0) return VSNET_ClientPTZCtrl(lRealHandle, 0, dwStop, 0); else return VSNET_ClientPTZCtrl(lRealHandle, 14, dwStop, 0); case SDKPlugInData.PTZCode.PAN_RIGHT: if (dwStop == 0) return VSNET_ClientPTZCtrl(lRealHandle, 1, dwStop, 0); else return VSNET_ClientPTZCtrl(lRealHandle, 15, dwStop, 0); case SDKPlugInData.PTZCode.PAN_AUTO: if (dwStop == 0) return VSNET_ClientPTZCtrl(lRealHandle, 12, 1, 0); else return VSNET_ClientPTZCtrl(lRealHandle, 12, 0, 0); } return false; }
/// <summary> /// �����豸Handle /// </summary> /// <param name="dsi"></param> /// <param name="handle"></param> private void SetDevieHandle(SDKPlugInData.DeviceSInformation dsi, int handle) { IDevice device = deviceList.FindByID(dsi.UnitNo); device.DeviceHandle = handle; dsi.UserID = handle; }
/// <summary> /// 云台预置位操作 /// </summary> /// <param name="lRealHandle">RealPlay()的返回值</param> /// <param name="ptzpresetcode">云台预置命令(-1 - 删除预置点,0 - 转至预置点,1 - 设置预置点)</param> /// <param name="dwPreSetIndex">预置点的序号</param> /// <returns></returns> public bool PTZPreSet(int lRealHandle, SDKPlugInData.PTZPreSetCode presetcode, int dwPreSetIndex) { switch (presetcode) { case SDKPlugInData.PTZPreSetCode.TRANSFER: return VSNET_ClientPTZCtrl(lRealHandle, 10, dwPreSetIndex+1,0); case SDKPlugInData.PTZPreSetCode.SET: return VSNET_ClientPTZCtrl(lRealHandle, 11, dwPreSetIndex+1,0); case SDKPlugInData.PTZPreSetCode.DEL: return VSNET_ClientPTZCtrl(lRealHandle, 33, dwPreSetIndex+1,0); default: return true; } }
/// <summary> /// 注册用户到硬盘录像机上 /// </summary> /// <param name="DVRIp">硬盘录像机的IP 地址.</param> /// <param name="DVRPort">硬盘录像机的端口号.</param> /// <param name="username">登录的用户名.</param> /// <param name="password">用户密码.</param> /// <param name="lpinfo">指向DEVICEINFO 结构的指针.</param> /// <returns>-1 表示失败,其他值表示返回用户的ID 值,该ID 值是由SDK 分配,每个ID 值在客户端是唯一的。</returns> public int DeviceLogin(string DVRIp, ushort DVRPort, string username, string password, ref SDKPlugInData.DEVICEINFO lpinfo, string servername) { LPNET_DVR_DEVICEINFO lpDeviceInfo = new LPNET_DVR_DEVICEINFO(); IntPtr obj = MP4Net_ClientLogin(DVRIp, DVRPort, username, password, null, ref lpDeviceInfo); if (Convert.ToInt32(obj.ToInt32()) != -1) { //hashtable_obj.Add(Convert.ToInt32(obj.ToInt32()), obj); hashtable_ip.Add(Convert.ToInt32(obj.ToInt32()), DVRIp); hashtable_username.Add(Convert.ToInt32(obj.ToInt32()), username); hashtable_password.Add(Convert.ToInt32(obj.ToInt32()), password); IntPtr intPtr = IntPtr.Zero; try { uint lpBytesReturned = 0; intPtr = Marshal.AllocHGlobal(Marshal.SizeOf(new HY_DVS_DEVICE_INFO())); if (MP4Net_ClientGetDeviceConfig(obj, HY_DVR_GET_DEVICE_INFO, 0, intPtr, (ushort)Marshal.SizeOf(new HY_DVS_DEVICE_INFO()), ref lpBytesReturned)) { HY_DVS_DEVICE_INFO info = (HY_DVS_DEVICE_INFO)Marshal.PtrToStructure(intPtr, typeof(HY_DVS_DEVICE_INFO)); lpinfo.sSerialNumber = info.sSerialNumber; lpinfo.byAlarmInPortNum = info.byAlarmInPortNum; lpinfo.byAlarmOutPortNum = info.byAlarmOutPortNum; lpinfo.byDVRType = info.byDVRType; isDVR = false; lpinfo.byDiskNum = info.byDiskNum; lpinfo.byChanNum = info.byChanNum; } else { intPtr = Marshal.AllocHGlobal(Marshal.SizeOf(new HY_DVR_DEVICE_INFO())); if (MP4Net_ClientGetDeviceConfig(obj, HY_DVR_GET_DEVICE_INFO, 0, intPtr, (ushort)Marshal.SizeOf(new HY_DVR_DEVICE_INFO()), ref lpBytesReturned)) { HY_DVR_DEVICE_INFO info = (HY_DVR_DEVICE_INFO)Marshal.PtrToStructure(intPtr, typeof(HY_DVR_DEVICE_INFO)); lpinfo.sSerialNumber = info.sSerialNumber; lpinfo.byAlarmInPortNum = info.byAlarmInPortNum; lpinfo.byAlarmOutPortNum = info.byAlarmOutPortNum; lpinfo.byDVRType = info.byDVRType; isDVR = true; lpinfo.byDiskNum = info.byDiskNum; lpinfo.byChanNum = info.byChanNum; } } } finally { Marshal.FreeHGlobal(intPtr); } } return Convert.ToInt32(obj.ToInt32()); }
/// <summary> /// 云台预置位操作 /// </summary> /// <param name="lRealPlayHandle">RealPlay()的返回值</param> /// <param name="ptzpresetcode">云台预置命令(-1 - 删除预置点,0 - 转至预置点,1 - 设置预置点)</param> /// <param name="dwPreSetIndex">预置点的序号</param> /// <returns></returns> public bool PTZPreSet(int lRealPlayHandle, SDKPlugInData.PTZPreSetCode ptzpresetcode, int dwPreSetIndex) { IRealHandleData realHandleData = realHandleDataList.FindByRealPlayHandle(lRealPlayHandle); if (realHandleData != null) { switch (ptzpresetcode) { case SDKPlugInData.PTZPreSetCode.TRANSFER: return VSNET_ClientPTZCtrl(realHandleData.RealHandle, 21, dwPreSetIndex + 1); case SDKPlugInData.PTZPreSetCode.SET: return VSNET_ClientPTZCtrl(realHandleData.RealHandle, 19, dwPreSetIndex + 1); case SDKPlugInData.PTZPreSetCode.DEL: return VSNET_ClientPTZCtrl(realHandleData.RealHandle, 20, dwPreSetIndex + 1); default: return false; } } else { return false; } }
/// <summary> /// 功能:云台控制,必须在启动预览之后调用 /// </summary> /// <param name="lRealHandle">RealPlay()的返回值.</param> /// <param name="code">云台控制命令.</param> /// <param name="dwStop">让云台停止动作还是开始动作,0-开始,1-停.</param> /// <returns>返回值:TRUE 表示成功,FALSE 表示失败。</returns> public bool PTZControl(int lRealHandle, SDKPlugInData.PTZCode code, int dwStop) { if (lRealHandle != -1) switch (code) { case SDKPlugInData.PTZCode.LIGHT_PWRON: if (dwStop == 0) return MP4Net_ClientPTZControl((IntPtr)(Convert.ToInt32(hashtable_obj[lRealHandle].ToString())), (uint.Parse(hashtable_channel[lRealHandle].ToString())), 2, 1, 0, 0, 0); else return MP4Net_ClientPTZControl((IntPtr)(Convert.ToInt32(hashtable_obj[lRealHandle].ToString())), (uint.Parse(hashtable_channel[lRealHandle].ToString())), 2, 0, 0, 0, 0); case SDKPlugInData.PTZCode.WIPER_PWRON: if (dwStop == 0) return MP4Net_ClientPTZControl((IntPtr)(Convert.ToInt32(hashtable_obj[lRealHandle].ToString())), (uint.Parse(hashtable_channel[lRealHandle].ToString())), 3, 1, 0, 0, 0); else return MP4Net_ClientPTZControl((IntPtr)(Convert.ToInt32(hashtable_obj[lRealHandle].ToString())), (uint.Parse(hashtable_channel[lRealHandle].ToString())), 3, 0, 0, 0, 0); case SDKPlugInData.PTZCode.FAN_PWRON: if (dwStop == 0) return MP4Net_ClientPTZControl((IntPtr)(Convert.ToInt32(hashtable_obj[lRealHandle].ToString())), (uint.Parse(hashtable_channel[lRealHandle].ToString())), 4, 1, 0, 0, 0); else return MP4Net_ClientPTZControl((IntPtr)(Convert.ToInt32(hashtable_obj[lRealHandle].ToString())), (uint.Parse(hashtable_channel[lRealHandle].ToString())), 4, 0, 0, 0, 0); case SDKPlugInData.PTZCode.HEATER_PWRON: if (dwStop == 0) return MP4Net_ClientPTZControl((IntPtr)(Convert.ToInt32(hashtable_obj[lRealHandle].ToString())), (uint.Parse(hashtable_channel[lRealHandle].ToString())), 5, 1, 0, 0, 0); else return MP4Net_ClientPTZControl((IntPtr)(Convert.ToInt32(hashtable_obj[lRealHandle].ToString())), (uint.Parse(hashtable_channel[lRealHandle].ToString())), 5, 0, 0, 0, 0); case SDKPlugInData.PTZCode.AUX_PWRON: if (dwStop == 0) return MP4Net_ClientPTZControl((IntPtr)(Convert.ToInt32(hashtable_obj[lRealHandle].ToString())), (uint.Parse(hashtable_channel[lRealHandle].ToString())), 6, 1, 0, 0, 0); else return MP4Net_ClientPTZControl((IntPtr)(Convert.ToInt32(hashtable_obj[lRealHandle].ToString())), (uint.Parse(hashtable_channel[lRealHandle].ToString())), 6, 0, 0, 0, 0); case SDKPlugInData.PTZCode.ZOOM_IN: if (dwStop == 0) return MP4Net_ClientPTZControl((IntPtr)(Convert.ToInt32(hashtable_obj[lRealHandle].ToString())), (uint.Parse(hashtable_channel[lRealHandle].ToString())), 11, 1, 0, 0, 0); else return MP4Net_ClientPTZControl((IntPtr)(Convert.ToInt32(hashtable_obj[lRealHandle].ToString())), (uint.Parse(hashtable_channel[lRealHandle].ToString())), 11, 0, 0, 0, 0); case SDKPlugInData.PTZCode.ZOOM_OUT: if (dwStop == 0) return MP4Net_ClientPTZControl((IntPtr)(Convert.ToInt32(hashtable_obj[lRealHandle].ToString())), (uint.Parse(hashtable_channel[lRealHandle].ToString())), 12, 1, 0, 0, 0); else return MP4Net_ClientPTZControl((IntPtr)(Convert.ToInt32(hashtable_obj[lRealHandle].ToString())), (uint.Parse(hashtable_channel[lRealHandle].ToString())), 12, 0, 0, 0, 0); case SDKPlugInData.PTZCode.FOCUS_IN: if (dwStop == 0) return MP4Net_ClientPTZControl((IntPtr)(Convert.ToInt32(hashtable_obj[lRealHandle].ToString())), (uint.Parse(hashtable_channel[lRealHandle].ToString())), 13, 1, 0, 0, 0); else return MP4Net_ClientPTZControl((IntPtr)(Convert.ToInt32(hashtable_obj[lRealHandle].ToString())), (uint.Parse(hashtable_channel[lRealHandle].ToString())), 13, 0, 0, 0, 0); case SDKPlugInData.PTZCode.FOCUS_OUT: if (dwStop == 0) return MP4Net_ClientPTZControl((IntPtr)(Convert.ToInt32(hashtable_obj[lRealHandle].ToString())), (uint.Parse(hashtable_channel[lRealHandle].ToString())), 14, 1, 0, 0, 0); else return MP4Net_ClientPTZControl((IntPtr)(Convert.ToInt32(hashtable_obj[lRealHandle].ToString())), (uint.Parse(hashtable_channel[lRealHandle].ToString())), 14, 0, 0, 0, 0); case SDKPlugInData.PTZCode.IRIS_ENLARGE: if (dwStop == 0) return MP4Net_ClientPTZControl((IntPtr)(Convert.ToInt32(hashtable_obj[lRealHandle].ToString())), (uint.Parse(hashtable_channel[lRealHandle].ToString())), 15, 1, 0, 0, 0); else return MP4Net_ClientPTZControl((IntPtr)(Convert.ToInt32(hashtable_obj[lRealHandle].ToString())), (uint.Parse(hashtable_channel[lRealHandle].ToString())), 15, 0, 0, 0, 0); case SDKPlugInData.PTZCode.IRIS_SHRINK: if (dwStop == 0) return MP4Net_ClientPTZControl((IntPtr)(Convert.ToInt32(hashtable_obj[lRealHandle].ToString())), (uint.Parse(hashtable_channel[lRealHandle].ToString())), 16, 1, 0, 0, 0); else return MP4Net_ClientPTZControl((IntPtr)(Convert.ToInt32(hashtable_obj[lRealHandle].ToString())), (uint.Parse(hashtable_channel[lRealHandle].ToString())), 16, 0, 0, 0, 0); case SDKPlugInData.PTZCode.TILT_UP: if (dwStop == 0) return MP4Net_ClientPTZControl((IntPtr)(Convert.ToInt32(hashtable_obj[lRealHandle].ToString())), (uint.Parse(hashtable_channel[lRealHandle].ToString())), 21, 1, 0, 0, 0); else return MP4Net_ClientPTZControl((IntPtr)(Convert.ToInt32(hashtable_obj[lRealHandle].ToString())), (uint.Parse(hashtable_channel[lRealHandle].ToString())), 21, 0, 0, 0, 0); case SDKPlugInData.PTZCode.TILT_DOWN: if (dwStop == 0) return MP4Net_ClientPTZControl((IntPtr)(Convert.ToInt32(hashtable_obj[lRealHandle].ToString())), (uint.Parse(hashtable_channel[lRealHandle].ToString())), 22, 1, 0, 0, 0); else return MP4Net_ClientPTZControl((IntPtr)(Convert.ToInt32(hashtable_obj[lRealHandle].ToString())), (uint.Parse(hashtable_channel[lRealHandle].ToString())), 22, 0, 0, 0, 0); case SDKPlugInData.PTZCode.PAN_LEFT: if (dwStop == 0) return MP4Net_ClientPTZControl((IntPtr)(Convert.ToInt32(hashtable_obj[lRealHandle].ToString())), (uint.Parse(hashtable_channel[lRealHandle].ToString())), 23, 1, 0, 0, 0); else return MP4Net_ClientPTZControl((IntPtr)(Convert.ToInt32(hashtable_obj[lRealHandle].ToString())), (uint.Parse(hashtable_channel[lRealHandle].ToString())), 23, 0, 0, 0, 0); case SDKPlugInData.PTZCode.PAN_RIGHT: if (dwStop == 0) return MP4Net_ClientPTZControl((IntPtr)(Convert.ToInt32(hashtable_obj[lRealHandle].ToString())), (uint.Parse(hashtable_channel[lRealHandle].ToString())), 24, 1, 0, 0, 0); else return MP4Net_ClientPTZControl((IntPtr)(Convert.ToInt32(hashtable_obj[lRealHandle].ToString())), (uint.Parse(hashtable_channel[lRealHandle].ToString())), 24, 0, 0, 0, 0); case SDKPlugInData.PTZCode.PAN_AUTO: if (dwStop == 0) return MP4Net_ClientPTZControl((IntPtr)(Convert.ToInt32(hashtable_obj[lRealHandle].ToString())), (uint.Parse(hashtable_channel[lRealHandle].ToString())), 29, 1, 0, 0, 0); else return MP4Net_ClientPTZControl((IntPtr)(Convert.ToInt32(hashtable_obj[lRealHandle].ToString())), (uint.Parse(hashtable_channel[lRealHandle].ToString())), 29, 0, 0, 0, 0); } return false; }
/// <summary> /// 功能:设置声卡工播放模式 /// </summary> /// <param name="dwMode">声卡模式.</param> /// <returns>返回值:TRUE 表示成功,FALSE 表示失败。</returns> public bool SetAudioMode(SDKPlugInData.AudioMode dwMode) { return true; }
/// <summary> /// 云台预置位操作 /// </summary> /// <param name="lRealHandle">RealPlay()的返回值</param> /// <param name="ptzpresetcode">云台预置命令(-1 - 删除预置点,0 - 转至预置点,1 - 设置预置点)</param> /// <param name="dwPreSetIndex">预置点的序号</param> /// <returns></returns> public bool PTZPreSet(int lRealHandle, SDKPlugInData.PTZPreSetCode ptzpresetcode, int dwPreSetIndex) { if (lRealHandle != -1) switch (ptzpresetcode) { case SDKPlugInData.PTZPreSetCode.DEL: return MP4Net_ClientPTZControl((IntPtr)(Convert.ToInt32(hashtable_obj[lRealHandle].ToString())), (uint.Parse(hashtable_channel[lRealHandle].ToString())), 41, dwPreSetIndex, 0, 0, 0); case SDKPlugInData.PTZPreSetCode.TRANSFER: return MP4Net_ClientPTZControl((IntPtr)(Convert.ToInt32(hashtable_obj[lRealHandle].ToString())), (uint.Parse(hashtable_channel[lRealHandle].ToString())), 42, dwPreSetIndex, 0, 0, 0); case SDKPlugInData.PTZPreSetCode.SET: return MP4Net_ClientPTZControl((IntPtr)(Convert.ToInt32(hashtable_obj[lRealHandle].ToString())), (uint.Parse(hashtable_channel[lRealHandle].ToString())), 40, dwPreSetIndex, 0, 0, 0); default: break; } return false; }
/// <summary> /// 注册用户到硬盘录像机上 /// </summary> /// <param name="DVRIp">硬盘录像机的IP 地址.</param> /// <param name="DVRPort">硬盘录像机的端口号.</param> /// <param name="username">登录的用户名.</param> /// <param name="password">用户密码.</param> /// <param name="lpinfo">指向DEVICEINFO 结构的指针.</param> /// <returns>-1 表示失败,其他值表示返回用户的ID 值,该ID 值是由SDK 分配,每个ID 值在客户端是唯一的。</returns> public int DeviceLogin(string DVRIp, ushort DVRPort, string username, string password, ref SDKPlugInData.DEVICEINFO lpinfo, string servername) { uint loginHandle=VSNET_ClientLogin(DVRIp, username, password, DVRPort); if (loginHandle != 0 && loginHandle != 0xffffffff) { LoginData loginData = new LoginData(); loginData.DeviceIP = DVRIp; loginData.DevicePort = DVRPort; loginData.UserName = username; loginData.Password = password; loginData.servername = servername; loginData.LoginHandle = loginHandle; loginData.LoginDataHandle = (int)loginHandle; if (!loginDataList.Contents(loginData)) { loginDataList.Add(loginData); //Console.WriteLine(string.Format("添加 {0} data{1} handle {2} ",DVRIp,loginData.LoginDataHandle,loginData.LoginHandle)); TraceDbg(string.Format("添加 {0} data{1} handle {2} ", DVRIp, loginData.LoginDataHandle, loginData.LoginHandle)); return loginData.LoginDataHandle; } else { ILoginData loginData1 = loginDataList.FindByDeviceIpAndPort(DVRIp, DVRPort); if (loginData1 != null) { loginData1.LoginHandle = loginHandle; //Console.WriteLine(string.Format("修改{0} data{1} handle {2} ", DVRIp, loginData1.LoginDataHandle, loginData1.LoginHandle)); TraceDbg(string.Format("修改{0} data{1} handle {2} ", DVRIp, loginData1.LoginDataHandle, loginData1.LoginHandle)); return loginData1.LoginDataHandle; } else { return -1; } } } else { return -1; } }
/// <summary> /// 进行SDK参数初始化 /// </summary> /// <param name="para">SDK初始化设置参数</param> /// <param name="callback"> 消息回调(接收硬盘录像机消息)</param> /// <returns>执行结果代码:0 - 成功,1 - 设置连接时间和连接次数失败,2 - 设置硬盘录像机消息失败,3-设置硬盘录像机消息回调函数失败,4-设置显示模式失败</returns> public int SDKParaInit(SDKPlugInData.DeviceInitparameter para, SDKPlugInData.AllCallBack callback) { allcallback = callback; if (MP4Net_ClientStartup((uint)para.UserMessageCode, para.DVRMessageHWnd)) { MP4Net_ClientSetNetPort(5050, 6050); MP4Net_ClientSetShowMode(0, 200); return 0; } return 1; }
/// <summary> /// 功能:云台控制,必须在启动预览之后调用 /// </summary> /// <param name="lRealPlayHandle">RealPlay()的返回值</param> /// <param name="code">云台控制命令</param> /// <param name="dwStop">让云台停止动作还是开始动作,0-开始,1-停</param> /// <param name="dwSpeed">云台控制的速度</param> /// <returns>返回值:TRUE 表示成功,FALSE 表示失败。</returns> public bool PTZControlWithSpeed(int lRealPlayHandle, SDKPlugInData.PTZCode code, int dwStop, int dwSpeed) { IRealHandleData realHandleData = realHandleDataList.FindByRealPlayHandle(lRealPlayHandle); if (realHandleData != null) { uint lRealHandle = realHandleData.RealHandle; dwStop = dwStop == 0 ? 1 : 0; switch (code) { case SDKPlugInData.PTZCode.LIGHT_PWRON: if (dwStop == 0) return VSNET_ClientPTZCtrl( lRealHandle, 3, dwStop); else return VSNET_ClientPTZCtrl( lRealHandle, 3, dwStop); case SDKPlugInData.PTZCode.WIPER_PWRON: if (dwStop == 0) return VSNET_ClientPTZCtrl( lRealHandle, 4, dwStop); else return VSNET_ClientPTZCtrl( lRealHandle, 4, dwStop); case SDKPlugInData.PTZCode.FAN_PWRON: if (dwStop == 0) return VSNET_ClientPTZCtrl( lRealHandle, 5, dwStop); else return VSNET_ClientPTZCtrl( lRealHandle, 5, dwStop); case SDKPlugInData.PTZCode.HEATER_PWRON: if (dwStop == 0) return VSNET_ClientPTZCtrl( lRealHandle, 6, dwStop); else return VSNET_ClientPTZCtrl( lRealHandle, 6, dwStop); case SDKPlugInData.PTZCode.AUX_PWRON: if (dwStop == 0) return VSNET_ClientPTZCtrl( lRealHandle, 7, dwStop); else return VSNET_ClientPTZCtrl( lRealHandle, 7, dwStop); case SDKPlugInData.PTZCode.ZOOM_IN: if (dwStop == 0) return VSNET_ClientPTZCtrl( lRealHandle, 9, dwStop); else return VSNET_ClientPTZCtrl( lRealHandle, 9, dwStop); case SDKPlugInData.PTZCode.ZOOM_OUT: if (dwStop == 0) return VSNET_ClientPTZCtrl( lRealHandle, 8, dwStop); else return VSNET_ClientPTZCtrl( lRealHandle, 8, dwStop); case SDKPlugInData.PTZCode.FOCUS_IN: if (dwStop == 0) return VSNET_ClientPTZCtrl( lRealHandle, 10, dwStop); else return VSNET_ClientPTZCtrl( lRealHandle, 10, dwStop); case SDKPlugInData.PTZCode.FOCUS_OUT: if (dwStop == 0) return VSNET_ClientPTZCtrl( lRealHandle, 11, dwStop); else return VSNET_ClientPTZCtrl( lRealHandle, 11, dwStop); case SDKPlugInData.PTZCode.IRIS_ENLARGE: if (dwStop == 0) return VSNET_ClientPTZCtrl( lRealHandle, 12, dwStop); else return VSNET_ClientPTZCtrl( lRealHandle, 12, dwStop); case SDKPlugInData.PTZCode.IRIS_SHRINK: if (dwStop == 0) return VSNET_ClientPTZCtrl( lRealHandle, 13, dwStop); else return VSNET_ClientPTZCtrl( lRealHandle, 13, dwStop); case SDKPlugInData.PTZCode.TILT_UP: if (dwStop == 0) return VSNET_ClientPTZCtrl( lRealHandle, 22, dwStop); else return VSNET_ClientPTZCtrl( lRealHandle, 22, dwSpeed); case SDKPlugInData.PTZCode.TILT_DOWN: if (dwStop == 0) return VSNET_ClientPTZCtrl( lRealHandle, 23, dwStop); else return VSNET_ClientPTZCtrl( lRealHandle, 23, dwSpeed); case SDKPlugInData.PTZCode.PAN_LEFT: if (dwStop == 0) return VSNET_ClientPTZCtrl( lRealHandle, 24, dwStop); else return VSNET_ClientPTZCtrl( lRealHandle, 24, dwSpeed); case SDKPlugInData.PTZCode.PAN_RIGHT: if (dwStop == 0) return VSNET_ClientPTZCtrl( lRealHandle, 25, dwStop); else return VSNET_ClientPTZCtrl( lRealHandle, 25, dwSpeed); case SDKPlugInData.PTZCode.PAN_AUTO: if (dwStop == 0) return VSNET_ClientPTZCtrl( lRealHandle, 18, dwStop); else return VSNET_ClientPTZCtrl( lRealHandle, 18, dwStop); } } return false; }
/// <summary> /// 注册用户到硬盘录像机上 /// </summary> /// <param name="DVRIp">硬盘录像机的IP 地址.</param> /// <param name="DVRPort">硬盘录像机的端口号.</param> /// <param name="username">登录的用户名.</param> /// <param name="password">用户密码.</param> /// <param name="lpinfo">指向DEVICEINFO 结构的指针.</param> /// <returns>-1 表示失败,其他值表示返回用户的ID 值,该ID 值是由SDK 分配,每个ID 值在客户端是唯一的。</returns> public int DeviceLogin(string DVRIp, ushort DVRPort, string username, string password, ref SDKPlugInData.DEVICEINFO lpinfo, string servername) { DataInSDK.ALARMPARAM alarmparam = new DataInSDK.ALARMPARAM(); alarmparam.m_benab = 1; alarmparam.m_alarmrec = new DataInSDK.ALARMRECORD[8]; VSNET_ClientSetAlarmRecord("wangluogaosuqiu", DVRIp, username, password,ref alarmparam, 3000); if (!hashtable_ip.Contains(DevideID)) hashtable_ip.Add(DevideID, DVRIp); if (!hashtable_port.Contains(DevideID)) hashtable_port.Add(DevideID, DVRPort); if (!hashtable_username.Contains(DevideID)) hashtable_username.Add(DevideID, username); if (!hashtable_password.Contains(DevideID)) hashtable_password.Add(DevideID, password); if (!hashtable_servername.Contains(DevideID)) hashtable_servername.Add(DevideID, servername); DevideID++; return DevideID-1; }