CarCamSDK.cs 33 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594
  1. using System;
  2. using System.Runtime.InteropServices;
  3. using System.Text;
  4. namespace DeviceCenter
  5. {
  6. class CarCamSDK
  7. {
  8. public const int MAX_HOST_LEN = 16;
  9. public const int ONE_DIRECTION_LANES = 5;
  10. public const int VERSION_NAME_LEN = 64;
  11. [DllImport("NetSDK.dll", CallingConvention = CallingConvention.StdCall)]
  12. public static extern int Net_Init();
  13. [DllImport("NetSDK.dll", CallingConvention = CallingConvention.StdCall)]
  14. public static extern void Net_UNinit();
  15. [DllImport("NetSDK.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
  16. public static extern int Net_AddCamera(string ptIp);
  17. [DllImport("NetSDK.dll", CallingConvention = CallingConvention.StdCall)]
  18. public static extern int Net_DelCamera(int tHandle);
  19. [DllImport("NetSDK.dll", CallingConvention = CallingConvention.StdCall)]
  20. public static extern int Net_ConnCamera(int tHandle, ushort usPort, ushort usTimeout);
  21. [DllImport("NetSDK.dll", CallingConvention = CallingConvention.StdCall)]
  22. public static extern int Net_DisConnCamera(int tHandle);
  23. [DllImport("NetSDK.dll", CallingConvention = CallingConvention.StdCall)]
  24. public static extern int Net_StartVideo(int tHandle, int niStreamType, IntPtr hWnd);
  25. [DllImport("NetSDK.dll", CallingConvention = CallingConvention.StdCall)]
  26. public static extern int Net_StopVideo(int tHandle);
  27. [DllImport("NetSDK.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
  28. public static extern int Net_GetSdkVersion([MarshalAs(UnmanagedType.LPStr)] StringBuilder szVersion, ref int ptLen);
  29. [DllImport("NetSDK.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
  30. public static extern int Net_ReadGPIOState(int tHandle, Byte ucIndex, ref Byte pucValue);
  31. [DllImport("NetSDK.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
  32. public static extern int Net_WriteGPIOState(int tHandle, Byte ucIndex, Byte ucValue);
  33. [StructLayout(LayoutKind.Sequential)]
  34. public struct T_ImageUserInfo
  35. {
  36. public ushort usWidth; /*图片的宽度,单位:像素*/
  37. public ushort usHeight; /*图片的高度,单位:像素*/
  38. public byte ucVehicleColor;/*车身颜色,E_ColorType*/
  39. public byte ucVehicleBrand;/*车标,E_VehicleFlag*/
  40. public byte ucVehicleSize;/*车型(大中小),ITS_Tb_Vt*/
  41. public byte ucPlateColor;/*车牌颜色,E_ColorType*/
  42. [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
  43. public byte[] szLprResult;/*车牌,若为'\0',表示无效GB2312编码*/
  44. [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
  45. public ushort[] usLpBox; /*车牌位置,左上角(0, 1), 右下角(2,3)*/
  46. public byte ucLprType;/*车牌类型*/
  47. public ushort usSpeed; /*单位km/h*/
  48. public byte ucSnapType;/*抓拍模式*/
  49. public byte ucReserved;
  50. [MarshalAs(UnmanagedType.ByValArray, SizeConst = 18)]
  51. public byte[] acSnapTime; /*图片抓拍时间:格式YYYYMMDDHHMMSSmmm(年月日时分秒毫秒)*/
  52. public byte ucViolateCode; /*违法代码E_ViolationCode*/
  53. public byte ucLaneNo; /*车道号,从0开始编码*/
  54. public uint uiVehicleId; /*检测到的车辆id,若为同一辆车,则id相同*/
  55. public byte ucScore; /*车牌识别可行度*/
  56. public byte ucDirection; /*行车方向E_Direction*/
  57. public byte ucTotalNum; /*该车辆抓拍总张数*/
  58. public byte ucSnapshotIndex; /*当前抓拍第几张,从0开始编号*/
  59. };
  60. [StructLayout(LayoutKind.Sequential)]
  61. public struct T_ImageUserInfo2
  62. {
  63. public ushort usWidth; /*图片的宽度,单位:像素*/
  64. public ushort usHeight; /*图片的高度,单位:像素*/
  65. public byte ucVehicleColor;/*车身颜色,E_ColorType*/
  66. public byte ucVehicleBrand;/*车标,E_VehicleFlag*/
  67. public byte ucVehicleSize;/*车型(大中小),ITS_Tb_Vt*/
  68. public byte ucPlateColor;/*车牌颜色,E_ColorType*/
  69. [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
  70. public byte[] szLprResult;/*车牌,若为'\0',表示无效GB2312编码*/
  71. [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
  72. public ushort[] usLpBox; /*车牌位置,左上角(0, 1), 右下角(2,3)*/
  73. public byte ucLprType;/*车牌类型*/
  74. public ushort usSpeed; /*单位km/h*/
  75. public byte ucSnapType;/*抓拍模式*/
  76. public byte ucReserved;
  77. [MarshalAs(UnmanagedType.ByValArray, SizeConst = 18)]
  78. public byte[] acSnapTime; /*图片抓拍时间:格式YYYYMMDDHHMMSSmmm(年月日时分秒毫秒)*/
  79. public byte ucViolateCode; /*违法代码E_ViolationCode*/
  80. public byte ucLaneNo; /*车道号,从0开始编码*/
  81. public uint uiVehicleId; /*检测到的车辆id,若为同一辆车,则id相同*/
  82. public byte ucScore; /*车牌识别可行度*/
  83. public byte ucDirection; /*行车方向E_Direction*/
  84. public byte ucTotalNum; /*该车辆抓拍总张数*/
  85. public byte ucSnapshotIndex; /*当前抓拍第几张,从0开始编号*/
  86. public uint uiVideoProcTime; /*摄像头从触发拍照到上传车牌的用时,单位ms*/
  87. [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
  88. public byte[] strVehicleBrand; /*车型品牌*/
  89. [MarshalAs(UnmanagedType.ByValArray, SizeConst = 12)]
  90. public byte[] strConfidence; /*车型可信度*/
  91. [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20 * 12)]
  92. public byte[] strSpecialCode; /*特征码, 实际上是20个字符串的数组(char strSpecialCode[20][12], 存储的是20个浮点数),此处用一维数组标准*/
  93. public byte ucHasCar; /*是否有车*/
  94. [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
  95. public byte[] aucReserved1; /*保留字段*/
  96. [MarshalAs(UnmanagedType.ByValArray, SizeConst = 252)]
  97. public byte[] aucReserved2; /*保留字段*/
  98. };
  99. [StructLayout(LayoutKind.Sequential)]
  100. public struct T_PicInfo
  101. {
  102. public uint uiPanoramaPicLen; /*全景图片大小*/
  103. public uint uiVehiclePicLen; /*车牌图片大小*/
  104. public IntPtr ptPanoramaPicBuff; /*全景图片缓冲区*/
  105. public IntPtr ptVehiclePicBuff; /*车牌图片缓冲区*/
  106. };
  107. //特征码比较,fSpecialCode1,fSpecialCode2都为20个浮点数数组,返回分数,分数越高越相似
  108. [DllImport("NetSDK.dll", CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Ansi)]
  109. public static extern float Net_MatchSpecialCode2(float[] fSpecialCode1, float[] fSpecialCode2);
  110. [UnmanagedFunctionPointer(CallingConvention.StdCall, CharSet = CharSet.Ansi)]
  111. public delegate int FGetImageCB(int tHandle, uint uiImageId, ref T_ImageUserInfo tImageInfo, ref T_PicInfo tPicInfo);
  112. [DllImport("NetSDK.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
  113. public static extern int Net_RegImageRecv(FGetImageCB fCb);
  114. [UnmanagedFunctionPointer(CallingConvention.StdCall, CharSet = CharSet.Ansi)]
  115. public delegate int FGetImageCB2(int tHandle, uint uiImageId, ref T_ImageUserInfo2 tImageInfo, ref T_PicInfo tPicInfo);
  116. [DllImport("NetSDK.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
  117. public static extern int Net_RegImageRecv2(FGetImageCB2 fCb);
  118. [UnmanagedFunctionPointer(CallingConvention.StdCall, CharSet = CharSet.Ansi)]
  119. public delegate int FGetImageCBEx(int tHandle, uint uiImageId, ref T_ImageUserInfo tImageInfo, ref T_PicInfo tPicInfo, IntPtr obj);
  120. [DllImport("NetSDK.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
  121. public static extern int Net_RegImageRecvEx(int tHandle, FGetImageCBEx fCb, IntPtr obj);
  122. [UnmanagedFunctionPointer(CallingConvention.StdCall, CharSet = CharSet.Ansi)]
  123. public delegate int FGetImageCBEx2(int tHandle, uint uiImageId, ref T_ImageUserInfo2 tImageInfo, ref T_PicInfo tPicInfo, IntPtr obj);
  124. [DllImport("NetSDK.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
  125. public static extern int Net_RegImageRecvEx2(int tHandle, FGetImageCBEx2 fCb, IntPtr obj);
  126. [UnmanagedFunctionPointer(CallingConvention.StdCall, CharSet = CharSet.Ansi)]
  127. public delegate int FGetOffLineImageCBEx(int tHandle, uint uiImageId, ref T_ImageUserInfo tImageInfo, ref T_PicInfo tPicInfo, IntPtr obj);
  128. [DllImport("NetSDK.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
  129. public static extern int Net_RegOffLineImageRecvEx(int tHandle, FGetOffLineImageCBEx fCb, IntPtr obj);
  130. [UnmanagedFunctionPointer(CallingConvention.StdCall, CharSet = CharSet.Ansi)]
  131. public delegate int FGetReportCBEx(int tHandle, byte ucType, IntPtr ptMessage, IntPtr pUserData);
  132. [DllImport("NetSDK.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
  133. public static extern int Net_RegReportMessEx(int tHandle, FGetReportCBEx fCb, IntPtr obj);
  134. [DllImport("NetSDK.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
  135. public static extern int Net_RegOffLineClient(int tHandle);
  136. [StructLayout(LayoutKind.Sequential)]
  137. public struct T_FrameInfo
  138. {
  139. public uint uiFrameId; //帧ID
  140. public uint uiTimeStamp; //RTP时间戳
  141. public uint uiEncSize; //帧大小
  142. public uint uiFrameType; //1:i帧 0:其它
  143. };
  144. [DllImport("NetSDK.dll", CallingConvention = CallingConvention.StdCall)]
  145. public static extern int Net_ImageSnap(int tHandle, ref T_FrameInfo ptImageSnap);
  146. [StructLayout(LayoutKind.Sequential)]
  147. public struct T_ControlGate
  148. {
  149. [MarshalAs(UnmanagedType.U1)]
  150. public byte ucState;
  151. [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
  152. public byte[] ucReserved;
  153. };
  154. [DllImport("NetSDK.dll", CallingConvention = CallingConvention.StdCall)]
  155. public static extern int Net_GateSetup(int tHandle, ref T_ControlGate ptControlGate);
  156. [StructLayout(LayoutKind.Sequential)]
  157. public struct T_BlackWhiteList
  158. {
  159. public byte LprMode; /* 0:黑名单;1:白名单*/
  160. public byte LprCode; /* 0:车牌号码utf-8字符编码;1:车牌号码gb2312字符编码*/
  161. public byte Lprnew; /*0: 重新发送;1:续传;2:删除;*/
  162. [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
  163. public byte[] aucLplPath;
  164. };
  165. [DllImport("NetSDK.dll", CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Ansi)]
  166. public static extern int Net_BlackWhiteListSend(int tHandle, ref T_BlackWhiteList ptBalckWhiteList);
  167. [StructLayout(LayoutKind.Sequential)]
  168. public struct T_GetBlackWhiteList
  169. {
  170. public byte LprMode; /* 0:黑名单;1:白名单*/
  171. public byte LprCode; /* 0:车牌号码utf-8字符编码;1:车牌号码gb2312字符编码*/
  172. [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
  173. public byte[] aucLplPath;
  174. };
  175. [DllImport("NetSDK.dll", CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Ansi)]
  176. public static extern int Net_GetBlackWhiteList(int tHandle, ref T_GetBlackWhiteList ptGetBalckWhiteList);
  177. [DllImport("NetSDK.dll", CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Ansi)]
  178. public static extern int Net_GetBlackWhiteListAsCSV(int tHandle, ref T_GetBlackWhiteList ptGetBalckWhiteList);
  179. [StructLayout(LayoutKind.Sequential)]
  180. public struct T_LprResult
  181. {
  182. [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
  183. public byte[] LprResult;/*车牌号码;单条消息最多80条车牌号码;其它分多条消息发送*/
  184. [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
  185. public byte[] StartTime;//eg:20151012190303 YYYYMMDDHHMMSS
  186. [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
  187. public byte[] EndTime;//eg:20151012190303 YYYYMMDDHHMMSS
  188. };
  189. [StructLayout(LayoutKind.Sequential)]
  190. public struct T_BlackWhiteListCount
  191. {
  192. public int uiCount;
  193. [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
  194. public byte[] aucLplPath;
  195. };
  196. [DllImport("NetSDK.dll", CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Ansi)]
  197. public static extern int Net_BlackWhiteListSetup(ref T_LprResult ptLprResult, ref T_BlackWhiteListCount ptBlackWhiteListCount);
  198. [DllImport("NetSDK.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
  199. public static extern int Net_SaveImageToJpeg(int tHandle, string ucPathNmme);
  200. [DllImport("NetSDK.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
  201. public static extern int Net_GetJpgBuffer(int tHandle, ref IntPtr ucJpgBuffer, ref ulong ulSize);
  202. [DllImport("NetSDK.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
  203. public static extern int Net_FreeBuffer(IntPtr pJpgBuffer);
  204. [DllImport("NetSDK.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
  205. public static extern int Net_SaveJpgFile(int tHandle, string strJpgFile);
  206. [DllImport("NetSDK.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
  207. public static extern int Net_SaveBmpFile(int tHandle, string strBmpFile);
  208. [DllImport("NetSDK.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
  209. public static extern int Net_StartRecord(int tHandle, string strFile);
  210. [DllImport("NetSDK.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
  211. public static extern int Net_StopRecord(int tHandle);
  212. [DllImport("NetSDK.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
  213. public static extern int Net_ShowPlateRegion(int tHandle, int niShowMode);
  214. [DllImport("NetSDK.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
  215. public static extern int Net_UpdatePlateRegion(int tHandle);
  216. [StructLayout(LayoutKind.Sequential)]
  217. public struct T_VehPayRsp
  218. {
  219. [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
  220. public byte[] acPlate; /* 车牌号码,GB2312编码 */
  221. [MarshalAs(UnmanagedType.ByValArray, SizeConst = 18)]
  222. public byte[] acEntryTime; /* 入场时间*/
  223. [MarshalAs(UnmanagedType.ByValArray, SizeConst = 18)]
  224. public byte[] acExitTime; /* 出场时间*/
  225. public uint uiRequired; /* 应付金额,0.1元为单位*/
  226. public uint uiPrepaid; /* 已付金额,0.1元为单位*/
  227. public byte ucVehType; /* 车辆类型1小车2大车 E_ParkVehSize*/
  228. public byte ucUserType; /*会员类型E_MemberType*/
  229. public byte ucResultCode; /* 收费结果状态码0 成功 1 没有找到入场记录*/
  230. public byte acReserved;
  231. };
  232. [UnmanagedFunctionPointer(CallingConvention.StdCall, CharSet = CharSet.Ansi)]
  233. public delegate int FGetOffLinePayRecordCB(int tHandle, byte ucType, ref T_VehPayRsp ptVehPayInfo, uint uiLen, ref T_PicInfo ptPicInfo, IntPtr obj);
  234. [DllImport("NetSDK.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
  235. public static extern int Net_RegOffLinePayRecord(int tHandle, FGetOffLinePayRecordCB fCb, IntPtr obj);
  236. [StructLayout(LayoutKind.Sequential)]
  237. public struct T_NetSetup
  238. {
  239. public byte ucEth; /* 以太网口编号,目前只支持0*/
  240. [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
  241. public byte[] aucReserved;
  242. public uint uiIPAddress;
  243. public uint uiMaskAddress;
  244. public uint uiGatewayAddress;
  245. public uint uiDNS1;
  246. public uint uiDNS2;
  247. [MarshalAs(UnmanagedType.ByValArray, SizeConst = MAX_HOST_LEN)]
  248. public byte[] szHostName;
  249. };
  250. [DllImport("NetSDK.dll", CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Ansi)]
  251. public static extern int Net_NETSetup(int tHandle, ref T_NetSetup ptNetSetup);
  252. [DllImport("NetSDK.dll", CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Ansi)]
  253. public static extern int Net_QueryNETSetup(int tHandle, ref T_NetSetup ptNetSetup);
  254. [UnmanagedFunctionPointer(CallingConvention.StdCall, CharSet = CharSet.Ansi)]
  255. public delegate int FDrawFunCallBack(int tHandle, IntPtr hdc, int width, int height, IntPtr obj);
  256. [DllImport("NetSDK.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
  257. public static extern int Net_SetDrawFunCallBack(int tHandle, FDrawFunCallBack fCb, IntPtr obj);
  258. [DllImport("NetSDK.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
  259. public static extern int Net_ReadTwoEncpyption(int tHandle, [MarshalAs(UnmanagedType.LPStr)] StringBuilder pBuff, uint uiSizeBuff);
  260. [DllImport("NetSDK.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
  261. public static extern int Net_WriteTwoEncpyption(int tHandle, string pUserData, uint uiDataLen);
  262. /* 点*/
  263. [StructLayout(LayoutKind.Sequential)]
  264. public struct T_Point
  265. {
  266. public short sX;
  267. public short sY;
  268. };
  269. /* 线*/
  270. [StructLayout(LayoutKind.Sequential)]
  271. public struct T_Line
  272. {
  273. public T_Point tStartPoint;
  274. public T_Point tEndPoint;
  275. };
  276. /* 区域*/
  277. [StructLayout(LayoutKind.Sequential)]
  278. public struct T_Rect
  279. {
  280. public T_Point tLefTop;
  281. public T_Point tRightBottom;
  282. };
  283. [StructLayout(LayoutKind.Sequential)]
  284. public struct T_DivisionLine
  285. {
  286. public byte ucDashedLine;
  287. public byte ucReserved;
  288. public T_Line tLine;
  289. };
  290. /*视频检测区域参数配置*/
  291. [StructLayout(LayoutKind.Sequential)]
  292. public struct T_VideoDetectParamSetup
  293. {
  294. public byte ucLanes; /*车道数 */
  295. public byte ucSnapAutoBike; /*摩托车抓拍1:抓拍0:不抓拍*/
  296. public ushort usBanTime; /*违停时长阀值,单位:秒*/
  297. public byte ucVirLoopNum; /*虚拟线圈,抓拍摩托车使用*/
  298. [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
  299. public byte[] aucReserved;
  300. [System.Runtime.InteropServices.MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType.ByValArray, SizeConst = 4, ArraySubType = System.Runtime.InteropServices.UnmanagedType.Struct)]
  301. public T_Point[] atPlateRegion; /*车牌识别区域*/
  302. public T_Line aStopLine; /*卡口:触发线 电子警察:停止线*/
  303. [System.Runtime.InteropServices.MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType.ByValArray, SizeConst = 4, ArraySubType = System.Runtime.InteropServices.UnmanagedType.Struct)]
  304. public T_Point[] atSpeedRegion; /*测速区域 */
  305. [System.Runtime.InteropServices.MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType.ByValArray, SizeConst = 2, ArraySubType = System.Runtime.InteropServices.UnmanagedType.Struct)]
  306. public T_Line[] atOccupCheckLine; /*占有率检测线 */
  307. [System.Runtime.InteropServices.MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType.ByValArray, SizeConst = ONE_DIRECTION_LANES + 1, ArraySubType = System.Runtime.InteropServices.UnmanagedType.Struct)]
  308. public T_DivisionLine[] atDivisionLine;/*车道分割线*/
  309. public T_Line tPrefixLine; /*电警前置线*/
  310. public T_Line tLeftBorderLine; /*电警左边界线*/
  311. public T_Line tRightBorderLine; /*电警右边界线*/
  312. [System.Runtime.InteropServices.MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType.ByValArray, SizeConst = ONE_DIRECTION_LANES * 4, ArraySubType = System.Runtime.InteropServices.UnmanagedType.Struct)]
  313. public T_Point[] atVirLoop; /*虚拟线圈*/
  314. /*非法停车区*/
  315. [System.Runtime.InteropServices.MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType.ByValArray, SizeConst = 4, ArraySubType = System.Runtime.InteropServices.UnmanagedType.Struct)]
  316. public T_Point[] atBanRegion; /*非法禁停区*/
  317. public ushort usCameraHeight; /*相机安装高度*/
  318. public ushort usRectLength; /*路面矩形长度(厘米)*/
  319. public ushort usRectWidth; /*路面矩形宽度(厘米)*/
  320. public ushort usTotalDis; /*矩形坐上角到摄像机垂直投影的距离(厘米)*/
  321. };
  322. [DllImport("NetSDK.dll", CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Ansi)]
  323. public static extern int Net_VideoDetectSetup(int tHandle, ref T_VideoDetectParamSetup ptVideoDetectParamSetup);
  324. [DllImport("NetSDK.dll", CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Ansi)]
  325. public static extern int Net_QueryVideoDetectSetup(int tHandle, ref T_VideoDetectParamSetup ptVideoDetectParamSetup);
  326. [StructLayout(LayoutKind.Sequential)]
  327. public struct T_RS485Data
  328. {
  329. public byte rs485Id;
  330. public byte ucReserved;
  331. public ushort dataLen;
  332. [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
  333. public byte[] data;
  334. };
  335. [DllImport("NetSDK.dll", CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Ansi)]
  336. public static extern int Net_SendRS485Data(int tHandle, ref T_RS485Data ptRS485Data);
  337. [StructLayout(LayoutKind.Sequential)]
  338. public struct T_DCTimeSetup
  339. {
  340. public ushort usYear;
  341. public byte ucMonth;
  342. public byte ucDay;
  343. public byte ucHour;
  344. public byte ucMinute;
  345. public byte ucSecond;
  346. public byte ucDayFmt;
  347. public byte ucTimeFmt;
  348. public byte ucTimeZone;
  349. [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
  350. public byte[] aucReserved;
  351. };
  352. [DllImport("NetSDK.dll", CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Ansi)]
  353. public static extern int Net_TimeSetup(int tHandle, ref T_DCTimeSetup ptTimeSetup);
  354. [DllImport("NetSDK.dll", CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Ansi)]
  355. public static extern int Net_QueryTimeSetup(int tHandle, ref T_DCTimeSetup ptTimeSetup);
  356. [StructLayout(LayoutKind.Sequential)]
  357. public struct T_VehicleVAFunSetup
  358. {
  359. public byte ucPlateRecogEn; /* 车牌识别使能*/
  360. public byte ucVehicleSizeRecogEn; /* 车型识别使能*/
  361. public byte ucVehicleColorRecogEn; /* 车身颜色识别使能*/
  362. public byte ucVehicleBrandRecogEn; /* 车标识别使能*/
  363. public byte ucVehicleSizeClassify; /* 同一辆车抓拍间隔时间高字节*/
  364. public byte ucLocalCity; /*车牌的第二个字符,'A'~'Z'的数字编码*/
  365. public byte ucPlateDirection; /*车牌方向E_PlateDirection*/
  366. public byte ucCpTimeInterval; //同一辆车抓拍间隔时间低字节
  367. public uint uiPlateDefaultWord; /* 默认省份,采用UTF-8编码*/
  368. public ushort usMinPlateW; /*车牌识别最小宽度,单位:像素*/
  369. public ushort usMaxPlateW; /*车牌识别最大宽度,单位:像素*/
  370. public byte ucDoubleYellowPlate; /*双层黄牌识别,1:识别 0:不知别*/
  371. public byte ucDoubleArmyPlate; /*双层军牌识别,1:识别 0:不知别*/
  372. public byte ucPolicePlate; /*武警车牌识别,1:识别 0:不知别*/
  373. public byte ucPlateFeature; /*车牌特写*/
  374. };
  375. [DllImport("NetSDK.dll", CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Ansi)]
  376. public static extern int Net_VehicleVAFunSetup(int tHandle, ref T_VehicleVAFunSetup ptVehicleVAFunSetup);
  377. [DllImport("NetSDK.dll", CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Ansi)]
  378. public static extern int Net_QueryVehicleVAFunSetup(int tHandle, ref T_VehicleVAFunSetup ptVehicleVAFunSetup);
  379. [StructLayout(LayoutKind.Sequential)]
  380. public struct T_MACSetup
  381. {
  382. public byte ucEth; /* 以太网口编号,目前只支持0*/
  383. [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
  384. public byte[] aucReserved;
  385. [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
  386. public byte[] aucMACAddresss;
  387. };
  388. [StructLayout(LayoutKind.Sequential)]
  389. public struct T_RcvMsg
  390. {
  391. public uint uiFlag; /*标志位,111表示Version、IP、MAC*/
  392. [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
  393. public byte[] aucDstMACAdd; /*目标MAC地址*/
  394. [MarshalAs(UnmanagedType.ByValArray, SizeConst = VERSION_NAME_LEN)]
  395. public byte[] aucAdapterName; /*网络适配器名称*/
  396. public uint uiAdapterSubMask; /*网络适配器子网掩码*/
  397. [MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)]
  398. public byte[] ancDevType; /* 设备类型,出厂时设定;*/
  399. [MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)]
  400. public byte[] ancSerialNum; /* 设备序列号*/
  401. [MarshalAs(UnmanagedType.ByValArray, SizeConst = VERSION_NAME_LEN)]
  402. public byte[] ancAppVersion; /* 软件版本*/
  403. [MarshalAs(UnmanagedType.ByValArray, SizeConst = VERSION_NAME_LEN)]
  404. public byte[] ancDSPVersion; /* DSP版本*/
  405. public T_NetSetup tNetSetup; /* 网络信息*/
  406. public T_MACSetup tMacSetup; /* MAC信息*/
  407. };
  408. [UnmanagedFunctionPointer(CallingConvention.StdCall, CharSet = CharSet.Ansi)]
  409. public delegate int FNetFindDeviceCallback(ref T_RcvMsg ptFindDevice, IntPtr obj);
  410. [DllImport("NetSDK.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
  411. public static extern int Net_FindDevice(FNetFindDeviceCallback fCb, IntPtr obj);
  412. [StructLayout(LayoutKind.Sequential)]
  413. public struct T_QueVersionRsp
  414. {
  415. [MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)]
  416. public byte[] szKernelVersion;
  417. [MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)]
  418. public byte[] szFileSystemVersion;
  419. [MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)]
  420. public byte[] szAppVersion;
  421. [MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)]
  422. public byte[] szWebVersion;
  423. [MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)]
  424. public byte[] szHardwareVersion;
  425. [MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)]
  426. public byte[] szDevType; /* 设备类型描述,出厂时设定;*/
  427. [MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)]
  428. public byte[] szSerialNum; /*产品序列号*/
  429. public uint uiDateOfExpiry; /*产品有效期*/
  430. [MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)]
  431. public byte[] szDSPVersion;
  432. };
  433. [DllImport("NetSDK.dll", CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Ansi)]
  434. public static extern int Net_StartTalk(int tHandle);
  435. [DllImport("NetSDK.dll", CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Ansi)]
  436. public static extern int Net_StopTalk(int tHandle);
  437. [StructLayout(LayoutKind.Sequential)]
  438. public struct T_SendLprByMess
  439. {
  440. public byte ucType; //0 新增,若该车牌已存在,则会自动覆盖 1 删除指定车牌
  441. public byte ucConut; //本次传输的车牌个数
  442. [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]//保留位
  443. public byte[] aucReserved;
  444. [MarshalAs(UnmanagedType.ByValArray, SizeConst = 10)]
  445. public T_LprResult[] atLprResult;
  446. };
  447. //通过消息将白名单导入到相机,适用于1到10条车牌信息与相机交互;当车牌数大于10条时,请参考批量导入接口Net_BlackWhiteListSend;
  448. [DllImport("NetSDK.dll", CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Ansi)]
  449. public static extern int Net_SendBlackWhiteListByMess(int tHandle, ref T_SendLprByMess ptSendLprByMes);
  450. [StructLayout(LayoutKind.Sequential)]
  451. public struct T_ParkLedManualItem
  452. {
  453. public byte ucEnable; /*是否使能*/
  454. public byte ucLevel; /*LED亮度等级1~7*/
  455. [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]//保留位
  456. public byte[] aucReserved;
  457. public ushort usStartTime; /*开始时间单位:分钟*/
  458. public ushort usEndTime; /*结束时间单位:分钟*/
  459. };
  460. [StructLayout(LayoutKind.Sequential)]
  461. public struct T_ParkOpenManual
  462. {
  463. [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
  464. public T_ParkLedManualItem[] atParkLedMan;
  465. }
  466. [DllImport("NetSDK.dll", CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Ansi)]
  467. public static extern int Net_SetParkOpenManual(int tHandle, ref T_ParkOpenManual ptParkOpenManual);//强制开闸控制设置
  468. [DllImport("NetSDK.dll", CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Ansi)]
  469. public static extern int Net_QueryParkOpenManual(int tHandle, ref T_ParkOpenManual ptParkOpenManual);//强制开闸控制查询
  470. [StructLayout(LayoutKind.Sequential)]
  471. public struct T_AudioLinkInfo
  472. {
  473. public int iIpAddr;//IP地址
  474. public byte ucStatus; //状态 0 空闲 1 有连接
  475. [MarshalAs(UnmanagedType.ByValArray, SizeConst = 127)]//保留位
  476. public byte[] Reserved;
  477. };
  478. [StructLayout(LayoutKind.Sequential)]
  479. public struct T_AudioTalkBack
  480. {
  481. public byte enable; //0 关闭 1 开启语音对讲 2 播放音频 3 语音采集 4 拒绝对讲
  482. public byte pressstatus; //0 未按下 1 有按下
  483. public byte ucOutTime; //连接超时等等时间【3,30】 单位/秒
  484. [MarshalAs(UnmanagedType.ByValArray, SizeConst = 5)]//保留位
  485. public byte[] Reserved;
  486. };
  487. //通过消息将白名单导入到相机,适用于1到10条车牌信息与相机交互;当车牌数大于10条时,请参考批量导入接口Net_BlackWhiteListSend;
  488. [DllImport("NetSDK.dll", CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Ansi)]
  489. public static extern int Net_AudioTalkBack(int tHandle, ref T_AudioTalkBack ptAudioTalkBack);
  490. [StructLayout(LayoutKind.Sequential)]
  491. public struct T_AudioLinkinfo
  492. {
  493. public int iIpAddr;//IP地址
  494. public byte ucStatus;//状态 0 空闲 1 有连接
  495. [MarshalAs(UnmanagedType.ByValArray, SizeConst = 127)]//保留位
  496. public byte[] Reserved;
  497. };
  498. [DllImport("NetSDK.dll", CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Ansi)]
  499. public static extern int Net_QueryAudioLinkinfo(int tHandle, ref T_AudioLinkinfo ptAudioLinkinfo);
  500. //异常断开回调函数 ucCtrlConnState == 2的时候表示语音对讲异常断开
  501. [UnmanagedFunctionPointer(CallingConvention.StdCall, CharSet = CharSet.Ansi)]
  502. public delegate void FTalkConnStateCallBack(int tHandle, byte ucCtrlConnState, IntPtr obj);
  503. //注册语音对讲异常断开消息上报,SDK初始化成功后只需调用一次
  504. [DllImport("NetSDK.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
  505. public static extern int Net_RegTalkConnStateCallBack(FTalkConnStateCallBack fCb, IntPtr obj);
  506. }
  507. }