/// <summary> /// 启动长连接配置,设置卡参数 /// </summary> /// <param name="m_lUserID">NET_DVR_Login_V40等登录接口的返回值 </param> /// <returns>NET_DVR_StartRemoteConfig的返回值</returns> public static int StartRemoteConfig(int m_lUserID) { //准备参数:(int lUserID, uint dwCommand, IntPtr lpInBuffer, uint dwInBufferLen, RemoteConfigStateCALLBACK cbStateCallback, IntPtr pUserData); CHCNetSDK.NET_DVR_CARD_CFG_COND cardCfg = new CHCNetSDK.NET_DVR_CARD_CFG_COND(); cardCfg.dwSize = (uint)Marshal.SizeOf(cardCfg); cardCfg.dwCardNum = 1; cardCfg.byCheckCardNo = 1; cardCfg.wLocalControllerID = 0; CHCNetSDK.fRemoteConfigCallback setGatewayCardCallback = new CHCNetSDK.fRemoteConfigCallback(SetGatewayCardCallback);//回调函数 IntPtr ptr = Marshal.AllocHGlobal(Marshal.SizeOf(cardCfg)); int m_lSetCardCfgHandle = 0; try { Marshal.StructureToPtr(cardCfg, ptr, false); //IntPtr pUserData = Marshal.AllocHGlobal(Marshal.SizeOf(cardCfg)); m_lSetCardCfgHandle = CHCNetSDK.NET_DVR_StartRemoteConfig(m_lUserID, CHCNetSDK.NET_DVR_SET_CARD_CFG_V50, ptr, (uint)Marshal.SizeOf(cardCfg), setGatewayCardCallback, IntPtr.Zero); } catch (Exception) { throw; } finally { //Marshal.FreeHGlobal(ptr); } return(m_lSetCardCfgHandle); }
private bool SendCardInfoToDevice() { if (-1 != m_lSetCardCfgHandle) { if (CHCNetSDK.NET_DVR_StopRemoteConfig(m_lSetCardCfgHandle)) { m_lSetCardCfgHandle = -1; } } CHCNetSDK.NET_DVR_CARD_CFG_COND struCond = new CHCNetSDK.NET_DVR_CARD_CFG_COND(); struCond.dwSize = (uint)Marshal.SizeOf(struCond); struCond.dwCardNum = 1; int dwSize = Marshal.SizeOf(struCond); IntPtr ptrStruCond = Marshal.AllocHGlobal(dwSize); Marshal.StructureToPtr(struCond, ptrStruCond, false); g_fSetGatewayCardCallback = new CHCNetSDK.RemoteConfigCallback(ProcessSetGatewayCardCallback); m_lSetCardCfgHandle = CHCNetSDK.NET_DVR_StartRemoteConfig(m_lUserID, CHCNetSDK.NET_DVR_SET_CARD_CFG_V50, ptrStruCond, dwSize, g_fSetGatewayCardCallback, this.Handle); if (-1 == m_lSetCardCfgHandle) { g_formList.AddLog(m_lDeviceIndex, AcsDemoPublic.OPERATION_FAIL_T, "NET_DVR_SET_CARD_CFG_V50"); Marshal.FreeHGlobal(ptrStruCond); return(false); } else { g_formList.AddLog(m_lDeviceIndex, AcsDemoPublic.OPERATION_SUCC_T, "NET_DVR_SET_CARD_CFG_V50"); } Marshal.FreeHGlobal(ptrStruCond); return(SendCardData(m_struCardInfo)); }
private void buttonSendAll_Click(object sender, EventArgs e) { if (-1 != m_lSetCardCfgHandle) { if (CHCNetSDK.NET_DVR_StopRemoteConfig(m_lSetCardCfgHandle)) { m_lSetCardCfgHandle = -1; } } m_dwCardNum = (uint)listViewGataManage.Items.Count; if (listViewGataManage.Items.Count < 1) { MessageBox.Show("Please add some cards!"); return; } CHCNetSDK.NET_DVR_CARD_CFG_COND struCond = new CHCNetSDK.NET_DVR_CARD_CFG_COND(); struCond.dwSize = (uint)Marshal.SizeOf(struCond); struCond.dwCardNum = m_dwCardNum; ushort.TryParse(textBoxControllerNo.Text, out struCond.wLocalControllerID); if (checkBoxCheckNumber.Checked) { struCond.byCheckCardNo = 1; } else { struCond.byCheckCardNo = 0; } int dwSize = Marshal.SizeOf(struCond); IntPtr ptrStruCond = Marshal.AllocHGlobal(dwSize); Marshal.StructureToPtr(struCond, ptrStruCond, false); g_fSetGatewayCardCallback = new CHCNetSDK.RemoteConfigCallback(ProcessSetGatewayCardCallback); m_lSetCardCfgHandle = CHCNetSDK.NET_DVR_StartRemoteConfig(m_lUserID, CHCNetSDK.NET_DVR_SET_CARD_CFG_V50, ptrStruCond, dwSize, g_fSetGatewayCardCallback, this.Handle); if (-1 == m_lSetCardCfgHandle) { ListViewItem listItem = new ListViewItem(); listItem.Text = "FAIL"; string strTemp = string.Format("NET_DVR_SET_CARD_CFG_V50 FAIL, ERROR CODE {0}", CHCNetSDK.NET_DVR_GetLastError()); listItem.SubItems.Add(strTemp); this.AddList(listViewMessage, listItem); Marshal.FreeHGlobal(ptrStruCond); return; } else { ListViewItem listItem = new ListViewItem(); listItem.Text = "SUCC"; listItem.SubItems.Add("NET_DVR_SET_CARD_CFG_V50"); this.AddList(listViewMessage, listItem); } Marshal.FreeHGlobal(ptrStruCond); if (!SendFirstCard()) { CHCNetSDK.NET_DVR_StopRemoteConfig(m_lSetCardCfgHandle); m_lSetCardCfgHandle = -1; } }
/// <summary> /// 构造 卡参数配置条件结构体 /// </summary> /// <param name="cardNum"></param> /// <param name="byCheckCardNo">校验卡号</param> /// <returns></returns> private CHCNetSDK.NET_DVR_CARD_CFG_COND BuildCardCfgCondStruct(uint cardNum = 1, byte byCheckCardNo = 1) { CHCNetSDK.NET_DVR_CARD_CFG_COND struCardCfgCond = new CHCNetSDK.NET_DVR_CARD_CFG_COND(); struCardCfgCond.dwSize = (uint)Marshal.SizeOf(struCardCfgCond); struCardCfgCond.dwCardNum = cardNum; struCardCfgCond.byCheckCardNo = byCheckCardNo; struCardCfgCond.wLocalControllerID = 0; return(struCardCfgCond); }
private bool GetCardInfoFromDevice() { if (-1 != m_lGetCardCfgHandle) { if (CHCNetSDK.NET_DVR_StopRemoteConfig(m_lGetCardCfgHandle)) { m_lGetCardCfgHandle = -1; } } CHCNetSDK.NET_DVR_CARD_CFG_SEND_DATA struSendData = new CHCNetSDK.NET_DVR_CARD_CFG_SEND_DATA(); struSendData.dwSize = (uint)Marshal.SizeOf(struSendData); string strTemp = System.Text.Encoding.UTF8.GetString(m_struCardInfo.byCardNo); struSendData.byCardNo = System.Text.Encoding.UTF8.GetBytes(strTemp); CHCNetSDK.NET_DVR_CARD_CFG_COND struCond = new CHCNetSDK.NET_DVR_CARD_CFG_COND(); struCond.dwSize = (uint)Marshal.SizeOf(struCond); struCond.dwCardNum = 1; struCond.byCheckCardNo = 1; int dwSize = Marshal.SizeOf(struCond); IntPtr ptrStruCond = Marshal.AllocHGlobal(dwSize); Marshal.StructureToPtr(struCond, ptrStruCond, false); g_fGetGatewayCardCallback = new CHCNetSDK.RemoteConfigCallback(ProcessGetGatewayCardCallback); m_lGetCardCfgHandle = CHCNetSDK.NET_DVR_StartRemoteConfig(m_lUserID, CHCNetSDK.NET_DVR_GET_CARD_CFG_V50, ptrStruCond, dwSize, g_fGetGatewayCardCallback, this.Handle); if (-1 == m_lGetCardCfgHandle) { g_formList.AddLog(m_lDeviceIndex, AcsDemoPublic.OPERATION_FAIL_T, "NET_DVR_GET_CARD_CFG_V50"); Marshal.FreeHGlobal(ptrStruCond); return(false); } else { g_formList.AddLog(m_lDeviceIndex, AcsDemoPublic.OPERATION_SUCC_T, "NET_DVR_GET_CARD_CFG_V50"); uint dwSizeData = (uint)Marshal.SizeOf(struSendData); IntPtr ptrStruSendData = Marshal.AllocHGlobal((int)dwSizeData); Marshal.StructureToPtr(struSendData, ptrStruSendData, false); if (!CHCNetSDK.NET_DVR_SendRemoteConfig(m_lGetCardCfgHandle, 3, ptrStruSendData, dwSizeData)) { g_formList.AddLog(m_lDeviceIndex, AcsDemoPublic.OPERATION_FAIL_T, "NET_DVR_SendRemoteConfig ENUM_ACS_SEND_DATA FAIL"); return(false); } else { g_formList.AddLog(m_lDeviceIndex, AcsDemoPublic.OPERATION_SUCC_T, "NET_DVR_SendRemoteConfig ENUM_ACS_SEND_DATA SUCC"); } Marshal.FreeHGlobal(ptrStruSendData); } Marshal.FreeHGlobal(ptrStruCond); return(true); }
/// <summary> /// 下发卡号数据 /// </summary> /// <param name="deviceUserId">NET_DVR_Login_V40等登录接口的返回值</param> /// <param name="cbStateCallback"></param> /// <param name="pUserData"></param> /// <param name="cardNo"></param> /// <returns></returns> public int StartRemoteConfigForCardInsert( int deviceUserId, CHCNetSDK.RemoteConfigCallback cbStateCallback, IntPtr pUserData, Core.Domain.EntranceControl.UserInfo userInfo ) { int handle = -1; uint command = CHCNetSDK.NET_DVR_SET_CARD_CFG_V50; CHCNetSDK.NET_DVR_CARD_CFG_COND struCardCfgCond = BuildCardCfgCondStruct(); int struCardCfgCondSize = Marshal.SizeOf(struCardCfgCond); IntPtr ptrCardCfgCond = Marshal.AllocHGlobal(struCardCfgCondSize); Marshal.StructureToPtr(struCardCfgCond, ptrCardCfgCond, false); handle = CHCNetSDK.NET_DVR_StartRemoteConfig(deviceUserId, command, ptrCardCfgCond, (uint)struCardCfgCondSize, cbStateCallback, pUserData); Marshal.FreeHGlobal(ptrCardCfgCond); return(handle); }
private void buttonDeleteCard_Click(object sender, EventArgs e) { if (-1 != m_lSetCardCfgHandle) { if (CHCNetSDK.NET_DVR_StopRemoteConfig(m_lSetCardCfgHandle)) { m_lSetCardCfgHandle = -1; } } m_bSendOne = true; m_struSelSendCardCfg = GetSelItem(); if (0 == listViewGataManage.SelectedItems.Count) { MessageBox.Show("Select list item first"); return; } CHCNetSDK.NET_DVR_CARD_CFG_COND struCond = new CHCNetSDK.NET_DVR_CARD_CFG_COND(); struCond.dwSize = (uint)Marshal.SizeOf(struCond); struCond.dwCardNum = 1; if (checkBoxCheckNumber.Checked) { struCond.byCheckCardNo = 1; } else { struCond.byCheckCardNo = 0; } m_BSendSel = true; int dwSize = Marshal.SizeOf(struCond); IntPtr ptrStruCond = Marshal.AllocHGlobal(dwSize); Marshal.StructureToPtr(struCond, ptrStruCond, false); g_fSetGatewayCardCallback = new CHCNetSDK.RemoteConfigCallback(ProcessSetGatewayCardCallback); m_lSetCardCfgHandle = CHCNetSDK.NET_DVR_StartRemoteConfig(m_lUserID, CHCNetSDK.NET_DVR_SET_CARD_CFG_V50, ptrStruCond, dwSize, g_fSetGatewayCardCallback, this.Handle); if (-1 == m_lSetCardCfgHandle) { ListViewItem listItem = new ListViewItem(); listItem.Text = "FAIL"; string strTemp = string.Format("NET_DVR_SET_CARD_CFG_V50 FAIL, ERROR CODE {0}", CHCNetSDK.NET_DVR_GetLastError()); listItem.SubItems.Add(strTemp); this.AddList(listViewMessage, listItem); Marshal.FreeHGlobal(ptrStruCond); return; } else { ListViewItem listItem = new ListViewItem(); listItem.Text = "SUCC"; listItem.SubItems.Add("NET_DVR_SET_CARD_CFG_V50"); this.AddList(listViewMessage, listItem); } Marshal.FreeHGlobal(ptrStruCond); if (m_BSendSel) { m_dwCardNum = 1; m_dwSendIndex = 0; m_struSelSendCardCfg.byCardValid = 0; SendCardData(m_struSelSendCardCfg); m_BSendSel = false; m_struSelSendCardCfg = new CHCNetSDK.NET_DVR_CARD_CFG_V50(); return; } }
private void buttonObtainIndividual_Click(object sender, EventArgs e) { //just get only one,not one by one, so close link first if (-1 != m_lGetCardCfgHandle) { if (CHCNetSDK.NET_DVR_StopRemoteConfig(m_lGetCardCfgHandle)) { m_lGetCardCfgHandle = -1; } } CHCNetSDK.NET_DVR_CARD_CFG_SEND_DATA struSendData = new CHCNetSDK.NET_DVR_CARD_CFG_SEND_DATA(); struSendData.dwSize = (uint)Marshal.SizeOf(struSendData); if (m_iSelectIndex < 0) { MessageBox.Show("Select list item first"); return; } if (null == struSendData.byCardNo) { struSendData.byCardNo = GetSelItem().byCardNo; } else { string strTemp = System.Text.Encoding.UTF8.GetString(struSendData.byCardNo); GetSelItem(ref strTemp); struSendData.byCardNo = System.Text.Encoding.UTF8.GetBytes(strTemp); } CHCNetSDK.NET_DVR_CARD_CFG_COND struCond = new CHCNetSDK.NET_DVR_CARD_CFG_COND(); struCond.dwSize = (uint)Marshal.SizeOf(struCond); struCond.dwCardNum = 1; ushort.TryParse(textBoxControllerNo.Text, out struCond.wLocalControllerID); if (checkBoxCheckNumber.Checked) { struCond.byCheckCardNo = 1; } else { struCond.byCheckCardNo = 0; } int dwSize = Marshal.SizeOf(struCond); IntPtr ptrStruCond = Marshal.AllocHGlobal(dwSize); Marshal.StructureToPtr(struCond, ptrStruCond, false); g_fGetGatewayCardCallback = new CHCNetSDK.RemoteConfigCallback(ProcessGetGatewayCardCallback); m_lGetCardCfgHandle = CHCNetSDK.NET_DVR_StartRemoteConfig(m_lUserID, CHCNetSDK.NET_DVR_GET_CARD_CFG_V50, ptrStruCond, dwSize, g_fGetGatewayCardCallback, this.Handle); if (-1 == m_lGetCardCfgHandle) { ListViewItem listItem = new ListViewItem(); listItem.Text = "FAIL"; string strTemp = string.Format("NET_DVR_GET_CARD_CFG_V50 FAIL, ERROR CODE {0}", CHCNetSDK.NET_DVR_GetLastError()); listItem.SubItems.Add(strTemp); this.AddList(listViewMessage, listItem); Marshal.FreeHGlobal(ptrStruCond); return; } else { ListViewItem listItem = new ListViewItem(); listItem.Text = "SUCC"; listItem.SubItems.Add("NET_DVR_GET_CARD_CFG_V50"); this.AddList(listViewMessage, listItem); uint dwSizeData = (uint)Marshal.SizeOf(struSendData); IntPtr ptrStruSendData = Marshal.AllocHGlobal((int)dwSizeData); Marshal.StructureToPtr(struSendData, ptrStruSendData, false); if (!CHCNetSDK.NET_DVR_SendRemoteConfig(m_lGetCardCfgHandle, 3, ptrStruSendData, dwSizeData)) { ListViewItem listItem2 = new ListViewItem(); listItem2.Text = "FAIL"; string strTemp = string.Format("NET_DVR_SendRemoteConfig ENUM_ACS_SEND_DATA FAIL, ERROR CODE {0}", CHCNetSDK.NET_DVR_GetLastError()); listItem2.SubItems.Add(strTemp); this.AddList(listViewMessage, listItem2); } else { ListViewItem listItem2 = new ListViewItem(); listItem2.Text = "SUCC"; listItem2.SubItems.Add("NET_DVR_SendRemoteConfig ENUM_ACS_SEND_DATA"); this.AddList(listViewMessage, listItem2); } Marshal.FreeHGlobal(ptrStruSendData); } Marshal.FreeHGlobal(ptrStruCond); }