LPRCClientSDK.h 34 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791
  1. #ifndef _CLIENT_H
  2. #define _CLIENT_H
  3. #if !defined(WIN32) && !defined(__stdcall)
  4. #define __stdcall
  5. #endif
  6. #ifdef WIN32
  7. typedef __int64 unsigned_long_long;
  8. #include <windows.h>
  9. #else
  10. typedef unsigned long long unsigned_long_long;
  11. #endif
  12. #ifndef WIN32
  13. typedef unsigned int UINT;
  14. typedef void *HWND;
  15. #endif
  16. typedef unsigned long LDWORD;
  17. #ifdef __cplusplus
  18. extern "C" {
  19. #endif
  20. #define CLIENT_LPRC_BIG_PICSTREAM_SIZE 200000-312 /*相机上传jpeg流每帧占用的内存的最大大小*/
  21. #define CLIENT_LPRC_BIG_PICSTREAM_SIZE_EX 1*800*1024-312 /*相机上传全景图占用内存的最大大小 */
  22. #define CLIENT_LPRC_SMALL_PICSTREAM_SIZE_EX 10000 /*相机上传车牌截图占用内存的最大大小 */
  23. /* 相机时间 */
  24. typedef struct
  25. {
  26. int Year; /* 年 */
  27. int Month; /* 月 */
  28. int Day; /* 日 */
  29. int Hour; /* 时 */
  30. int Minute; /* 分 */
  31. int Second; /* 秒 */
  32. int Millisecond; /* 微妙 */
  33. }CLIENT_LPRC_CAMERA_TIME;
  34. /* 识别结果坐标 */
  35. typedef struct
  36. {
  37. int Left; /* 左 */
  38. int Top; /* 上 */
  39. int Right; /* 右 */
  40. int Bottom; /* 下 */
  41. }CLIENT_LPRC_PLATE_LOCATION;
  42. /* 图像信息*/
  43. typedef struct
  44. {
  45. int nWidth; /* 宽度 */
  46. int nHeight; /* 高度 */
  47. int nPitch; /* 图像宽度的一行像素所占内存字节数*/
  48. int nLen; /* 图像的长度 */
  49. char reserved[16]; /* 预留 */
  50. unsigned char *pBuffer; /* 图像内存的首地址 */
  51. }CLIENT_LPRC_IMAGE_INFO;
  52. /* 识别结果 */
  53. typedef struct
  54. {
  55. char chCLIENTIP[16]; /* 相机IP */
  56. char chColor[8]; /* 车牌颜色 */
  57. char chLicense[16]; /* 车牌号码 */
  58. CLIENT_LPRC_PLATE_LOCATION pcLocation; /* 车牌在图像中的坐标 */
  59. CLIENT_LPRC_CAMERA_TIME shootTime; /* 识别出车牌的时间 */
  60. int nConfidence; /* 车牌可信度 */
  61. int nTime; /* 识别耗时 */
  62. int nDirection; /* 车牌方向 */
  63. int nCarLogo; /* 车标类型(参考CAR_LOGO)*/
  64. int nCarModel; /* 车型类型(参考CAR_MODEL)*/
  65. char reserved[256-4-4]; /* 预留 */
  66. CLIENT_LPRC_IMAGE_INFO pFullImage; /* 全景图像数据(注意:相机不传输,此处指针为空) */
  67. CLIENT_LPRC_IMAGE_INFO pPlateImage; /* 车牌图像数据(注意:相机不传输,此处指针为空) */
  68. }CLIENT_LPRC_PLATE_RESULTEX;
  69. /* Jpeg流回调返回每一帧jpeg数据结构体 */
  70. typedef struct
  71. {
  72. char chIp[16]; /*相机IP */
  73. char *pchBuf; /*每一帧jpeg数据缓冲区 */
  74. unsigned int nLen; /*当前jpeg帧的数据长度 */
  75. int nStatus; /* 当前jpeg帧接收状态: 0-正常, 非0-不正常 */
  76. char reserved[128]; /* 保留 */
  77. }CLIENT_LPRC_DEVDATA_INFO;
  78. /*接收串口数据的结构体*/
  79. typedef struct
  80. {
  81. unsigned char *pData; /*串口数据指针 */
  82. int nsize; /*串口数据大小 */
  83. char reserved[128]; /* 保留 */
  84. }CLIENT_LPRC_DEVSERIAL_DATA;
  85. /* 搜索设备之后保存设备信息的结构体,注:要是修改ip信息请保证其他信息不被改变*/
  86. typedef struct
  87. {
  88. char chDevName[256]; /* 设备名 */
  89. char chSoftVer[20]; /* 软件版本号 */
  90. char chHardVer[20]; /* 硬件版本号 */
  91. char chSysVer[20]; /* 系统版本 */
  92. int nSdkPort; /* sdk端口号 */
  93. char chIp[16]; /* ip地址 */
  94. char chGateway[16]; /* 网管 */
  95. char chNetmask[16]; /* 子网掩码 */
  96. char chMac[18]; /* Mac地址 */
  97. char chRoomID[20]; /*RooMID */
  98. char chSN[20]; /*SN*/
  99. char chWifiIp[16]; /*wifi_ip*/
  100. char reserved[256-16]; /* 保留 */
  101. }CLIENT_LPRC_DeviceInfo;
  102. /*新版本Rs485透传数据结构体*/
  103. typedef struct{
  104. short TimeDelay; /*延时范围:10~200之间
  105. 注:1、设置的是本条数据和下一条数据之间的延时时间
  106. 2、最后一条数据不需要设置延时*/
  107. unsigned char *data; /*存储传输数据的缓冲区指针,需要客户自己申请缓冲区*/
  108. short datalen; /*缓冲区最大长度2*1024*/
  109. char reserved[10];/*保留*/
  110. } CLIENT_LPRC_RS485_Data_t;
  111. /*新版本485透传结构体*/
  112. typedef struct{
  113. CLIENT_LPRC_RS485_Data_t rS485_data[5]; /*实际发送数据的结构体*/
  114. int datanum; /*每次发送最大支持发送5条数据*/
  115. } CLIENT_LPRC_RS485_Transparent_t;
  116. /*GPIO 输入口状态 结构体 */
  117. typedef struct{
  118. unsigned char gpio_in0;//GPIO IN0 0低电平 1 高电平
  119. unsigned char gpio_in1;//GPIO IN1 0低电平 1 高电平
  120. unsigned char gpio_in2;//GPIO IN2 0低电平 1 高电平
  121. unsigned char gpio_in3;//GPIO IN3 0低电平 1 高电平
  122. }CLIENT_LPRC_GPIO_In_Statue;
  123. /*GPIO 输入口状态 结构体 */
  124. typedef struct{
  125. char gpio_out1;//GPIO OUT1 0继电器断开 1 继电器闭合 -1不做变化
  126. char gpio_out2;//GPIO OUT2 0继电器断开 1 继电器闭合 -1不做变化
  127. char gpio_out3;//GPIO OUT3 0继电器断开 1 继电器闭合 -1不做变化
  128. }CLIENT_LPRC_GPIO_Out_Statue;
  129. /*网络参数设置结构体 */
  130. typedef struct{
  131. char ip[16]; /* IP address */
  132. char netmask[16]; /* Netmask address */
  133. char gateway[16]; /* gateway address */
  134. char dns[16]; /* DNS */
  135. char reserved[64];/*保留*/
  136. }CLIENT_LPRC_Net_Set_Param;
  137. /************************************************************************/
  138. /* CLIENT_LPRC_InitSDK: 连接相机 */
  139. /* Parameters: */
  140. /* nPort[in]: 连接相机的端口,现默认为8080 */
  141. /* hWndHandle[in]: 接收消息的窗体句柄,当为NULL时,表示无窗体 */
  142. /* uMsg[in]: 用户自定义消息,当hWndHandle不为NULL时, */
  143. /* 检测到有新的车牌识别结果并准备好当前车牌 */
  144. /* 缓冲区信息后,用::PostMessage 给窗口 */
  145. /* hWndHandle发送uMsg消息,其中WPARAM参数为0, */
  146. /* LPARAM参数为0 */
  147. /* chServerIP[in]: 相机的IP地址 */
  148. /* dwUser[in]: 用户自定义字段,主要用来回传给回调函数。 */
  149. /* Return Value: int */
  150. /* 0 相机连接成功 */
  151. /* 1 相机连接失败 */
  152. /* Notice: */
  153. /* 如果采用回调的方式获取数据时,hWndHandle句柄为NULL, */
  154. /* uMsg为0,并且注册回调函数,通知有新的数据; */
  155. /* 反之,在主窗口收到消息时,调用CLIENT_LPRC_GetVehicleInfoEx获取 */
  156. /* 数据。 */
  157. /************************************************************************/
  158. int __stdcall CLIENT_LPRC_InitSDK(UINT nPort,HWND hWndHandle,UINT uMsg,char *chServerIP,LDWORD dwUser);
  159. int __stdcall CLIENT_LPRC_InitSDK_Ex(UINT nPort,HWND hWndHandle,UINT uMsg,char *chServerIP,void *RecoResultCallback, LDWORD dwUser);
  160. /************************************************************************/
  161. /* CLIENT_LPRC_QuitSDK: 断开所有已经连接设备,释放资源 */
  162. /* Parameters: */
  163. /* Return Value: void */
  164. /************************************************************************/
  165. void __stdcall CLIENT_LPRC_QuitSDK();
  166. /************************************************************************/
  167. /* 函数: 根据IP地址,断开指定设备链接 */
  168. /* Parameters: */
  169. /* pCameraIP[in]: 相机IP地址 */
  170. /* Return Value: int */
  171. /* 0 获取成功 */
  172. /* 1 获取失败 */
  173. /************************************************************************/
  174. int __stdcall CLIENT_LPRC_QuitDevice(char *pCameraIP);
  175. /***********************************************************************************/
  176. /* 回调函数:循环检测并通知相机设备通讯状态的回调函数 */
  177. /* Parameters: */
  178. /* chCLIENTIP[out]: 返回设备IP */
  179. /* nStatus[out]: 设备状态:0表示网络异常或设备异常; */
  180. /* 1表示网络正常,设备已连接 */
  181. /* 2表示网络正常,设备已连接,但相机有重启 */
  182. /* dwUser[out] CLIENT_InitSDK传给sdk的用户自定义字段 */
  183. /* Return Value: void */
  184. /***********************************************************************************/
  185. typedef void (*CLIENT_LPRC_ConnectCallback)(char *chCLIENTIP,UINT nStatus,LDWORD dwUser);
  186. /************************************************************************/
  187. /* CLIENT_LPRC_RegCLIENTConnEvent: 注册相机通讯状态的回调函数 */
  188. /* Parameters: */
  189. /* CLIENTConnect[in]: CLIENT_LPRC_ConnectCallback类型回调函数 */
  190. /* Return Value: void */
  191. /************************************************************************/
  192. void __stdcall CLIENT_LPRC_RegCLIENTConnEvent (CLIENT_LPRC_ConnectCallback CLIENTConnect);
  193. /************************************************************************/
  194. /* CLIENT_LPRC_CheckStatus: 主动检查相机设备的通讯状态 */
  195. /* Parameters: */
  196. /* chCLIENTIP[in]: 要检查的相机的IP */
  197. /* Return Value: int */
  198. /* 0 正常 */
  199. /* 1 网络不通 */
  200. /************************************************************************/
  201. int __stdcall CLIENT_LPRC_CheckStatus (char *chCLIENTIP);
  202. /************************************************************************/
  203. /* 回调函数:获取相机485发送的数据 */
  204. /* Parameters: */
  205. /* chWTYIP[out]: 返回设备IP */
  206. /* serialData[out] 串口数据地址 */
  207. /* nlen[out] 串口数据大小 */
  208. /* Return Value: void */
  209. /************************************************************************/
  210. typedef void (*CLIENT_LPRC_SerialDataCallback)(char *chCLIENTIP,CLIENT_LPRC_DEVSERIAL_DATA *pSerialData,LDWORD dwUser);
  211. /************************************************************************/
  212. /* CLIENT_LPRC_RegSerialDataEvent: 注册获取串口数据的回调函数 */
  213. /* Parameters: */
  214. /* CLIENTSerialData[in]: 处理接收串口数据的回调函数的指针*/
  215. /* Return Value: void */
  216. /************************************************************************/
  217. void __stdcall CLIENT_LPRC_RegSerialDataEvent(CLIENT_LPRC_SerialDataCallback CLIENTSerialData);
  218. /************************************************************************/
  219. /* 回调函数:获取相机GPIO状态 */
  220. /* Parameters: */
  221. /* chWTYIP[out]: 返回设备IP */
  222. /* pGpioState[out] 串口数据地址 */
  223. /* Return Value: void */
  224. /************************************************************************/
  225. typedef void (*CLIENT_LPRC_GetGpioStateCallback)(char *chWTYIP,CLIENT_LPRC_GPIO_In_Statue *pGpioState);
  226. /************************************************************************/
  227. /* CLIENT_LPRC_RegWTYGetGpioState: 注册获取相机GPIO状态的回调函数 */
  228. /* Parameters: */
  229. /* CLIENTGpioState[in]: CLIENT_LPRC_GetGpioStateCallback */
  230. /* 类型回调函数 */
  231. /* Return Value: void */
  232. /************************************************************************/
  233. void __stdcall CLIENT_LPRC_RegWTYGetGpioState (CLIENT_LPRC_GetGpioStateCallback CLIENTGpioState);
  234. /************************************************************************/
  235. /* 回调函数: 注册接收识别数据回调函数 */
  236. /* Parameters: */
  237. /* recResult[out]: 识别结果数据 */
  238. /* dwUser[out] CLIENT_LPRC_InitSDK传给sdk的用户自定义字段*/
  239. /* Return Value: void */
  240. /* Note: */
  241. /* 新扩展的回调函数,方便用户接收清晰度较高或分辨率较高的JPEG图像 */
  242. /************************************************************************/
  243. typedef void (*CLIENT_LPRC_DataEx2Callback)(CLIENT_LPRC_PLATE_RESULTEX *recResultEx,LDWORD dwUser);
  244. /************************************************************************/
  245. /* CLIENT_LPRC_RegDataEx2Event: 注册获取识别结果的回调函数 */
  246. /* Parameters: */
  247. /* CLIENTData[in]: 处理识别结果的回调函数的指针 */
  248. /* Return Value: void */
  249. /* Note: */
  250. /* 接收清晰度较高,或分辨率较高的JPEG图像 */
  251. /************************************************************************/
  252. void __stdcall CLIENT_LPRC_RegDataEx2Event(CLIENT_LPRC_DataEx2Callback CLIENTDataEx2);
  253. /************************************************************************/
  254. /* 函数: 消息方式获取指定IP的相机识别结果。 */
  255. /* 当CLIENT_LPRC_initSDK函数中设置了窗体句柄和消息时, */
  256. /* 需要在消息处理函数中调用此函数来主动获取识别结果。 */
  257. /* Parameters: */
  258. /* chCLIENTIP[in]: 根据消息,获取指定IP设备识别数据 */
  259. /* chPlate[in]: 车牌号码 */
  260. /* chColor[in]: 车牌颜色 */
  261. /* chFullImage[in]: 全景图数据 */
  262. /* nFullLen[in]: 全景图数据长度 */
  263. /* chPlateImage[in]: 车牌图数据 */
  264. /* nPlateLen[in]: 车牌图数据长度 */
  265. /* Return Value: int */
  266. /* 0 获取成功 */
  267. /* 1 获取失败 */
  268. /* Notice: */
  269. /* 当设置了传输内容不传时,各自对应的数据为NULL,长度为-1; */
  270. /* 当没有形成数据时,各自对应数据为NULL,长度为0 */
  271. /************************************************************************/
  272. int __stdcall CLIENT_LPRC_GetVehicleInfoEx(char *chCLIENTIP,
  273. char *chPlate,
  274. char *chColor,
  275. void *chFullImage ,
  276. int *nFullLen,
  277. void *chPlateImage,
  278. int *nPlateLen);
  279. /************************************************************************/
  280. /* CLIENT_LPRC_SetSavePath: 如果用户需要动态库自动保存图片,可以通过该函数设置保*/
  281. /* 存图片的路径。 */
  282. /* Parameters: */
  283. /* chSavePath[in]: 文件存储路径,以"\\"结束,如:"D:\\Image\\" */
  284. /* Return Value: void */
  285. /* */
  286. /* Notice: */
  287. /* 全景图:指定目录\\设备IP\\年月日(YYYYMMDD)\\FullImage\\ */
  288. /* 时分秒-毫秒__颜色_车牌号码__.jpg */
  289. /* 车牌图:指定目录\\设备IP\\年月日(YYYYMMDD)\\PlatelImage\\ */
  290. /* 时分秒-毫秒__颜色_车牌号码__.jpg */
  291. /************************************************************************/
  292. void __stdcall CLIENT_LPRC_SetSavePath (char *chSavePath);
  293. /************************************************************************/
  294. /* CLIENT_LPRC_SetTrigger: 手动触发识别(抓取一帧识别) */
  295. /* Parameters: */
  296. /* pCameraIP[in]: 要触发的相机设备的IP */
  297. /* nCameraPort[in]: 端口,默认8080 */
  298. /* Return Value: */
  299. /* 0 触发成功返回 */
  300. /* 非0 失败 */
  301. /************************************************************************/
  302. int __stdcall CLIENT_LPRC_SetTrigger(char *pCameraIP, int nCameraPort);
  303. /************************************************************************/
  304. /* CLIENT_LPRC_SenseCoilTrigger: 模拟地感触发识别(需要将识别模式:设置为'视频地感')*/
  305. /* Parameters: */
  306. /* pCameraIP[in]: 要触发的相机设备的IP */
  307. /* nCameraPort[in]: 端口,默认8080 */
  308. /* Return Value: */
  309. /* 0 触发成功返回 */
  310. /* 非0 失败 */
  311. /* Note: */
  312. /* V5以上硬件相机才能支持此接口 */
  313. /************************************************************************/
  314. int __stdcall CLIENT_LPRC_SetSenseCoilTrigger(char *pCameraIP, int nCameraPort);
  315. /************************************************************************/
  316. /* CLIENT_LPRC_Reboot: 手动重启 */
  317. /* Parameters: */
  318. /* pCameraIP[in]: 要重启 的相机设备的IP */
  319. /* nCameraPort[in]: 端口,默认8080 */
  320. /* Return Value: */
  321. /* 0 成功返回 */
  322. /* 非0 失败 */
  323. /************************************************************************/
  324. int __stdcall CLIENT_LPRC_Reboot(char *pCameraIP, int nCameraPort);
  325. /************************************************************************/
  326. /* CLIENT_LPRC_SetTransContent: 控制相机设备上传内容 */
  327. /* Parameters: */
  328. /* pCameraIP[in]: 要设置的设备IP */
  329. /* nCameraPort[in]: 端口,默认8080 */
  330. /* nFullImg[in]: 全景图,0表示不传,1表示传 */
  331. /* nPlateImg[in]: 车牌图,0表示不传,1表示传 */
  332. /* Return Value: int */
  333. /* 0 成功 */
  334. /* 非0 失败 */
  335. /************************************************************************/
  336. int __stdcall CLIENT_LPRC_SetTransContent (char *pCameraIP, int nCameraPort, int nFullImg, int nPlateImg);
  337. /************************************************************************/
  338. /* 函数说明: 控制继电器的闭合 */
  339. /* Parameters: */
  340. /* pCameraIP[in]: 相机IP */
  341. /* nCameraPort[in]: 端口,默认8080 */
  342. /* Return Value: int */
  343. /* 0 设置成功 */
  344. /* 非0 失败 */
  345. /* Notice: */
  346. /* 通过此功能,可以在PC端通过一体机设备,来控制道闸的抬起 */
  347. /* 设备继电器输出信号为:开关量信号。 */
  348. /************************************************************************/
  349. int __stdcall CLIENT_LPRC_SetRelayClose(char *pCameraIP, int nCameraPort);
  350. /************************************************************************/
  351. /* 函数说明: 控制道闸落下 */
  352. /* Parameters: */
  353. /* pCameraIP[in]: 相机IP */
  354. /* nCameraPort[in]: 端口,默认8080 */
  355. /* Return Value: int */
  356. /* 0 设置成功 */
  357. /* 非0 失败 */
  358. /* Notice: */
  359. /* 通过此功能,可以在PC端通过一体机设备,来控制道闸的落下 */
  360. /* 设备继电器输出信号为:开关量信号。 */
  361. /************************************************************************/
  362. int __stdcall CLIENT_LPRC_DropRod(char *pCameraIP, int nCameraPort);
  363. /************************************************************************/
  364. /* CLIENT_LPRC_RS485Send: RS485透明传输 */
  365. /* Parameters: */
  366. /* pCameraIP[in] 相机设备IP地址 */
  367. /* nPort[in] 端口,默认8080 */
  368. /* chData[in] 将要传输的数据块的首地址 */
  369. /* nSendLen[in] 将要传输的数据块的字节数 */
  370. /* Return Value: int */
  371. /* 0 成功 */
  372. /* 非0 失败 */
  373. /* notice: */
  374. /* 1:用户通过此接口,往相机发送数据,相机设备会原样将数据 */
  375. /* 通过RS485接口转发出去,到客户所接的外部设备上。 */
  376. /* 2:使用此功能前,需要在演示DEMO的设置界面上,设置相机不 */
  377. /* 能传输识别结果(默认S485传输识别结果)。 */
  378. /************************************************************************/
  379. int __stdcall CLIENT_LPRC_RS485Send(char *pCameraIP, int nCameraPort, char *chData, int nSendLen);
  380. /************************************************************************/
  381. /* CLIENT_LPRC_RS485SendEx: 新版本RS485透明传输 */
  382. /* Parameters: */
  383. /* pCameraIP[in] 相机设备IP地址 */
  384. /* nPort[in] 端口,默认9110 */
  385. /* nRs485[in] 传输485数据的结构体 */
  386. /* Return Value: int */
  387. /* 0 成功 */
  388. /* 非0 失败 */
  389. /* notice: */
  390. /* 1:用户通过此接口,往相机发送数据,相机设备会原样将数据 */
  391. /* 通过RS485接口转发出去,到客户所接的外部设备上。 */
  392. /* 2:使用此功能前,需要在演示DEMO的设置界面上,设置相机不 */
  393. /* 能传输识别结果(默认S485传输识别结果)。 */
  394. /* 3:新版本可以一次性给相机发送最大5条数据,可以设置每条数据*/
  395. /* 透传的时间间隔。 */
  396. /************************************************************************/
  397. int __stdcall CLIENT_LPRC_RS485SendEx(char *pCameraIP, int nCameraPort, CLIENT_LPRC_RS485_Transparent_t nRs485);
  398. /************************************************************************/
  399. /* CLIENT_LPRC_SearchDeviceList: 搜索设备IP列表 */
  400. /* Parameters: */
  401. /* pBuf[out] 存储搜索到的相机列表信息结构体数组 */
  402. /* Return Value: int */
  403. /* 大于0 成功搜索到的设备数 */
  404. /* -1 失败 */
  405. /************************************************************************/
  406. int __stdcall CLIENT_LPRC_SearchDeviceList(CLIENT_LPRC_DeviceInfo *pBuf);
  407. /************************************************************************/
  408. /* CLIENT_LPRC_AlterDeviceInfo: 修改指定的设备的设备信息 */
  409. /* Parameters: */
  410. /* pCameraIP[in] 需要修改的相机设备的ip地址 */
  411. /* pBuf[out] 存储需要修改的设备信息结构体 */
  412. /* Return Value: int */
  413. /* ==0 成功 */
  414. /* 非0 失败 */
  415. /************************************************************************/
  416. int __stdcall CLIENT_LPRC_AlterDeviceInfo(char *pCameraIP,CLIENT_LPRC_DeviceInfo pBuf);
  417. /************************************************************************/
  418. /* CLIENT_LPRC_GetDeviceInfo 根据IP获取设备的设备信息 */
  419. /* Parameters: */
  420. /* pCameraIP[in] 相机设备的ip地址 */
  421. /* pBuf[out] 存储设备信息结构体 */
  422. /* Return Value: int */
  423. /* ==0 成功 */
  424. /* 非0 失败 */
  425. /************************************************************************/
  426. int __stdcall CLIENT_LPRC_GetDeviceInfo(char *pCameraIP,CLIENT_LPRC_DeviceInfo *pBuf);
  427. /************************************************************************/
  428. /* CLIENT_LPRC_SetDevTimeParam: 修改设备系统时间 */
  429. /* Parameters: */
  430. /* pCameraIP[in] 需要修改的相机设备的ip地址 */
  431. /* sysTime[in] 设置时间结构体 */
  432. /* Return Value: int */
  433. /* ==0 成功 */
  434. /* 非0 失败 */
  435. /************************************************************************/
  436. int __stdcall CLIENT_LPRC_SetDevTimeParam(char *pCameraIP, CLIENT_LPRC_CAMERA_TIME *sysTime);
  437. int __stdcall CLIENT_LPRC_GetDevTimeParam(char *pCameraIP, CLIENT_LPRC_CAMERA_TIME *sysTime);
  438. /************************************************************************/
  439. /* CLIENT_LPRC_SetEncryptKey: 设置加密芯片密码 */
  440. /* Parameters: */
  441. /* pCameraIP[in] 需要修改的相机设备的ip地址 */
  442. /* nKey[in] 加密芯片密码,8个字节大小 */
  443. /* Return Value: int */
  444. /* ==0 成功 */
  445. /* 非0 失败 */
  446. /************************************************************************/
  447. int __stdcall CLIENT_LPRC_SetEncryptKey(char *pCameraIP, unsigned_long_long nKey);
  448. /************************************************************************/
  449. /* CLIENT_LPRC_ReSetEncryptKey: 重置加密芯片密码,密码恢复为123456 */
  450. /* 并且用户数据恢复为空 */
  451. /* Parameters: */
  452. /* pCameraIP[in] 需要修改的相机设备的ip地址 */
  453. /* Return Value: int */
  454. /* ==0 成功 */
  455. /* 非0 失败 */
  456. /************************************************************************/
  457. int __stdcall CLIENT_LPRC_ReSetEncryptKey(char *pCameraIP);
  458. /************************************************************************/
  459. /* CLIENT_LPRC_SetEncryptUserData: 设置加密芯片用户数据,密码必须匹配才可以成功*/
  460. /* Parameters: */
  461. /* pCameraIP[in] 需要修改的相机设备的ip地址 */
  462. /* nKey[in] 加密芯片密码,8个字节大小 */
  463. /* pUserData[in] 加密芯片用户数据指针,大小24个字节 */
  464. /* Return Value: int */
  465. /* ==0 成功 */
  466. /* 非0 失败 */
  467. /************************************************************************/
  468. int __stdcall CLIENT_LPRC_SetEncryptUserData(char *pCameraIP, unsigned_long_long nKey,char *pUserData);
  469. /************************************************************************/
  470. /* CLIENT_LPRC_GetEncryptUserData: 设置加密芯片用户数据,密码必须匹配才可以成功*/
  471. /* Parameters: */
  472. /* pCameraIP[in] 需要修改的相机设备的ip地址 */
  473. /* nKey[in] 加密芯片密码,8个字节大小 */
  474. /* pUserData[out] 存储读取到的用户数据 */
  475. /* Return Value: int */
  476. /* ==0 成功 */
  477. /* 非0 失败 */
  478. /************************************************************************/
  479. int __stdcall CLIENT_LPRC_GetEncryptUserData(char *pCameraIP, unsigned_long_long nKey,char *pUserData);
  480. /************************************************************************/
  481. /* CLIENT_LPRC_TextToSoundPlay: 文字转音频播报 */
  482. /* Parameters: */
  483. /* pCameraIP[in] 设备的ip地址 */
  484. /* data[in] 需要播报的内容[UTF-8编码] */
  485. /* len[in] 需要播报的内容长度 */
  486. /* Return Value: int */
  487. /* ==0 成功 */
  488. /* 非0 失败 */
  489. /* notice: */
  490. /* 播报的内容必须为UTF-8编码 */
  491. /************************************************************************/
  492. int __stdcall CLIENT_LPRC_TextToSoundPlay(char *pCameraIP, char *data, int len);
  493. /************************************************************************/
  494. /* CLIENT_LPRC_SetGPioOutParam: 设置GPIO 是输出状态 */
  495. /* Parameters: */
  496. /* pCameraIP[in] 需要设置的相机设备的ip地址 */
  497. /* pGpioOut[in] GPIO输出可控制结构体,0表示继电器断开,1表示继电器闭合,-1不改变*/
  498. /* Return Value: int */
  499. /* 0 成功 */
  500. /* 非0 失败 */
  501. /************************************************************************/
  502. int __stdcall CLIENT_LPRC_SetGPioOutParam(char *pCameraIP, CLIENT_LPRC_GPIO_Out_Statue *pGpioOut);
  503. /************************************************************************/
  504. /* CLIENT_LPRC_SetNetParam: 设置网络参数 */
  505. /* Parameters: */
  506. /* pCameraIP[in] 需要设置的相机设备的ip地址 */
  507. /* netSetParam[in] 需要设置的网络参数,不需要设置的项目memset为0*/
  508. /* Return Value: int */
  509. /* 0 成功 */
  510. /* 非0 失败 */
  511. /************************************************************************/
  512. int __stdcall CLIENT_LPRC_SetNetParam(char *pCameraIP, CLIENT_LPRC_Net_Set_Param *netSetParam);
  513. typedef enum CLIENT_UPGRADE_STATUS
  514. {
  515. UPGRADE_FILE_CONNECT_SUCCESS = 0, // 连接成功
  516. UPGRADE_FILE_CONNECT_FAIL = 1, // 连接失败
  517. UPGRADE_FILE_NO_ACCESS = 2, // 升级文件不存在
  518. UPGRADE_FILE_OPEN_SUCCESS = 3, // 升级文件打开成功
  519. UPGRADE_FILE_OPEN_FAIL = 4, // 升级文件打开失败
  520. UPGRADE_FILE_READ_HEAD_SUCCESS = 5, // 升级文件读取文件头信息成功
  521. UPGRADE_FILE_READ_HEAD_FAIL = 6, // 升级文件读取文件头信息失败
  522. UPGRADE_FILE_SEND_HEAD_SUCCESS = 7, // 升级文件发送文件头信息成功
  523. UPGRADE_FILE_SEND_HEAD_FAIL = 8, // 升级文件发送文件头信息失败
  524. UPGRADE_FILE_RECV_HEAD_RESPONSE_SUCCESS = 9, // 升级文件接收头信息响应成功
  525. UPGRADE_FILE_RECV_HEAD_RESPONSE_FAIL = 10, // 升级文件接收头信息响应失败
  526. UPGRADE_FILE_VERSION_CHECK_SUCCESS = 11, // 升级文件版本检查通过
  527. UPGRADE_FILE_VERSION_CHECK_FAIL = 12, // 升级文件版本检查不通过
  528. UPGRADE_FILE_START_SEND = 13, // 升级文件正在发送
  529. UPGRADE_FILE_SEND_DONE = 14, // 升级文件发送完成
  530. UPGRADE_FILE_SEND_FAIL = 15, // 升级文件发送失败
  531. UPGRADE_FILE_SEND_DONE_RESPONSE_SUCCESS = 16, // 升级文件接收发送完成响应成功
  532. UPGRADE_FILE_SEND_DONE_RESPONSE_FAIL = 17, // 升级文件接收发送完成响应失败
  533. UPGRADE_FILE_UNZIP_SUCCESS = 18, // 升级文件解压成功
  534. UPGRADE_FILE_UNZIP_FAIL = 19, // 升级文件解压失败
  535. UPGRADE_SYSTEM_READY_RESTART = 20, // 系统准备重启
  536. }CLIENT_UPGRADE_STATUS;
  537. typedef void (*CLIENT_LPRC_UpgradeCallback)(int status, int send_size, int total_size);
  538. int __stdcall CLIENT_LPRC_UpGrade(char *pCameraIP, char* filename,CLIENT_LPRC_UpgradeCallback callback);
  539. /*************************************************************************************************************/
  540. /****************************以下接口属于较早版本,V5相机可能不再会提供支持***********************************/
  541. /**********************************请客户挂接时候,尽量使用以上接口*******************************************/
  542. /*************************************************************************************************************/
  543. /************************************************************************/
  544. /* 回调函数: 获取Jpeg流的回调函数 */
  545. /* Parameters: */
  546. /* JpegInfo[out]: JPEG流数据信息 */
  547. /* dwUser[out] CLIENT_LPRC_InitSDK传给sdk的用户自定义字段*/
  548. /* Return Value: void */
  549. /* */
  550. /* Notice: */
  551. /* 1:一台PC连接多台设备时,此函数仅需实现一次。当区分不同 */
  552. /* 设备的JPEG流时,可以通过输出参数中CLIENT_LPRC_DEVDATA_INFO中的chIp来 */
  553. /* 区分. */
  554. /* 2:此功能目前适用于V5.5.3.0、V6.0.0.0及以上版本, */
  555. /* V5.2.1.0、V5.2.2.0、V5.2.6.0等版本不能使用此功能 */
  556. /************************************************************************/
  557. typedef void (*CLIENT_LPRC_JpegCallback)(CLIENT_LPRC_DEVDATA_INFO *JpegInfo,LDWORD dwUser);
  558. /************************************************************************/
  559. /* CLIENT_LPRC_RegJpegEvent: 注册获取Jpeg流的回调函数 */
  560. /* Parameters: */
  561. /* JpegInfo[in]: CLIENT_LPRC_JpegCallback类型回调函数 */
  562. /* Return Value: void */
  563. /* */
  564. /* Notice: */
  565. /* 1:一台PC连接多台设备时,此函数仅需实现一次。当区分不同 */
  566. /* 设备的JPEG流时,可以通过输出参数中CLIENT_LPRC_DEVDATA_INFO中的chIp来 */
  567. /* 区分. */
  568. /* 2:此功能目前适用于V5.5.3.0、V6.0.0.0及以上版本, */
  569. /* V5.2.1.0、V5.2.2.0、V5.2.6.0等版本不能使用此功能 */
  570. /************************************************************************/
  571. void __stdcall CLIENT_LPRC_RegJpegEvent(CLIENT_LPRC_JpegCallback JpegInfo);
  572. /************************************************************************/
  573. /* 回调函数: 获取报警信息的回调函数 */
  574. /* Parameters: */
  575. /* alarmInfo[out]: 报警信息 */
  576. /* dwUser[out] CLIENT_LPRC_InitSDK传给sdk的用户自定义字段 */
  577. /* Return Value: void */
  578. /* */
  579. /* Notice: */
  580. /* 一台PC连接多台设备时,此函数仅需实现一次。当区分不同设备 */
  581. /* 的Alarm时,可以通过输出参数中CLIENT_LPRC_DEVDATA_INFO中的chIp来区分 */
  582. /* */
  583. /* Notice: */
  584. /* 1:一台PC连接多台设备时,此函数仅需实现一次。当区分不同 */
  585. /* 设备的JPEG流时,可以通过输出参数中LPRC_CLIENT_DEVDATA_INFO中的chIp来 */
  586. /* 区分. */
  587. /* 2:此功能目前适用于V5.5.3.0、V6.0.0.0及以上版本, */
  588. /* V5.2.1.0、V5.2.2.0、V5.2.6.0等版本不能使用此功能 */
  589. /************************************************************************/
  590. typedef void (*CLIENT_LPRC_AlarmCallback)(CLIENT_LPRC_DEVDATA_INFO *alarmInfo,LDWORD dwUser);
  591. /************************************************************************/
  592. /* CLIENT_LPRC_RegAlarmEvent: 注册获取报警信息的回调函数 */
  593. /* Parameters: */
  594. /* AlarmInfo[in]: CLIENT_LPRC_AlarmCallback类型回调函数 */
  595. /* Return Value: void */
  596. /* */
  597. /* Notice: */
  598. /* 1:一台PC连接多台设备时,此函数仅需实现一次。当区分不同 */
  599. /* 设备的JPEG流时,可以通过输出参数中LPRC_CLIENT_DEVDATA_INFO中的chIp来 */
  600. /* 区分. */
  601. /* 2:此功能目前适用于V5.5.3.0、V6.0.0.0及以上版本, */
  602. /* V5.2.1.0、V5.2.2.0、V5.2.6.0等版本不能使用此功能 */
  603. /************************************************************************/
  604. void __stdcall CLIENT_LPRC_RegAlarmEvent(CLIENT_LPRC_AlarmCallback AlarmInfo);
  605. /************************************************************************/
  606. /* 函数: Jpeg流消息处理初始化 */
  607. /* Parameters: */
  608. /* hWndHandle[in]: 接收消息的窗体句柄 */
  609. /* uMsg[in]: 用户自定义消息 */
  610. /* 检测到有数据并准备好缓冲区数据后, */
  611. /* 用::PostMessage 给窗口hWndHandle发送uMsg */
  612. /* 消息,其中WPARAM参数为0,LPARAM参数为0 */
  613. /* chIp[in]: 相机IP地址 */
  614. /* Return Value: int */
  615. /* 0 获取成功 */
  616. /* 1 获取失败 */
  617. /************************************************************************/
  618. int __stdcall CLIENT_LPRC_JpegMessageInit(HWND hWndHandle,UINT uMsg,char *chIp);
  619. /************************************************************************/
  620. /* 函数: 消息方式获取指定IP的相机的Jpeg流数据 */
  621. /* Parameters: */
  622. /* chIp[in]: 相机IP地址 */
  623. /* chJpegBuf[in]: 存储JPEG的buffer */
  624. /* nJpegBufLen[in]: 获取到的JPEG数据长度 */
  625. /* Return Value: int */
  626. /* 0 获取成功 */
  627. /* 1 获取失败 */
  628. /* Notice: */
  629. /* 使用此函数前需先调用CLIENT_JpegMessageInit函数设置自定义消息 */
  630. /************************************************************************/
  631. int __stdcall CLIENT_LPRC_GetJpegStream(char *chIp, char *chJpegBuf, char *nJpegBufLen);
  632. /************************************************************************/
  633. /* CLIENT_LPRC_SetNetworkCardBind: 手动绑定指定网卡IP */
  634. /* Parameters: */
  635. /* pCameraIP[in] 要绑定的网卡IP地址 */
  636. /* Return Value: int */
  637. /* 0 成功 */
  638. /* 非0 失败 */
  639. /* notice:当PC机存在多网卡的情况时,又不想禁用为单网卡时,可通过该 */
  640. /* 函数绑定与相机通讯的网卡IP */
  641. /************************************************************************/
  642. int __stdcall CLIENT_LPRC_SetNetworkCardBind(char *pCameraIP);
  643. /************************************************************************/
  644. /* CLIENT_LPRC_SetNetCardName: 设置网卡的名字 */
  645. /* Parameters: */
  646. /* pNetCardName[in] Linux网络节点的名字 */
  647. /* Return Value: int */
  648. /* 0 成功 */
  649. /* 非0 失败 */
  650. /* notice: 此函数仅在Linux下使用,不设置默认的网络节点名字为eth0 */
  651. /************************************************************************/
  652. int __stdcall CLIENT_LPRC_SetNetCardName(char *pNetCardName);
  653. /************************************************************************/
  654. /*CLIENT_LPRC_SnapJpegFrame 快速抓拍一帧,两种保存方式,直接保存到固定目*/
  655. /* 录或者保存到特定内存,要是保存特定内存模式需要传入 */
  656. /* 内存最大值,两种方式可选 */
  657. /* Parameters: */
  658. /* chIp[in] 相机的IP地址 */
  659. /* pSaveFileName[in] 路径和带JPEG后缀名的文件名,用于把当前 */
  660. /* 抓拍到的帧保存为特定文件 默认先匹配 */
  661. /* 文件名 */
  662. /* pSaveBuf[in] 用于保存当前帧在特定内存的,并且需要传输 */
  663. /* 内存可存储的最大值,当文件名为空的时候 */
  664. /* 这个才会生效。 */
  665. /* Maxlen[in] 保存当前帧特定内存的最大值 */
  666. /* Return Value: int */
  667. /* 0 保存到特定目录成功 */
  668. /* >0 保存到特定内存的数据的实际大小 */
  669. /* -1 失败 */
  670. /************************************************************************/
  671. int __stdcall CLIENT_LPRC_SnapJpegFrame(char *chIp,char *pSaveFileName,unsigned char *pSaveBuf,int Maxlen);
  672. /************************************************************************/
  673. /* CLIENT_LPRC_SetJpegStreamPlayOrStop: 设置jpeg流的开关 */
  674. /* Parameters: */
  675. /* pCameraIP[in] 需要设置的相机设备的ip地址 */
  676. /* onoff[in] jpeg流开关项,0表示关闭流,1表示打开流 */
  677. /* Return Value: int */
  678. /* 0 成功 */
  679. /* 非0 失败 */
  680. /************************************************************************/
  681. int __stdcall CLIENT_LPRC_SetJpegStreamPlayOrStop(char *pCameraIP,int onoff);
  682. #ifdef __cplusplus
  683. }
  684. #endif
  685. #endif