|
@@ -15,6 +15,7 @@ using log4net;
|
|
|
using CamTool.utils;
|
|
using CamTool.utils;
|
|
|
using System.Threading;
|
|
using System.Threading;
|
|
|
using Newtonsoft.Json;
|
|
using Newtonsoft.Json;
|
|
|
|
|
+using System.Windows.Interop;
|
|
|
|
|
|
|
|
namespace CamTool
|
|
namespace CamTool
|
|
|
{
|
|
{
|
|
@@ -45,6 +46,8 @@ namespace CamTool
|
|
|
|
|
|
|
|
public static int m_userId;
|
|
public static int m_userId;
|
|
|
private CHCNetSDK.MSGCallBack m_falarmData = null;
|
|
private CHCNetSDK.MSGCallBack m_falarmData = null;
|
|
|
|
|
+ private CHCNetSDK.RemoteConfigCallback g_fGetGatewayCardCallback = null;
|
|
|
|
|
+ private int m_lGetCardCfgHandle = -1;
|
|
|
|
|
|
|
|
private enum PassDirection
|
|
private enum PassDirection
|
|
|
{
|
|
{
|
|
@@ -167,6 +170,7 @@ namespace CamTool
|
|
|
MessageBox.Show("NET_DVR_SetDVRMessageCallBack_V50 Fail");
|
|
MessageBox.Show("NET_DVR_SetDVRMessageCallBack_V50 Fail");
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
+ GetAllCard();
|
|
|
|
|
|
|
|
|
|
|
|
|
List<string> ports = PortUtil.FindComPortNames("1A86", "7523"); //地磅
|
|
List<string> ports = PortUtil.FindComPortNames("1A86", "7523"); //地磅
|
|
@@ -661,6 +665,95 @@ namespace CamTool
|
|
|
log.Info(szInfoBuf);
|
|
log.Info(szInfoBuf);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ private void GetAllCard()
|
|
|
|
|
+ {
|
|
|
|
|
+ if (-1 != m_lGetCardCfgHandle)
|
|
|
|
|
+ {
|
|
|
|
|
+ if (CHCNetSDK.NET_DVR_StopRemoteConfig(m_lGetCardCfgHandle))
|
|
|
|
|
+ {
|
|
|
|
|
+ m_lGetCardCfgHandle = -1;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ CHCNetSDK.NET_DVR_CARD_CFG_COND struCond = new CHCNetSDK.NET_DVR_CARD_CFG_COND();
|
|
|
|
|
+ struCond.dwSize = (uint)Marshal.SizeOf(struCond);
|
|
|
|
|
+ struCond.wLocalControllerID = 0;
|
|
|
|
|
+ struCond.dwCardNum = 0xffffffff;
|
|
|
|
|
+ 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_userId, CHCNetSDK.NET_DVR_GET_CARD_CFG_V50, ptrStruCond, dwSize, g_fGetGatewayCardCallback, new WindowInteropHelper(this).Handle);
|
|
|
|
|
+ if (m_lGetCardCfgHandle == -1)
|
|
|
|
|
+ {
|
|
|
|
|
+ log.Info(string.Format("NET_DVR_GET_CARD_CFG_V50 FAIL, ERROR CODE {0}", CHCNetSDK.NET_DVR_GetLastError()));
|
|
|
|
|
+ Marshal.FreeHGlobal(ptrStruCond);
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
+ else
|
|
|
|
|
+ {
|
|
|
|
|
+ log.Info("SUCC NET_DVR_GET_CARD_CFG_V50");
|
|
|
|
|
+ }
|
|
|
|
|
+ Marshal.FreeHGlobal(ptrStruCond);
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ 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);
|
|
|
|
|
+
|
|
|
|
|
+ string cardNo = Encoding.UTF8.GetString(struCardCfg.byCardNo);
|
|
|
|
|
+ string isValid = 1 == struCardCfg.byCardValid ? "YES" : "NO";
|
|
|
|
|
+ string cardPasswod = Encoding.UTF8.GetString(struCardCfg.byCardPassword);
|
|
|
|
|
+ string cardType = (struCardCfg.byCardType == 0 || struCardCfg.byCardType > 7) ?
|
|
|
|
|
+ AcsDemoPublic.strCardType[0] : AcsDemoPublic.strCardType[struCardCfg.byCardType];
|
|
|
|
|
+ string leaderCard = 1 == struCardCfg.byLeaderCard ? "YES" : "NO";
|
|
|
|
|
+ string name = Encoding.Default.GetString(struCardCfg.byName);
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+ 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)
|
|
|
|
|
+ {
|
|
|
|
|
+ log.Info("NET_DVR_GET_CARD_CFG_V50 Get finish");
|
|
|
|
|
+ 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');
|
|
|
|
|
+
|
|
|
|
|
+ log.Info(string.Format("NET_DVR_GET_CARD_CFG_V50 Get Failed,ErrorCode:{0},CardNo:{1}", errorCode, byCardNo));
|
|
|
|
|
+ CHCNetSDK.PostMessage(pUserData, 1002, 0, 0);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|