/// <summary> /// 构造 获取卡参数的发送数据 /// </summary> /// <param name="cardNo"></param> /// <returns></returns> private CHCNetSDK.NET_DVR_CARD_CFG_SEND_DATA BuildCardCfgSendData(string cardNo = "1") { CHCNetSDK.NET_DVR_CARD_CFG_SEND_DATA struCardCfgSendData = new CHCNetSDK.NET_DVR_CARD_CFG_SEND_DATA(); struCardCfgSendData.dwSize = (uint)Marshal.SizeOf(struCardCfgSendData); struCardCfgSendData.byCardNo = new byte[CHCNetSDK.ACS_CARD_NO_LEN]; byte[] bCardNo = System.Text.Encoding.GetEncoding(PreSettings.charset).GetBytes(cardNo); bCardNo.CopyTo(struCardCfgSendData.byCardNo, 0); return(struCardCfgSendData); }
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="hndStartRemoteConfig"></param> /// <param name="cardNo">卡号</param> /// <returns>TRUE表示成功,FALSE表示失败</returns> public bool SendRemoteConfigForCardQuery( int hndStartRemoteConfig, string cardNo) { bool ret = false; uint dataType = (uint)CHCNetSDK.LONG_CFG_SEND_DATA_TYPE_ENUM.ENUM_ACS_SEND_DATA; //构建“获取卡参数的发送数据”结构体 并转化为指针 CHCNetSDK.NET_DVR_CARD_CFG_SEND_DATA struCardCfgSendData = BuildCardCfgSendData(cardNo); int struCardCfgSendDataSize = Marshal.SizeOf(struCardCfgSendData); IntPtr ptrCardCfgSendData = Marshal.AllocHGlobal(struCardCfgSendDataSize); Marshal.StructureToPtr(struCardCfgSendData, ptrCardCfgSendData, false); ret = CHCNetSDK.NET_DVR_SendRemoteConfig(hndStartRemoteConfig, dataType, ptrCardCfgSendData, (uint)struCardCfgSendDataSize); Marshal.FreeHGlobal(ptrCardCfgSendData); return(ret); }
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); }