text.cs 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186
  1. using NVRCsharpDemo;
  2. using System;
  3. using System.Collections;
  4. using System.Collections.Generic;
  5. using System.ComponentModel;
  6. using System.Data;
  7. using System.Drawing;
  8. using System.IO;
  9. using System.Linq;
  10. using System.Net;
  11. using System.Runtime.InteropServices;
  12. using System.Text;
  13. using System.Threading.Tasks;
  14. using System.Windows.Forms;
  15. namespace TrainVideoDataDispose
  16. {
  17. public partial class text : Form
  18. {
  19. public int m_lUserID = -1;
  20. public int m_lGetFaceParamCfgHandle = -1;
  21. private CHCNetSDK.REALDATACALLBACK RealData = null;
  22. public CHCNetSDK.NET_DVR_DEVICEINFO_V30 DeviceInfo;
  23. public CHCNetSDK.NET_DVR_DEVICEINFO_V40 tDeviceInfo;
  24. public CHCNetSDK.NET_DVR_IPPARACFG_V40 m_struIpParaCfgV40;
  25. public CHCNetSDK.NET_DVR_STREAM_MODE m_struStreamMode;
  26. public CHCNetSDK.NET_DVR_IPCHANINFO m_struChanInfo;
  27. public CHCNetSDK.NET_DVR_PU_STREAM_URL m_struStreamURL;
  28. public CHCNetSDK.NET_DVR_IPCHANINFO_V40 m_struChanInfoV40;
  29. public CHCNetSDK.NET_DVR_USER_LOGIN_INFO pLoginInfo;
  30. public CHCNetSDK.LOGINRESULTCALLBACK LoginCallBack;
  31. public CHCNetSDK.RemoteConfigCallback remoteConfigCallback;
  32. //private PlayCtrl.DECCBFUN m_fDisplayFun = null;
  33. public delegate void MyDebugInfo(string str);
  34. private Label labelLogin;
  35. public text()
  36. {
  37. InitializeComponent();
  38. }
  39. private void button1_Click(object sender, EventArgs e)
  40. {
  41. bool m_bInitSDK = CHCNetSDK.NET_DVR_Init();
  42. string DVRIPAddress = "10.111.67.23"; //设备IP地址或者域名 Device IP
  43. Int16 DVRPortNumber = Int16.Parse("8000");//设备服务端口号 Device Port
  44. string DVRUserName = "admin";//设备登录用户名 User name to login
  45. string DVRPassword = "Admin12345";//设备登录密码 Password to login
  46. //设备IP地址或者域名
  47. byte[] byIP = System.Text.Encoding.Default.GetBytes(DVRIPAddress);
  48. pLoginInfo.sDeviceAddress = new byte[129];
  49. byIP.CopyTo(pLoginInfo.sDeviceAddress, 0);
  50. //设备用户名
  51. byte[] byUserName = System.Text.Encoding.Default.GetBytes(DVRUserName);
  52. pLoginInfo.sUserName = new byte[64];
  53. byUserName.CopyTo(pLoginInfo.sUserName, 0);
  54. //设备密码
  55. byte[] byPassword = System.Text.Encoding.Default.GetBytes(DVRPassword);
  56. pLoginInfo.sPassword = new byte[64];
  57. byPassword.CopyTo(pLoginInfo.sPassword, 0);
  58. pLoginInfo.wPort = 8000;
  59. if (LoginCallBack == null)
  60. {
  61. LoginCallBack = new CHCNetSDK.LOGINRESULTCALLBACK(cbLoginCallBack);//注册回调函数
  62. }
  63. pLoginInfo.cbLoginResult = LoginCallBack;
  64. pLoginInfo.bUseAsynLogin = true;
  65. //登录设备 Login the device
  66. //m_lUserID = CHCNetSDK.NET_DVR_Login_V40(ref pLoginInfo, ref tDeviceInfo);
  67. m_lUserID = CHCNetSDK.NET_DVR_Login_V40(ref pLoginInfo, ref tDeviceInfo);
  68. if (m_lUserID < 0)
  69. {
  70. uint iLastErr = CHCNetSDK.NET_DVR_GetLastError();
  71. string str = "NET_DVR_Login_V30 failed, error code= " + iLastErr; //登录失败,输出错误号 Failed to login and output the error code
  72. textinfo.Text = str;
  73. return;
  74. }
  75. else
  76. {
  77. //登录成功
  78. //停止远程配置
  79. if (m_lGetFaceParamCfgHandle != -1)
  80. {
  81. CHCNetSDK.NET_DVR_StopRemoteConfig(m_lGetFaceParamCfgHandle);
  82. }
  83. //清除表格信息
  84. //listViewFaceConfig.Items.Clear();
  85. //LpArr.Clear();
  86. //定义查询信息对象
  87. CHCNetSDK.NET_DVR_TRAFFIC_DATA_QUERY_COND struCond = new CHCNetSDK.NET_DVR_TRAFFIC_DATA_QUERY_COND();
  88. struCond.dwSize = (uint)Marshal.SizeOf(struCond);
  89. //保留
  90. byte[] byRes = System.Text.Encoding.Default.GetBytes("0");
  91. struCond.byRes = new byte[254];
  92. byRes.CopyTo(struCond.byRes, 0);
  93. //struCond.dwQueryCond
  94. if (remoteConfigCallback == null)
  95. {
  96. remoteConfigCallback = new CHCNetSDK.RemoteConfigCallback(cbStateCallback);//注册回调函数
  97. }
  98. int dwSize = Marshal.SizeOf(struCond);
  99. IntPtr ptrStruCond = Marshal.AllocHGlobal(dwSize);
  100. Marshal.StructureToPtr(struCond, ptrStruCond, true);
  101. m_lGetFaceParamCfgHandle = CHCNetSDK.NET_DVR_StartRemoteConfig(m_lUserID, CHCNetSDK.NET_DVR_GET_TRAFFIC_DATA, ptrStruCond, dwSize, remoteConfigCallback, IntPtr.Zero);
  102. if (m_lGetFaceParamCfgHandle < 0)
  103. {
  104. uint iLastErr = CHCNetSDK.NET_DVR_GetLastError();
  105. string str = "NET_DVR_StartRemoteConfig failed, error code= " + iLastErr; //登录失败,输出错误号 Failed to login and output the error code
  106. textinfo.Text = str;
  107. return;
  108. }
  109. else
  110. {
  111. Marshal.FreeHGlobal(ptrStruCond);
  112. }
  113. }
  114. return;
  115. }
  116. public void cbLoginCallBack(int lUserID, int dwResult, IntPtr lpDeviceInfo, IntPtr pUser)
  117. {
  118. string strLoginCallBack = "登录设备,lUserID:" + lUserID + ",dwResult:" + dwResult;
  119. if (dwResult == 0)
  120. {
  121. uint iErrCode = CHCNetSDK.NET_DVR_GetLastError();
  122. strLoginCallBack = strLoginCallBack + ",错误号:" + iErrCode;
  123. }
  124. //下面代码注释掉也会崩溃
  125. if (InvokeRequired)
  126. {
  127. object[] paras = new object[2];
  128. paras[0] = strLoginCallBack;
  129. paras[1] = lpDeviceInfo;
  130. }
  131. else
  132. {
  133. //创建该控件的主线程直接更新信息列表
  134. }
  135. }
  136. public void cbStateCallback(uint dwType, IntPtr lpBuffer, uint dwBufLen, IntPtr pUserData)
  137. {
  138. string strLoginCallBack = "登录设备,lUserID:" + dwType + ",dwResult:" + dwBufLen;
  139. if (dwType == 0)
  140. {
  141. uint iErrCode = CHCNetSDK.NET_DVR_GetLastError();
  142. strLoginCallBack = strLoginCallBack + ",错误号:" + iErrCode;
  143. }
  144. //下面代码注释掉也会崩溃
  145. if (InvokeRequired)
  146. {
  147. object[] paras = new object[2];
  148. paras[0] = strLoginCallBack;
  149. paras[1] = dwType;
  150. }
  151. else
  152. {
  153. //创建该控件的主线程直接更新信息列表
  154. }
  155. }
  156. }
  157. }