devlibrary.h 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267
  1. #ifndef _BHCAMBASE_h_
  2. #define _BHCAMBASE_h_
  3. //设备状态
  4. #define FR_DS_ONLINE 0 //设备在线
  5. #define FR_DS_OFFLINE 1 //设备掉线
  6. #define FR_DS_BUSY 2 //设备忙
  7. #define FR_DS_HARDWAREERROR 3 //设备硬件故障
  8. #define FR_DS_UNKNOW 4 //未知错误
  9. // 错误码
  10. #define FR_RET_SUCC 0 // 成功
  11. #define FR_RET_FAIL -1 // 失败
  12. #define FR_RET_PARA -2 // 参数错误
  13. #define FR_RET_NDEV -3 // 打开设备失败
  14. #define FR_RET_NINI -4 // 未打开设备
  15. #define FR_RET_BUSY -5 // 设备繁忙
  16. #define FR_RET_DATA -6 // 图像数据不正确
  17. #define FR_RET_NLNK -7 // 设备断开
  18. #define FR_RET_NMEM -10 // 内存分配失败
  19. #define FR_RET_ARDY -11 // 已经打开设备
  20. /**
  21. *@brief 打开高拍仪(只能打开自己厂商的高拍仪类型, 不能打开其他厂商的摄像头 也不能打开自己厂商的其他摄像头)
  22. *@param[in] 无
  23. *@param[out] 无
  24. *@return 成功返回0,失败返回其他
  25. **/
  26. int HIGH_StartCamera();
  27. /**
  28. * @brief 获得固件版本,在初始化资源HIGH_StartCamera后调用
  29. * @param[out] szVersion 固件版本,格式:厂商+高拍仪型号+PIDVID(彩色高拍仪)+固件版本号/固件修改日期
  30. * @return 成功返回0,失败返回其他
  31. **/
  32. int HIGH_GetFirmwareVersion(char szVersion[64]);
  33. /**
  34. *@brief 获取设备状态
  35. *@param[in][out]piStatus设备状态:参考设备状态宏定义
  36. *@return 无
  37. **/
  38. void HIGH_GetStatus(int* piStatus);
  39. /**
  40. * @brief 关闭高拍仪
  41. * @param[in] 无
  42. * @param[out] 无
  43. * @return 成功返回0,失败返回其他
  44. **/
  45. int HIGH_StopCamera();
  46. /**
  47. * @brief 设置拍照自动纠编 设置为自动纠编时 预览HIGH_CreateWindow时需要实时画出红框框住目标 拍照HIGH_TakePicture时图片为自动获取目标后裁剪的图片
  48. * @param[in] bAuto
  49. * 是否自动纠编 0:否 1:是
  50. * @param[out] 无
  51. * @return 成功返回0,失败返回其他
  52. **/
  53. int HIGH_SetAutoCrop(bool bAuto);
  54. /**
  55. *@brief 设置高拍仪分辨率
  56. * @param[in] nHPixel
  57. * 水平分辨率
  58. * @param[in] nVPixel
  59. * 垂直分辨率
  60. *@param[out] 无
  61. *@return 成功返回0,失败返回其他
  62. **/
  63. int HIGH_SetCameraPixel(int nHPixel, int nVPixel);
  64. /**
  65. *@brief 设置高拍仪旋转角度
  66. * @param[in] nRotateSize
  67. * 旋转角度,0:不旋转 1:90度 2:180度 3:270度
  68. *@param[out] 无
  69. *@return 成功返回0,失败返回其他
  70. **/
  71. int HIGH_SetRotateSize(int nRotateSize);
  72. /**
  73. *@brief 设置高拍仪色彩类型
  74. * @param[in] nColorType
  75. * 色彩类型,0:彩色(24bpp) 1:灰度(黑白) 2:黑白(素描)
  76. *@param[out] 无
  77. *@return 成功返回0,失败返回其他
  78. **/
  79. int HIGH_SetColorType(int nColorType);
  80. /**
  81. *@brief 设置高拍仪图片质量
  82. * @param[in] nJPGQuality
  83. * 图片质量
  84. *@param[out] 无
  85. *@return 成功返回0,失败返回其他
  86. **/
  87. int HIGH_SetJPGQuality(int nJPGQuality);
  88. /**
  89. *@brief 获取高拍仪像素个数
  90. *@param[in] 无
  91. *@param[out] 无
  92. *@return 成功返回像素个数,失败返回其他
  93. **/
  94. int HIGH_GetPixelNum();
  95. /**
  96. *@brief 根据像素获取高拍仪像素宽度
  97. *@param[in] nIndex
  98. * 像素索引
  99. *@param[out] 无
  100. *@return 成功返回像素索引对应的宽度,失败返回其他
  101. **/
  102. int HIGH_GetHPixelByIndex(int nIndex);
  103. /**
  104. *@brief 根据像素获取高拍仪像素高度
  105. *@param[in] nIndex
  106. * 像素索引
  107. *@param[out] 无
  108. *@return 成功返回像素索引对应的高度,失败返回其他
  109. **/
  110. int HIGH_GetVPixelByIndex(int nIndex);
  111. /**
  112. * @brief 创建预览窗口,并开始预览。调用此函数表示需要驱动库实现窗口显示
  113. * 该接口为非阻塞接口,上层可随时调用HIGH_CloseWindow函数来关闭窗口。
  114. * @param[in] iX
  115. * 窗口左上角X坐标,ulWndHandle为空表示X坐标相对于屏幕,否则X坐标相对于预览窗口;
  116. * @param[in] iY
  117. * 窗口左上角Y坐标,ulWndHandle为空表示Y坐标相对于屏幕,否则Y坐标相对于预览窗口;
  118. * @param[in] iWidth
  119. * 窗口宽度;
  120. * @param[in] iHeight
  121. * 窗口高度;
  122. * @return 参考函数返回结果宏定义
  123. **/
  124. int HIGH_CreateWindow(int iX, int iY, int iWidth, int iHeight);
  125. /**
  126. * @brief 关闭预览窗口。
  127. * @return 参考函数返回结果宏定义
  128. **/
  129. int HIGH_CloseWindow();
  130. /**
  131. * @brief 预览暂停/恢复
  132. * @param[in] isPause true 暂停,false 恢复
  133. * @param[out] 无
  134. * @return 成功返回0,失败返回其他
  135. **/
  136. int HIGH_PauseAndPlay(bool isPause);
  137. /**
  138. * @brief 拍照,如果在HIGH_PauseAndPlay之后调用,拍的是暂停时的那一帧照片
  139. * @param[in] strFilePath 图片路径
  140. * @param[out] 无
  141. * @return 成功返回0,失败返回其他
  142. **/
  143. int HIGH_TakePicture(const char* strFilePath);
  144. // 设备
  145. typedef int (*lpHIGH_StartCamera)();
  146. typedef int (*lpHIGH_GetFirmwareVersion)(char szVersion[64]);
  147. typedef void (*lpHIGH_GetStatus)(int* piStatus);
  148. typedef int (*lpHIGH_StopCamera)();
  149. typedef int (*lpHIGH_SetAutoCrop)(bool bAuto);
  150. typedef int (*lpHIGH_SetCameraPixel)(int nHPixel, int nVPixel);
  151. typedef int (*lpHIGH_SetRotateSize)(int nRotateSize);
  152. typedef int (*lpHIGH_SetColorType)(int nColorType);
  153. typedef int (*lpHIGH_SetJPGQuality)(int nJPGQuality);
  154. typedef int (*lpHIGH_GetPixelNum)();
  155. typedef int (*lpHIGH_GetHPixelByIndex)(int nIndex);
  156. typedef int (*lpHIGH_GetVPixelByIndex)(int nIndex);
  157. typedef int (*lpHIGH_CreateWindow)(int iX, int iY, int iWidth, int iHeight);
  158. typedef int (*lpHIGH_HideWindow)(bool isPause);
  159. typedef int (*lpHIGH_CloseWindow)();
  160. typedef int (*lpHIGH_PauseAndPlay)(bool isPause);
  161. typedef int (*lpHIGH_TakePicture)(const char* strFilePath);
  162. class CDevDllLoad
  163. {
  164. public:
  165. CDevDllLoad(char * dllpath);
  166. virtual ~CDevDllLoad();
  167. public:
  168. int InitDLL();
  169. int FreeDLL();
  170. private:
  171. char m_dllpath[260];
  172. void *dp_dev=nullptr;
  173. lpHIGH_StartCamera apiHIGH_StartCamera;
  174. lpHIGH_GetFirmwareVersion apiHIGH_GetFirmwareVersion;
  175. lpHIGH_GetStatus apiHIGH_GetStatus;
  176. lpHIGH_StopCamera apiHIGH_StopCamera;
  177. lpHIGH_SetAutoCrop apiHIGH_SetAutoCrop;
  178. lpHIGH_SetCameraPixel apiHIGH_SetCameraPixel;
  179. lpHIGH_SetRotateSize apiHIGH_SetRotateSize;
  180. lpHIGH_SetColorType apiHIGH_SetColorType;
  181. lpHIGH_SetJPGQuality apiHIGH_SetJPGQuality;
  182. lpHIGH_GetPixelNum apiHIGH_GetPixelNum;
  183. lpHIGH_GetHPixelByIndex apiHIGH_GetHPixelByIndex;
  184. lpHIGH_GetVPixelByIndex apiHIGH_GetVPixelByIndex;
  185. lpHIGH_CreateWindow apiHIGH_CreateWindow;
  186. lpHIGH_HideWindow apiHIGH_HideWindow;
  187. lpHIGH_CloseWindow apiHIGH_CloseWindow;
  188. lpHIGH_PauseAndPlay apiHIGH_PauseAndPlay;
  189. lpHIGH_TakePicture apiHIGH_TakePicture;
  190. public:
  191. int HIGH_StartCamera();
  192. int HIGH_GetFirmwareVersion(char szVersion[64]);
  193. void HIGH_GetStatus(int* piStatus);
  194. int HIGH_StopCamera();
  195. int HIGH_SetAutoCrop(bool bAuto);
  196. int HIGH_SetCameraPixel(int nHPixel, int nVPixel);
  197. int HIGH_SetRotateSize(int nRotateSize);
  198. int HIGH_SetColorType(int nColorType);
  199. int HIGH_SetJPGQuality(int nJPGQuality);
  200. int HIGH_GetPixelNum();
  201. int HIGH_GetHPixelByIndex(int nIndex);
  202. int HIGH_GetVPixelByIndex(int nIndex);
  203. int HIGH_CreateWindow(int iX, int iY, int iWidth, int iHeight);
  204. int HIGH_HideWindow(bool isPause);
  205. int HIGH_CloseWindow();
  206. int HIGH_PauseAndPlay(bool isPause);
  207. int HIGH_TakePicture(const char* strFilePath);
  208. };
  209. #endif
  210. /**
  211. * 主要方法调用顺序
  212. * 方法名 功能
  213. HIGH_StartCamera 打开高拍仪
  214. HIGH_GetFirmwareVersion 获取固件版本
  215. HIGH_GetStatus 获取设备状态
  216. HIGH_SetAutoCrop 设置拍照自动纠编
  217. HIGH_SetCameraPixel 设置高拍仪分辨率
  218. HIGH_CreateWindow 创建预览窗口,并开始预览。
  219. HIGH_TakePicture 拍照
  220. HIGH_CloseWindow 关闭预览窗口
  221. HIGH_StopCamera 关闭高拍仪
  222. **/