private void buttonCardInfoAdd_Click(object sender, EventArgs e) { CardAdd cardAdd = new CardAdd(); if (cardAdd.ShowDialog() == DialogResult.OK) { this.listViewUserAddCardInfo.BeginUpdate(); ListViewItem lvi = new ListViewItem(); lvi.Text = cardAdd.cardInformations.cardSerialNumber; lvi.SubItems.Add(cardAdd.cardInformations.cardNumber); lvi.SubItems.Add(cardAdd.cardInformations.cardType); lvi.SubItems.Add(cardAdd.cardInformations.cardValidityPeriod); this.listViewUserAddCardInfo.Items.Add(lvi); this.listViewUserAddCardInfo.EndUpdate(); m_struCardInfo = cardAdd.GetCurCardInfo(); for (int i = 0; i < iMaxCardNum; i++) { m_userInfo.cards[i].cardNumber = cardAdd.cardInformations.cardNumber; m_userInfo.cards[i].cardPassword = cardAdd.cardInformations.cardPassword; m_userInfo.cards[i].cardSerialNumber = cardAdd.cardInformations.cardSerialNumber; m_userInfo.cards[i].cardType = cardAdd.cardInformations.cardType; m_userInfo.cards[i].cardValidityPeriod = cardAdd.cardInformations.cardValidityPeriod; } m_bIsEmpty = false; } }
/// <summary> /// 处理卡查询回调的函数 /// </summary> /// <param name="type">状态</param> /// <param name="buffer">存放数据的缓冲区指针,获取音量时dwType状态无效,lpBuffer对应4字节声音强度</param> /// <param name="bufferLength">缓冲区大小</param> /// <param name="pUserData">用户数据</param> private void ProcessCardQueryCallback(uint type, IntPtr pBuffer, uint bufferLength, IntPtr pUserData) { if (pUserData == null) { return; } switch (type) { case (uint)CHCNetSDK.NET_SDK_CALLBACK_TYPE.NET_SDK_CALLBACK_TYPE_DATA: CHCNetSDK.NET_DVR_CARD_CFG_V50 struCardCfg = new CHCNetSDK.NET_DVR_CARD_CFG_V50(); struCardCfg.Init(); struCardCfg = (CHCNetSDK.NET_DVR_CARD_CFG_V50)Marshal.PtrToStructure(pBuffer, typeof(CHCNetSDK.NET_DVR_CARD_CFG_V50)); struCardInfo = struCardCfg; break; case (uint)CHCNetSDK.NET_SDK_CALLBACK_TYPE.NET_SDK_CALLBACK_TYPE_STATUS: uint status = (uint)Marshal.ReadInt32(pBuffer); if (status == (uint)CHCNetSDK.NET_SDK_CALLBACK_STATUS_NORMAL.NET_SDK_CALLBACK_STATUS_SUCCESS) { bGetCardCfgFinish = true; } else if (status == (uint)CHCNetSDK.NET_SDK_CALLBACK_STATUS_NORMAL.NET_SDK_CALLBACK_STATUS_FAILED) { } break; default: break; } }
public void SetCurCardInfo(ref CHCNetSDK.NET_DVR_CARD_CFG_V50 cardInfo, ref CHCNetSDK.NET_DVR_FINGER_PRINT_CFG fingerprintInfo, ref UserInfo userInfo) { m_struCardInfo = cardInfo; m_struFingerPrintOne = fingerprintInfo; m_userInfo = userInfo; bSetDataByInvoker = true; }
public CHCNetSDK.NET_DVR_CARD_CFG_V50 GetCurCardInfo() { CHCNetSDK.NET_DVR_CARD_CFG_V50 struCardCfg = new CHCNetSDK.NET_DVR_CARD_CFG_V50(); struCardCfg.Init(); //see the NET_DVR_CARD_CFG_V50 definition struCardCfg.dwModifyParamType = 0x00000087; struCardCfg.byCardValid = 1; struCardCfg.byCardType = (byte)comboBoxCardAddCardType.SelectedIndex; struCardCfg.struValid.byEnable = 1; struCardCfg.struValid.struBeginTime.wYear = (ushort)dateTimePickerStart.Value.Year; struCardCfg.struValid.struBeginTime.byMonth = (byte)dateTimePickerStart.Value.Month; struCardCfg.struValid.struBeginTime.byDay = (byte)dateTimePickerStart.Value.Day; struCardCfg.struValid.struBeginTime.byHour = (byte)dateTimePickerStart.Value.Hour; struCardCfg.struValid.struBeginTime.bySecond = (byte)dateTimePickerStart.Value.Second; struCardCfg.struValid.struEndTime.wYear = (ushort)dateTimePickerEnd.Value.Year; struCardCfg.struValid.struEndTime.byMonth = (byte)dateTimePickerEnd.Value.Month; struCardCfg.struValid.struEndTime.byDay = (byte)dateTimePickerEnd.Value.Day; struCardCfg.struValid.struEndTime.byHour = (byte)dateTimePickerEnd.Value.Hour; struCardCfg.struValid.struEndTime.byMinute = (byte)dateTimePickerEnd.Value.Minute; struCardCfg.struValid.struEndTime.bySecond = (byte)dateTimePickerEnd.Value.Second; byte[] sCardNo = System.Text.Encoding.Default.GetBytes(textBoxCardAddCardNo.Text); sCardNo.CopyTo(struCardCfg.byCardNo, 0); byte[] sCardPassword = System.Text.Encoding.Default.GetBytes(textBoxCardAddPassword.Text); sCardPassword.CopyTo(struCardCfg.byCardPassword, 0); return(struCardCfg); }
private void buttonCardInfoModify_Click(object sender, EventArgs e) { if (listViewUserAddCardInfo.SelectedItems.Count == 0) { return; } CardModify cardModify = new CardModify(); cardModify.SetCardCfg(ref m_struCardInfo); if (cardModify.ShowDialog() == DialogResult.OK) { this.listViewUserAddCardInfo.BeginUpdate(); listViewUserAddCardInfo.SelectedItems[0].SubItems[1].Text = cardModify.cardInformations.cardNumber; listViewUserAddCardInfo.SelectedItems[0].SubItems[2].Text = cardModify.cardInformations.cardType; listViewUserAddCardInfo.SelectedItems[0].SubItems[3].Text = cardModify.cardInformations.cardValidityPeriod; this.listViewUserAddCardInfo.EndUpdate(); m_struCardInfo = cardModify.GetCardCfg(); } }
/// <summary> /// 构造 "卡参数配置结构体"(下发卡数据用) /// </summary> /// <param name="userInfo"></param> /// <returns></returns> private CHCNetSDK.NET_DVR_CARD_CFG_V50 BuildCardCfgStruct(Core.Domain.EntranceControl.UserInfo userInfo) { CHCNetSDK.NET_DVR_CARD_CFG_V50 struCardCfg = new CHCNetSDK.NET_DVR_CARD_CFG_V50(); struCardCfg.Init(); struCardCfg.dwSize = (uint)Marshal.SizeOf(struCardCfg); struCardCfg.dwModifyParamType = 0x00001D8D; byte[] bCardNo = System.Text.Encoding.GetEncoding(PreSettings.charset).GetBytes(userInfo.CardNo); bCardNo.CopyTo(struCardCfg.byCardNo, 0); struCardCfg.byCardValid = userInfo.CardValid; struCardCfg.byCardType = (byte)userInfo.CardType; struCardCfg.byLeaderCard = userInfo.IsLeaderCard; struCardCfg.byDoorRight[0] = userInfo.DoorRight[0]; struCardCfg.wCardRightPlan[0] = 1; byte[] bName = System.Text.Encoding.GetEncoding(PreSettings.charset).GetBytes(userInfo.Name); bName.CopyTo(struCardCfg.byName, 0); struCardCfg.dwEmployeeNo = userInfo.EmployeeNo; struCardCfg.wDepartmentNo = userInfo.DepartmentNo; byte[] bCardPassword = System.Text.Encoding.GetEncoding(PreSettings.charset).GetBytes(userInfo.CardPassword); bCardPassword.CopyTo(struCardCfg.byCardPassword, 0); struCardCfg.dwMaxSwipeTime = userInfo.MaxSwipeTime; struCardCfg.dwSwipeTime = userInfo.SwipeTime; struCardCfg.struValid.byEnable = 0; return(struCardCfg); }
private void ProcessGetGatewayCardCallback(uint dwType, IntPtr lpBuffer, uint dwBufLen, IntPtr pUserData) { if (pUserData == null) { return; } if (dwType == (uint)CHCNetSDK.NET_SDK_CALLBACK_TYPE.NET_SDK_CALLBACK_TYPE_DATA) { CHCNetSDK.NET_DVR_CARD_CFG_V50 struCardCfg = new CHCNetSDK.NET_DVR_CARD_CFG_V50(); struCardCfg = (CHCNetSDK.NET_DVR_CARD_CFG_V50)Marshal.PtrToStructure(lpBuffer, typeof(CHCNetSDK.NET_DVR_CARD_CFG_V50)); string strCardNo = System.Text.Encoding.UTF8.GetString(struCardCfg.byCardNo); AddToCardList(struCardCfg, strCardNo); } else if (dwType == (uint)CHCNetSDK.NET_SDK_CALLBACK_TYPE.NET_SDK_CALLBACK_TYPE_STATUS) { uint dwStatus = (uint)Marshal.ReadInt32(lpBuffer); if (dwStatus == (uint)CHCNetSDK.NET_SDK_CALLBACK_STATUS_NORMAL.NET_SDK_CALLBACK_STATUS_SUCCESS) { ListViewItem listItem = new ListViewItem(); listItem.Text = "SUCC"; listItem.SubItems.Add("NET_DVR_GET_CARD_CFG_V50 Get finish"); this.AddList(listViewMessage, listItem); } else if (dwStatus == (uint)CHCNetSDK.NET_SDK_CALLBACK_STATUS_NORMAL.NET_SDK_CALLBACK_STATUS_FAILED) { uint dwErrorCode = (uint)Marshal.ReadInt32(lpBuffer + 1); string cardNumber = Marshal.PtrToStringAnsi(lpBuffer + 2); ListViewItem listItem = new ListViewItem(); listItem.Text = "FAIL"; listItem.SubItems.Add(string.Format("NET_DVR_GET_CARD_CFG_V50 Get Failed,ErrorCode:{0},CardNo:{1}", dwErrorCode, cardNumber)); this.AddList(listViewMessage, listItem); } } }
private void ProcessGetGatewayCardCallback(uint dwType, IntPtr lpBuffer, uint dwBufLen, IntPtr pUserData) { if (pUserData == null) { return; } if (dwType == (uint)CHCNetSDK.NET_SDK_CALLBACK_TYPE.NET_SDK_CALLBACK_TYPE_DATA) { CHCNetSDK.NET_DVR_CARD_CFG_V50 struCardCfg = new CHCNetSDK.NET_DVR_CARD_CFG_V50(); struCardCfg = (CHCNetSDK.NET_DVR_CARD_CFG_V50)Marshal.PtrToStructure(lpBuffer, typeof(CHCNetSDK.NET_DVR_CARD_CFG_V50)); m_struCardInfo = struCardCfg; SetDataToUI(); } else if (dwType == (uint)CHCNetSDK.NET_SDK_CALLBACK_TYPE.NET_SDK_CALLBACK_TYPE_STATUS) { uint dwStatus = (uint)Marshal.ReadInt32(lpBuffer); if (dwStatus == (uint)CHCNetSDK.NET_SDK_CALLBACK_STATUS_NORMAL.NET_SDK_CALLBACK_STATUS_SUCCESS) { g_formList.AddLog(m_lDeviceIndex, AcsDemoPublic.OPERATION_SUCC_T, "NET_DVR_GET_CARD_CFG_V50 Get finish"); } else if (dwStatus == (uint)CHCNetSDK.NET_SDK_CALLBACK_STATUS_NORMAL.NET_SDK_CALLBACK_STATUS_FAILED) { g_formList.AddLog(m_lDeviceIndex, AcsDemoPublic.OPERATION_FAIL_T, "NET_DVR_GET_CARD_CFG_V50 Get FAILED"); } } }
private void listViewGataManage_ItemSelectionChanged(object sender, ListViewItemSelectionChangedEventArgs e) { m_iSelectIndex = e.ItemIndex; if (e.ItemIndex < 0) { return; } CHCNetSDK.NET_DVR_CARD_CFG_V50 strCardCfg = m_struCardInfo[e.ItemIndex]; UpdateSubList(strCardCfg); }
private void UpdateSubList(CHCNetSDK.NET_DVR_CARD_CFG_V50 struCardCfg) { listViewDoorAuthority.Items.Clear(); listViewGroup.Items.Clear(); listViewPlaTemplateNumber.Items.Clear(); string strTemp1 = null; string strTemp2 = null; string strTemp3 = null; for (int i = 0; i < CHCNetSDK.MAX_DOOR_NUM_256; i++) { strTemp1 = string.Format("{0}", i + 1); ListViewItem listItem = new ListViewItem(); listItem.Text = strTemp1; if (struCardCfg.byDoorRight[i] > 0) { listItem.SubItems.Add("Yes"); } else { listItem.SubItems.Add("No"); } listViewDoorAuthority.Items.Add(listItem); } for (int i = 0; i < CHCNetSDK.MAX_GROUP_NUM_128; i++) { strTemp1 = string.Format("{0}", i + 1); ListViewItem listItem = new ListViewItem(); listItem.Text = strTemp1; if (struCardCfg.byBelongGroup[i] > 0) { listItem.SubItems.Add("Yes"); } else { listItem.SubItems.Add("No"); } listViewGroup.Items.Add(listItem); } for (int i = 0; i < CHCNetSDK.MAX_DOOR_NUM_256; i++) { for (int j = 0; j < CHCNetSDK.MAX_CARD_RIGHT_PLAN_NUM; j++) { strTemp1 = string.Format("{0}", i + 1); strTemp2 = string.Format("{0}", j + 1); strTemp3 = string.Format("{0}", struCardCfg.wCardRightPlan[i * CHCNetSDK.MAX_CARD_RIGHT_PLAN_NUM + j]); ListViewItem listItem = new ListViewItem(); listItem.Text = strTemp1; listItem.SubItems.Add(strTemp2); listItem.SubItems.Add(strTemp3); listViewPlaTemplateNumber.Items.Add(listItem); } } }
private void AddToCardList(CHCNetSDK.NET_DVR_CARD_CFG_V50 struCardInfo, string strCardNo) { int iItemIndex = GetExistItem(struCardInfo); if (-1 == iItemIndex) { iItemIndex = listViewGataManage.Items.Count; } UpdateList(iItemIndex, strCardNo, struCardInfo); m_struCardInfo[iItemIndex] = struCardInfo; }
private void btnDelSingleCard_Click(object sender, EventArgs e) { CHCNetSDK.NET_DVR_CARD_CFG_V50 DelSingleCard = new CHCNetSDK.NET_DVR_CARD_CFG_V50(); DelSingleCard = GetSelItem(); DelSingleCard.byCardValid = 0; DelSingleCard.dwSize = (uint)Marshal.SizeOf(DelSingleCard); int dwSize = (int)DelSingleCard.dwSize; IntPtr PtrDelSingleCard = Marshal.AllocHGlobal(dwSize); Marshal.StructureToPtr(DelSingleCard, PtrDelSingleCard, true); }
private void ProcessGetGatewayCardCallback(uint dwType, IntPtr lpBuffer, uint dwBufLen, IntPtr pUserData) { if (pUserData == null) { return; } if (dwType == (uint)CHCNetSDK.NET_SDK_CALLBACK_TYPE.NET_SDK_CALLBACK_TYPE_DATA) { CHCNetSDK.NET_DVR_CARD_CFG_V50 struCardCfg = new CHCNetSDK.NET_DVR_CARD_CFG_V50(); struCardCfg = (CHCNetSDK.NET_DVR_CARD_CFG_V50)Marshal.PtrToStructure(lpBuffer, typeof(CHCNetSDK.NET_DVR_CARD_CFG_V50)); string strCardNo = System.Text.Encoding.UTF8.GetString(struCardCfg.byCardNo); IntPtr pCardInfo = Marshal.AllocHGlobal(Marshal.SizeOf(struCardCfg)); Marshal.StructureToPtr(struCardCfg, pCardInfo, true); CHCNetSDK.PostMessage(pUserData, 1003, (Int64)pCardInfo, 0); //AddToCardList(struCardCfg, strCardNo); } else if (dwType == (uint)CHCNetSDK.NET_SDK_CALLBACK_TYPE.NET_SDK_CALLBACK_TYPE_STATUS) { uint dwStatus = (uint)Marshal.ReadInt32(lpBuffer); if (dwStatus == (uint)CHCNetSDK.NET_SDK_CALLBACK_STATUS_NORMAL.NET_SDK_CALLBACK_STATUS_SUCCESS) { ListViewItem listItem = new ListViewItem(); listItem.Text = "SUCC"; listItem.SubItems.Add("NET_DVR_GET_CARD_CFG_V50 Get finish"); this.AddList(listViewMessage, listItem, true); CHCNetSDK.PostMessage(pUserData, 1002, 0, 0); } else if (dwStatus == (uint)CHCNetSDK.NET_SDK_CALLBACK_STATUS_NORMAL.NET_SDK_CALLBACK_STATUS_FAILED) { byte[] bRawData = new byte[40]; //4字节状态 + 4字节错误码 + 32字节卡号 Marshal.Copy(lpBuffer, bRawData, 0, 40); //将非托管内存指针数据复制到数组中 byte[] errorb = new byte[4]; //4字节错误码 Array.Copy(bRawData, 4, errorb, 0, 4); int errorCode = BitConverter.ToInt32(errorb, 0); byte[] byCardNo = new byte[32];//32字节卡号 Array.Copy(bRawData, 8, byCardNo, 0, 32); string strCardNo = Encoding.ASCII.GetString(byCardNo).TrimEnd('\0'); ListViewItem listItem = new ListViewItem(); listItem.Text = "FAIL"; listItem.SubItems.Add(string.Format("NET_DVR_GET_CARD_CFG_V50 Get Failed,ErrorCode:{0},CardNo:{1}", errorCode, byCardNo)); this.AddList(listViewMessage, listItem, true); CHCNetSDK.PostMessage(pUserData, 1002, 0, 0); } } return; }
private CHCNetSDK.NET_DVR_CARD_CFG_V50 GetSelItem(ref string strCardNo) { int iPos = m_iSelectIndex; CHCNetSDK.NET_DVR_CARD_CFG_V50 struCardInfo = new CHCNetSDK.NET_DVR_CARD_CFG_V50(); if (iPos < 0) { return(struCardInfo); } if (null != strCardNo) { strCardNo = listViewGataManage.Items[iPos].SubItems[1].Text; } return(m_struCardInfo[iPos]); }
private CHCNetSDK.NET_DVR_CARD_CFG_V50 GetSelItem() { int iPos = -1; if (m_iSelectIndex >= 0) { iPos = m_iSelectIndex; } CHCNetSDK.NET_DVR_CARD_CFG_V50 struCardInfo = new CHCNetSDK.NET_DVR_CARD_CFG_V50(); if (iPos < 0) { return(struCardInfo); } return(m_struCardInfo[iPos]); }
private void CreateSameCfgCard(uint dwNum, CHCNetSDK.NET_DVR_CARD_CFG_V50 struCardCfg) { int iListCount = listViewGataManage.Items.Count; //2019/06/27 Murphy Zhang Start uint tempNum = (uint)iListCount + 1; //2019/06/27 Murphy Zhang End for (int i = iListCount; i < iListCount + dwNum; i++) { m_struCardInfo[i] = struCardCfg; m_struCardInfo[i].byCardNo = new byte[CHCNetSDK.ACS_CARD_NO_LEN]; string strTemp = (i - iListCount).ToString(); byte[] byTempNo = System.Text.Encoding.UTF8.GetBytes(strTemp); int iIndex = 0; for (int k = 0; k < struCardCfg.byCardNo.Length; k++) { if (0 == struCardCfg.byCardNo[k]) { break; } else { m_struCardInfo[i].byCardNo[iIndex] = struCardCfg.byCardNo[k]; iIndex++; } if (iIndex >= m_struCardInfo[i].byCardNo.Length) { return; } } if (dwNum != 1) { //2019/06/27 Murphy Zhang Start m_struCardInfo[i].dwEmployeeNo = m_struCardInfo[i].dwEmployeeNo + tempNum; tempNum++; //2019/06/27 Murphy Zhang End for (int k = 0; k < byTempNo.Length; k++) { m_struCardInfo[i].byCardNo[iIndex] = byTempNo[k]; iIndex++; if (iIndex >= m_struCardInfo[i].byCardNo.Length) { return; } } } } }
private void buttonCardInfoDelete_Click(object sender, EventArgs e) { if (m_bIsEmpty) { return; } //deleteSingleCard(); //delete fingerprint listViewUserAddCardInfo.Items.RemoveAt(listViewUserAddCardInfo.SelectedItems[0].Index); m_struCardInfo = new CHCNetSDK.NET_DVR_CARD_CFG_V50(); m_struCardInfo.Init(); m_bIsEmpty = true; return; }
private void buttonBatchAdd_Click(object sender, EventArgs e) { string strCardNo = null; CardConfigure batchAdd = new CardConfigure(); CHCNetSDK.NET_DVR_CARD_CFG_V50 struCardCfg = new CHCNetSDK.NET_DVR_CARD_CFG_V50(); batchAdd.SetCardCfg(ref struCardCfg); if (batchAdd.ShowDialog() == DialogResult.OK) { struCardCfg = batchAdd.GetCardCfg(strCardNo); m_dwCardNum = (uint)batchAdd.GetAddNum(); CreateSameCfgCard(m_dwCardNum, struCardCfg); m_pDisplayListThread = new Thread(new ThreadStart(g_fShowCardListThread)); m_pDisplayListThread.Start(); } }
private void SendCardData(CHCNetSDK.NET_DVR_CARD_CFG_V50 struCardCfg, uint dwDiffTime = 0) { if (-1 == m_lSetCardCfgHandle) { return; } uint dwSize = (uint)Marshal.SizeOf(struCardCfg); IntPtr ptrStruCard = Marshal.AllocHGlobal((int)dwSize); Marshal.StructureToPtr(struCardCfg, ptrStruCard, false); if (!CHCNetSDK.NET_DVR_SendRemoteConfig(m_lSetCardCfgHandle, 3, ptrStruCard, dwSize)) { Marshal.FreeHGlobal(ptrStruCard); return; } Marshal.FreeHGlobal(ptrStruCard); return; }
private int GetExistItem(CHCNetSDK.NET_DVR_CARD_CFG_V50 struCardCfg) { int iItemCount = listViewGataManage.Items.Count; CHCNetSDK.NET_DVR_CARD_CFG_V50?struTemp = struCardCfg; for (int i = 0; i < iItemCount; i++) { if (null == struTemp) { continue; } if (System.Text.Encoding.UTF8.GetString(struCardCfg.byCardNo) == this.GetListText(listViewGataManage, i, 1)) { return(i); } } return(-1); }
/// <summary> /// 发送"卡数据"长连接数据 /// </summary> /// <param name="hndStartRemoteConfig"></param> /// <param name="userInfo">卡号数据</param> /// <returns>TRUE表示成功,FALSE表示失败</returns> public bool SendRemoteConfigForCardInsert( int hndStartRemoteConfig, Core.Domain.EntranceControl.UserInfo userInfo) { bool ret = false; uint dataType = (uint)CHCNetSDK.LONG_CFG_SEND_DATA_TYPE_ENUM.ENUM_ACS_SEND_DATA; //构建“卡参数配置结构体”结构体 并转化为指针 CHCNetSDK.NET_DVR_CARD_CFG_V50 struCardCfg = BuildCardCfgStruct(userInfo); int struCardCfgSize = Marshal.SizeOf(struCardCfg); IntPtr ptrCardCfg = Marshal.AllocHGlobal(struCardCfgSize); Marshal.StructureToPtr(struCardCfg, ptrCardCfg, false); ret = CHCNetSDK.NET_DVR_SendRemoteConfig(hndStartRemoteConfig, dataType, ptrCardCfg, (uint)struCardCfgSize); Marshal.FreeHGlobal(ptrCardCfg); return(ret); }
private bool SendNextCard() { if (-1 == m_lSetCardCfgHandle) { return(false); } m_dwSendIndex++; if (m_dwSendIndex >= m_dwCardNum) { //CHCNetSDK.NET_DVR_StopRemoteConfig(m_lSetCardCfgHandle); //this.StopRemoteCfg(ref m_lSetCardCfgHandle); //m_lSetCardCfgHandle = -1; ListViewItem listItem2 = new ListViewItem(); listItem2.Text = "SUCC"; string strTemp2 = null; strTemp2 = string.Format("Send {0} card(s) success", m_dwCardNum); listItem2.SubItems.Add(strTemp2); this.AddList(listViewMessage, listItem2); return(true); } m_struNowSendCard = m_struCardInfo[m_dwSendIndex]; uint dwSize = (uint)Marshal.SizeOf(m_struNowSendCard); IntPtr ptrSendCard = Marshal.AllocHGlobal((int)dwSize); Marshal.StructureToPtr(m_struNowSendCard, ptrSendCard, false); if (!CHCNetSDK.NET_DVR_SendRemoteConfig(m_lSetCardCfgHandle, 3, ptrSendCard, dwSize)) { Marshal.FreeHGlobal(ptrSendCard); ListViewItem listItem3 = new ListViewItem(); listItem3.Text = "FAIL"; string strTemp3 = null; strTemp3 = string.Format("Send Fail,CardNO:{0}", System.Text.Encoding.UTF8.GetString(m_struNowSendCard.byCardNo).TrimEnd('\0')); listItem3.SubItems.Add(strTemp3); this.AddList(listViewMessage, listItem3); //CHCNetSDK.NET_DVR_StopRemoteConfig(m_lSetCardCfgHandle); //this.StopRemoteCfg(ref m_lSetCardCfgHandle); //m_lSetCardCfgHandle = -1; return(false); } Marshal.FreeHGlobal(ptrSendCard); return(true); }
protected override void DefWndProc(ref Message m) { switch (m.Msg) { case 1001: Int64 iErrorMsg = m.WParam.ToInt64(); if (-1 != m_lSetCardCfgHandle) { if (CHCNetSDK.NET_DVR_StopRemoteConfig(m_lSetCardCfgHandle)) { m_lSetCardCfgHandle = -1; } } if (-1 != m_lGetCardCfgHandle) { if (CHCNetSDK.NET_DVR_StopRemoteConfig(m_lGetCardCfgHandle)) { m_lGetCardCfgHandle = -1; } } break; case 1002: SendNextCard(); break; case 1003: IntPtr pCardInfo = (IntPtr)m.WParam.ToInt64(); CHCNetSDK.NET_DVR_CARD_CFG_V50 struCardCfg = new CHCNetSDK.NET_DVR_CARD_CFG_V50(); struCardCfg = (CHCNetSDK.NET_DVR_CARD_CFG_V50)Marshal.PtrToStructure(pCardInfo, typeof(CHCNetSDK.NET_DVR_CARD_CFG_V50)); string strCardNo = System.Text.Encoding.UTF8.GetString(struCardCfg.byCardNo); AddToCardList(struCardCfg, strCardNo); Marshal.FreeHGlobal(pCardInfo); break; default: base.DefWndProc(ref m); break; } }
public void SetCardCfg(ref CHCNetSDK.NET_DVR_CARD_CFG_V50 struItem, string strCardNo = null) { if (null == struItem.byCardNo) { struItem.byCardNo = new byte[CHCNetSDK.ACS_CARD_NO_LEN]; } if (null == struItem.byCardPassword) { struItem.byCardPassword = new byte[CHCNetSDK.CARD_PASSWORD_LEN]; } if (null == struItem.wCardRightPlan) { struItem.wCardRightPlan = new ushort[CHCNetSDK.MAX_DOOR_NUM_256 * CHCNetSDK.MAX_CARD_RIGHT_PLAN_NUM]; } if (null == struItem.byDoorRight) { struItem.byDoorRight = new byte[CHCNetSDK.MAX_DOOR_NUM_256]; } if (null == struItem.byBelongGroup) { struItem.byBelongGroup = new byte[CHCNetSDK.MAX_GROUP_NUM_128]; } if (null == struItem.byLockCode) { struItem.byLockCode = new byte[CHCNetSDK.MAX_LOCK_CODE_LEN]; } if (null == struItem.byRoomCode) { struItem.byRoomCode = new byte[CHCNetSDK.MAX_DOOR_CODE_LEN]; } if (null == struItem.byName) { struItem.byName = new byte[CHCNetSDK.NAME_LEN]; } m_struCardCfg = struItem; m_strCardNo = strCardNo; m_strSaveCardNo = m_strCardNo; UpdateInterface(); }
private bool SendCardData(CHCNetSDK.NET_DVR_CARD_CFG_V50 struCardCfg, uint dwDiffTime = 0) { if (-1 == m_lSetCardCfgHandle) { return(false); } uint dwSize = (uint)Marshal.SizeOf(struCardCfg); struCardCfg.dwSize = dwSize; IntPtr ptrStruCard = Marshal.AllocHGlobal((int)dwSize); Marshal.StructureToPtr(struCardCfg, ptrStruCard, false); if (!CHCNetSDK.NET_DVR_SendRemoteConfig(m_lSetCardCfgHandle, (int)CHCNetSDK.LONG_CFG_SEND_DATA_TYPE_ENUM.ENUM_ACS_SEND_DATA, ptrStruCard, dwSize)) { Marshal.FreeHGlobal(ptrStruCard); string strTemp = null; strTemp = string.Format("Send Failed,CardNO:{0}", System.Text.Encoding.UTF8.GetString(m_struCardInfo.byCardNo).TrimEnd('\0')); g_formList.AddLog(m_lDeviceIndex, AcsDemoPublic.OPERATION_FAIL_T, strTemp); return(false); } Marshal.FreeHGlobal(ptrStruCard); return(true); }
private bool SendFirstCard() { if (-1 == m_lSetCardCfgHandle) { return(false); } if (m_BSendSel) { SendCardData(m_struSelSendCardCfg); m_BSendSel = false; m_struSelSendCardCfg = new CHCNetSDK.NET_DVR_CARD_CFG_V50(); return(true); } m_dwSendIndex = 0; if (m_dwCardNum < 1) { return(false); } m_struNowSendCard = m_struCardInfo[m_dwSendIndex]; uint dwSize = (uint)Marshal.SizeOf(m_struNowSendCard); IntPtr ptrSendCard = Marshal.AllocHGlobal((int)dwSize); Marshal.StructureToPtr(m_struNowSendCard, ptrSendCard, false); if (!CHCNetSDK.NET_DVR_SendRemoteConfig(m_lSetCardCfgHandle, 3, ptrSendCard, dwSize)) { Marshal.FreeHGlobal(ptrSendCard); ListViewItem listItem = new ListViewItem(); listItem.Text = "FAIL"; string strTemp = null; strTemp = string.Format("Send Fail,CardNO:{0}", System.Text.Encoding.UTF8.GetString(m_struNowSendCard.byCardNo)); listItem.SubItems.Add(strTemp); this.AddList(listViewMessage, listItem); return(false); } Marshal.FreeHGlobal(ptrSendCard); return(true); }
private void UpdateInterface(bool bRefresh) { m_strCardNo = textBoxCardNumber.Text; m_strSaveCardNo = m_strCardNo; m_struCardCfg = new CHCNetSDK.NET_DVR_CARD_CFG_V50(); m_struCardCfg.Init(); m_struCardCfg.dwSize = (uint)Marshal.SizeOf(m_struCardCfg); byte[] byTempCardNo = new byte[CHCNetSDK.ACS_CARD_NO_LEN]; byTempCardNo = System.Text.Encoding.UTF8.GetBytes(m_strCardNo); for (int i = 0; i < byTempCardNo.Length; i++) { m_struCardCfg.byCardNo[i] = byTempCardNo[i]; } if (checkBoxEffectiveParameters.Checked) { m_struCardCfg.dwModifyParamType |= 0x1; } if (checkBoxCardIsValid.Checked) { m_struCardCfg.byCardValid = 1; } else { m_struCardCfg.byCardValid = 0; } if (checkBoxTheValidityOfParameter.Checked) { m_struCardCfg.dwModifyParamType |= 0x2; m_struCardCfg.struValid.byEnable = 1; if (checkBoxEnable.Checked) { m_struCardCfg.struValid.struBeginTime.wYear = (ushort)dateTimePickerStartDate.Value.Year; m_struCardCfg.struValid.struBeginTime.byMonth = (byte)dateTimePickerStartDate.Value.Month; m_struCardCfg.struValid.struBeginTime.byDay = (byte)dateTimePickerStartDate.Value.Day; m_struCardCfg.struValid.struBeginTime.byHour = (byte)dateTimePickerStartTime.Value.Hour; m_struCardCfg.struValid.struBeginTime.byMinute = (byte)dateTimePickerStartTime.Value.Minute; m_struCardCfg.struValid.struBeginTime.bySecond = (byte)dateTimePickerStartTime.Value.Second; m_struCardCfg.struValid.struEndTime.wYear = (ushort)dateTimePickerEndDate.Value.Year; m_struCardCfg.struValid.struEndTime.byMonth = (byte)dateTimePickerEndDate.Value.Month; m_struCardCfg.struValid.struEndTime.byDay = (byte)dateTimePickerEndDate.Value.Day; m_struCardCfg.struValid.struEndTime.byHour = (byte)dateTimePickerEndTime.Value.Hour; m_struCardCfg.struValid.struEndTime.byMinute = (byte)dateTimePickerEndTime.Value.Minute; m_struCardCfg.struValid.struEndTime.bySecond = (byte)dateTimePickerEndTime.Value.Second; } } if (checkBoxCardTypeParameter.Checked) { m_struCardCfg.dwModifyParamType |= 0x4; m_struCardCfg.byCardType = (byte)(comboBoxCardType.SelectedIndex + 1); } if (checkBoxDoorLimitParameters.Checked) { m_struCardCfg.dwModifyParamType |= 0x8; System.Array.Clear(m_struCardCfg.byDoorRight, 0, m_struCardCfg.byDoorRight.Length); for (int i = 0; i < checkedListBoxDoorAuthority.Items.Count; i++) { if (checkedListBoxDoorAuthority.GetItemChecked(i)) { m_struCardCfg.byDoorRight[i] = 1; } } } if (checkBoxTheFirstCardParameters.Checked) { m_struCardCfg.dwModifyParamType |= 0x10; m_struCardCfg.byLeaderCard = Convert.ToByte(checkBoxFirstCard.Checked ? 1 : 0); } if (checkBoxTheBiggestCreditCardNumber.Checked) { m_struCardCfg.dwModifyParamType |= 0x20; uint.TryParse(textBoxMaximumCreditCard.Text, out m_struCardCfg.dwMaxSwipeTime); } ushort.TryParse(textBoxRoomNO.Text, out m_struCardCfg.wRoomNumber); if (checkBoxBelongsToGroupParameters.Checked) { m_struCardCfg.dwModifyParamType |= 0x40; System.Array.Clear(m_struCardCfg.byBelongGroup, 0, m_struCardCfg.byBelongGroup.Length); for (int i = 0; i < checkedListBoxGroup.Items.Count; i++) { if (checkedListBoxGroup.GetItemChecked(i)) { m_struCardCfg.byBelongGroup[i] = 1; } } } if (checkBoxCardPasswordParameters.Checked) { m_struCardCfg.dwModifyParamType |= 0x80; byte[] byTempCardPassword = new byte[CHCNetSDK.CARD_PASSWORD_LEN]; byTempCardPassword = System.Text.Encoding.UTF8.GetBytes(textBoxCardPassword.Text); for (int i = 0; i < byTempCardPassword.Length; i++) { m_struCardCfg.byCardPassword[i] = byTempCardPassword[i]; } } if (checkBoxCardAccessPlan.Checked) { m_struCardCfg.dwModifyParamType |= 0x100; int i; int j; for (i = 0; i < CHCNetSDK.MAX_DOOR_NUM; i++) { for (j = 0; j < CHCNetSDK.MAX_CARD_RIGHT_PLAN_NUM; j++) { ushort.TryParse(listViewCardAuthorityScheme.Items[i * CHCNetSDK.MAX_CARD_RIGHT_PLAN_NUM + j].SubItems[2].Text, out m_struCardCfg.wCardRightPlan[i * CHCNetSDK.MAX_CARD_RIGHT_PLAN_NUM + j]); } } } if (checkBoxHaveCreditCardNumber.Checked) { m_struCardCfg.dwModifyParamType |= 0x200; uint.TryParse(textBoxreditCard.Text, out m_struCardCfg.dwSwipeTime); } if (checkBoxWorkNo.Checked) { m_struCardCfg.dwModifyParamType |= 0x400; uint.TryParse(textBoxreditCard.Text, out m_struCardCfg.dwEmployeeNo); } ushort.TryParse(textBoxRoomNO.Text, out m_struCardCfg.wFloorNumber); m_struCardCfg.dwCardRight = 0; for (int i = 0; i < checkedListBoxCardAuthority.Items.Count; i++) { if (checkedListBoxCardAuthority.GetItemChecked(i)) { m_struCardCfg.dwCardRight |= (uint)(1 << i); } } uint.TryParse(textBoxWorkNo.Text, out m_struCardCfg.dwEmployeeNo); if (checkBoxName.Checked) { m_struCardCfg.dwModifyParamType |= 0x800; byte[] byTempName = new byte[CHCNetSDK.NAME_LEN]; if (m_iEncodeType == 6) { byTempName = System.Text.Encoding.UTF8.GetBytes(textBoxName.Text); m_struCardCfg.byName = new byte[CHCNetSDK.NAME_LEN]; byTempName.CopyTo(m_struCardCfg.byName, 0); } else { byTempName = System.Text.Encoding.Default.GetBytes(textBoxName.Text); m_struCardCfg.byName = new byte[CHCNetSDK.NAME_LEN]; byTempName.CopyTo(m_struCardCfg.byName, 0); } } ushort.TryParse(textBoxDepartmentNo.Text, out m_struCardCfg.wDepartmentNo); ushort.TryParse(textBoxScheduleNo.Text, out m_struCardCfg.wSchedulePlanNo); m_struCardCfg.bySchedulePlanType = (byte)comboBoxScheduleType.SelectedIndex; m_struCardCfg.byCardModelType = (byte)comboBoxModelType.SelectedIndex; uint.TryParse(textBoxLockID.Text, out m_struCardCfg.dwLockID); uint.TryParse(textBoxCardOwnerID.Text, out m_struCardCfg.dwCardUserId); byte[] byTmpLockCode = new byte[CHCNetSDK.MAX_LOCK_CODE_LEN]; byTmpLockCode = System.Text.Encoding.UTF8.GetBytes(textBoxLockCode.Text); for (int i = 0; i < byTmpLockCode.Length; i++) { m_struCardCfg.byLockCode[i] = byTmpLockCode[i]; } byte[] byTempRoomCode = new byte[CHCNetSDK.MAX_DOOR_CODE_LEN]; byTempRoomCode = System.Text.Encoding.UTF8.GetBytes(textBoxRoomCode.Text); for (int i = 0; i < byTempRoomCode.Length; i++) { m_struCardCfg.byRoomCode[i] = byTempRoomCode[i]; } //input not int type ,make default to 1; if (!int.TryParse(textBoxAddCardNumber.Text, out m_iAddNum)) { m_iAddNum = 1; } }
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 buttonEdit_Click(object sender, EventArgs e) { if (m_iSelectIndex < 0) { MessageBox.Show("Select list item first"); return; } string strTemp1 = null; string strTemp2 = null; string strItem = null; int iSelIndex = m_iSelectIndex; CHCNetSDK.NET_DVR_CARD_CFG_V50 struCardInfo = m_struCardInfo[iSelIndex]; string strCardNo = listViewGataManage.Items[iSelIndex].SubItems[1].Text; CardConfigure batchAdd = new CardConfigure(); batchAdd.SetCardCfg(ref struCardInfo, strCardNo); if (batchAdd.ShowDialog() == DialogResult.OK) { listViewGataManage.BeginUpdate(); struCardInfo = batchAdd.GetCardCfg(strCardNo); listViewGataManage.Items[iSelIndex].SubItems[1].Text = System.Text.Encoding.UTF8.GetString(struCardInfo.byCardNo); if (1 == struCardInfo.byCardValid) { strItem = "Yes"; } else { strItem = "No"; } listViewGataManage.Items[iSelIndex].SubItems[2].Text = strItem; listViewGataManage.Items[iSelIndex].SubItems[3].Text = System.Text.Encoding.UTF8.GetString(struCardInfo.byCardPassword); if (struCardInfo.byCardType == 0 || struCardInfo.byCardType > 7) { listViewGataManage.Items[iSelIndex].SubItems[4].Text = AcsDemoPublic.strCardType[0]; } else { listViewGataManage.Items[iSelIndex].SubItems[4].Text = AcsDemoPublic.strCardType[struCardInfo.byCardType]; } if (1 == struCardInfo.byLeaderCard) { strItem = "Yes"; } else { strItem = "No"; } listViewGataManage.Items[iSelIndex].SubItems[5].Text = strItem; listViewGataManage.Items[iSelIndex].SubItems[6].Text = struCardInfo.dwMaxSwipeTime.ToString(); listViewGataManage.Items[iSelIndex].SubItems[7].Text = struCardInfo.dwSwipeTime.ToString(); if (1 == struCardInfo.struValid.byEnable) { strItem = "Yes"; CHCNetSDK.NET_DVR_TIME_EX strTimeEx1 = struCardInfo.struValid.struBeginTime; strTemp1 = string.Format("{0,4}-{1,2}-{2,2}, {3,2}:{4,2}:{5,2}", strTimeEx1.wYear, strTimeEx1.byMonth, strTimeEx1.byDay, strTimeEx1.byHour, strTimeEx1.byMinute, strTimeEx1.bySecond); CHCNetSDK.NET_DVR_TIME_EX strTimeEx2 = struCardInfo.struValid.struEndTime; strTemp2 = string.Format("{0,4}-{1,2}-{2,2}, {3,2}:{4,2}:{5,2}", strTimeEx2.wYear, strTimeEx2.byMonth, strTimeEx2.byDay, strTimeEx2.byHour, strTimeEx2.byMinute, strTimeEx2.bySecond); } else { strItem = "No"; } listViewGataManage.Items[iSelIndex].SubItems[8].Text = strItem; listViewGataManage.Items[iSelIndex].SubItems[9].Text = strTemp1; listViewGataManage.Items[iSelIndex].SubItems[10].Text = strTemp2; listViewGataManage.Items[iSelIndex].SubItems[11].Text = struCardInfo.wRoomNumber.ToString(); listViewGataManage.EndUpdate(); } }
private void UpdateList(int iInsertIndex, string strCardNo, CHCNetSDK.NET_DVR_CARD_CFG_V50 struCardInfo) { ListViewItem lvItem; lvItem = new ListViewItem(); string strTemp1 = null; string strTemp2 = null; string strItem = null; strItem = (iInsertIndex + 1).ToString(); lvItem.Text = strItem; lvItem.SubItems.Add(System.Text.Encoding.UTF8.GetString(struCardInfo.byCardNo)); if (1 == struCardInfo.byCardValid) { strItem = "Yes"; } else { strItem = "No"; } lvItem.SubItems.Add(strItem); lvItem.SubItems.Add(System.Text.Encoding.UTF8.GetString(struCardInfo.byCardPassword)); if (struCardInfo.byCardType == 0 || struCardInfo.byCardType > 7) { lvItem.SubItems.Add(AcsDemoPublic.strCardType[0]); } else { lvItem.SubItems.Add(AcsDemoPublic.strCardType[struCardInfo.byCardType]); } if (1 == struCardInfo.byLeaderCard) { strItem = "Yes"; } else { strItem = "No"; } lvItem.SubItems.Add(strItem); lvItem.SubItems.Add(struCardInfo.dwMaxSwipeTime.ToString()); lvItem.SubItems.Add(struCardInfo.dwSwipeTime.ToString()); if (1 == struCardInfo.struValid.byEnable) { strItem = "Yes"; CHCNetSDK.NET_DVR_TIME_EX strTimeEx1 = struCardInfo.struValid.struBeginTime; strTemp1 = string.Format("{0,4}-{1,0:D2}-{2,0:D2}, {3,0:D2}:{4,0:D2}:{5,0:D2}", strTimeEx1.wYear, strTimeEx1.byMonth, strTimeEx1.byDay, strTimeEx1.byHour, strTimeEx1.byMinute, strTimeEx1.bySecond); CHCNetSDK.NET_DVR_TIME_EX strTimeEx2 = struCardInfo.struValid.struEndTime; strTemp2 = string.Format("{0,4}-{1,0:D2}-{2,0:D2}, {3,0:D2}:{4,0:D2}:{5,0:D2}", strTimeEx2.wYear, strTimeEx2.byMonth, strTimeEx2.byDay, strTimeEx2.byHour, strTimeEx2.byMinute, strTimeEx2.bySecond); } else { strItem = "No"; } lvItem.SubItems.Add(strItem); lvItem.SubItems.Add(strTemp1); lvItem.SubItems.Add(strTemp2); lvItem.SubItems.Add(""); lvItem.SubItems.Add(struCardInfo.wRoomNumber.ToString()); lvItem.SubItems.Add(struCardInfo.wFloorNumber.ToString()); this.AddList(listViewGataManage, lvItem); }