private void buttonSet_Click(object sender, EventArgs e) { //init m_struEventCardLinkageCfgV50 = new CHCNetSDK.NET_DVR_EVENT_CARD_LINKAGE_CFG_V50(); m_struEventCardLinkageCfgV50.Init(); m_struEventCardLinkageCond = new CHCNetSDK.NET_DVR_EVENT_CARD_LINKAGE_COND(); m_struEventCardLinkageCond.byRes = new byte[106]; //update UpdateUserData(); m_struEventCardLinkageCfgV50.byCapturePic = (byte)(checkBoxSnapshortLinkage.Checked ? 1 : 0); m_struEventCardLinkageCfgV50.byRecordVideo = (byte)(checkBoxRecordLinkage.Checked ? 1 : 0); uint.TryParse(textBoxEventNo.Text, out m_struEventCardLinkageCond.dwEventID); ushort.TryParse(textBoxLocalConID.Text, out m_struEventCardLinkageCond.wLocalControllerID); //allocate unmanaged resources uint dwSize = (uint)Marshal.SizeOf(m_struEventCardLinkageCond); m_struEventCardLinkageCond.dwSize = dwSize; IntPtr ptrStruCond = Marshal.AllocHGlobal((int)dwSize); Marshal.StructureToPtr(m_struEventCardLinkageCond, ptrStruCond, false); IntPtr ptrDwReturned = Marshal.AllocHGlobal(4); uint dwSizeCfg = (uint)Marshal.SizeOf(m_struEventCardLinkageCfgV50); m_struEventCardLinkageCfgV50.dwSize = dwSizeCfg; IntPtr ptrStruCfg = Marshal.AllocHGlobal((int)dwSize); Marshal.StructureToPtr(m_struEventCardLinkageCfgV50, ptrStruCfg, false); //connect to device if (!CHCNetSDK.NET_DVR_SetDeviceConfig(m_lUserID, CHCNetSDK.NET_DVR_SET_EVENT_CARD_LINKAGE_CFG_V50, 1, ptrStruCond, dwSize, ptrDwReturned, ptrStruCfg, dwSizeCfg)) { g_formList.AddLog(m_iDeviceIndex, AcsDemoPublic.OPERATION_FAIL_T, "NET_DVR_SET_EVENT_CARD_LINKAGE_CFG_V50 Failed"); MessageBox.Show("Set event card linkage cfg Failed"); } else { g_formList.AddLog(m_iDeviceIndex, AcsDemoPublic.OPERATION_SUCC_T, "NET_DVR_SET_EVENT_CARD_LINKAGE_CFG_V50 SUCC"); } Marshal.FreeHGlobal(ptrStruCond); Marshal.FreeHGlobal(ptrStruCfg); Marshal.FreeHGlobal(ptrDwReturned); }
private void buttonGet_Click(object sender, EventArgs e) { uint dwSize = (uint)Marshal.SizeOf(m_struEventCardLinkageCond); m_struEventCardLinkageCond.dwSize = dwSize; uint.TryParse(textBoxEventNo.Text, out m_struEventCardLinkageCond.dwEventID); ushort.TryParse(textBoxLocalConID.Text, out m_struEventCardLinkageCond.wLocalControllerID); IntPtr ptrStruCond = Marshal.AllocHGlobal((int)dwSize); Marshal.StructureToPtr(m_struEventCardLinkageCond, ptrStruCond, false); IntPtr ptrDwReturned = Marshal.AllocHGlobal(4); uint dwSizeCfg = (uint)Marshal.SizeOf(m_struEventCardLinkageCfgV50); m_struEventCardLinkageCfgV50.dwSize = dwSizeCfg; IntPtr ptrStruCfg = Marshal.AllocHGlobal((int)dwSize); Marshal.StructureToPtr(m_struEventCardLinkageCfgV50, ptrStruCfg, false); if (!CHCNetSDK.NET_DVR_GetDeviceConfig(m_lUserID, CHCNetSDK.NET_DVR_GET_EVENT_CARD_LINKAGE_CFG_V50, 1, ptrStruCond, dwSize, ptrDwReturned, ptrStruCfg, dwSizeCfg)) { g_formList.AddLog(m_iDeviceIndex, AcsDemoPublic.OPERATION_FAIL_T, "NET_DVR_GET_EVENT_CARD_LINKAGE_CFG_V50 Failed"); MessageBox.Show("Get event card linkage cfg failed"); } else { uint dwStatus = (uint)Marshal.ReadInt32(ptrDwReturned); if (dwStatus != CHCNetSDK.NET_DVR_NOERROR) { string strTemp = null; strTemp = string.Format("NET_DVR_GET_EVENT_CARD_LINKAGE_CFG_V50 Error Status{0}", dwStatus); MessageBox.Show(strTemp); Marshal.FreeHGlobal(ptrStruCond); Marshal.FreeHGlobal(ptrStruCfg); Marshal.FreeHGlobal(ptrDwReturned); return; } //get data from unmanaged memory m_struEventCardLinkageCfgV50 = (CHCNetSDK.NET_DVR_EVENT_CARD_LINKAGE_CFG_V50)Marshal.PtrToStructure(ptrStruCfg, typeof(CHCNetSDK.NET_DVR_EVENT_CARD_LINKAGE_CFG_V50)); g_formList.AddLog(m_iDeviceIndex, AcsDemoPublic.OPERATION_SUCC_T, "NET_DVR_GET_EVENT_CARD_LINKAGE_CFG_V50 SUCC"); if (m_struEventCardLinkageCfgV50.byProMode == 1) { m_byProMode = true; checkBoxCardNoLinkage.Checked = true; } if (m_struEventCardLinkageCfgV50.byProMode == 2) { m_byMacAddr = true; checkBoxMacAddressLinkage.Checked = true; } textBoxEventSourceID.Text = m_struEventCardLinkageCfgV50.dwEventSourceID.ToString(); checkBoxBuzzer.Checked = (m_struEventCardLinkageCfgV50.byMainDevBuzzer == 1) ? true : false; checkBoxSnapshortLinkage.Checked = (m_struEventCardLinkageCfgV50.byCapturePic == 1) ? true : false; checkBoxRecordLinkage.Checked = (m_struEventCardLinkageCfgV50.byRecordVideo == 1) ? true : false; if (m_byProMode) { textBoxCardNo.Text = string.Format("{0}", m_struEventCardLinkageCfgV50.uLinkageInfo.byCardNo); } if (m_byMacAddr) { textBoxMacAddress.Text = string.Format("{0:x2}:{0:x2}:{0:x2}:{0:x2}:{0:x2}:{0:x2}", m_struEventCardLinkageCfgV50.uLinkageInfo.byMACAddr[0], m_struEventCardLinkageCfgV50.uLinkageInfo.byMACAddr[1], m_struEventCardLinkageCfgV50.uLinkageInfo.byMACAddr[2], m_struEventCardLinkageCfgV50.uLinkageInfo.byMACAddr[3], m_struEventCardLinkageCfgV50.uLinkageInfo.byMACAddr[4], m_struEventCardLinkageCfgV50.uLinkageInfo.byMACAddr[5]); } if (m_byProMode == false && m_byMacAddr == false) { comboBoxMajorEventType.SelectedIndex = m_struEventCardLinkageCfgV50.uLinkageInfo.struEventLinkage.wMainEventType; int dwMainEventType = comboBoxMajorEventType.SelectedIndex; if (dwMainEventType == 0) { SubEventTypeDev(); } else if (dwMainEventType == 1) { SubEventTypeAlarm(); } else if (dwMainEventType == 2) { SubEventTypeDoor(); } else if (dwMainEventType == 3) { SubEventTypeCardReader(); } comboBoxMinorEventType.SelectedIndex = m_struEventCardLinkageCfgV50.uLinkageInfo.struEventLinkage.wSubEventType; } CreateChecklistBox(); } Marshal.FreeHGlobal(ptrStruCond); Marshal.FreeHGlobal(ptrStruCfg); Marshal.FreeHGlobal(ptrDwReturned); }