Gvar.cpp 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265
  1. // Gvar.cpp: implementation of the Gvar class.
  2. //
  3. //////////////////////////////////////////////////////////////////////
  4. #include "Gvar.h"
  5. #include "log4vendor.h"
  6. //////////////////////////////////////////////////////////////////////
  7. // Construction/Destruction
  8. //////////////////////////////////////////////////////////////////////
  9. Gvar::Gvar()
  10. {
  11. m_hDll = NULL;
  12. m_isLoad = FALSE;
  13. m_trace = NULL;
  14. m_trace = new CILIXTrace(NULL,"HSPScanner","hspscanner.nantian.1.1");
  15. m_connect = FALSE;
  16. HIGH_StartCamera = NULL;
  17. HIGH_GetStatus = NULL;
  18. HIGH_GetFirmwareVersion = NULL;
  19. HIGH_StopCamera = NULL;
  20. HIGH_SetColorType = NULL;
  21. HIGH_SetRotateSize = NULL;
  22. HIGH_SetAutoCrop = NULL;
  23. HIGH_CreateWindow = NULL;
  24. HIGH_TakePicture = NULL;
  25. HIGH_SetCameraPixel = NULL;
  26. HIGH_GetHPixelByIndex = NULL;
  27. HIGH_GetVPixelByIndex = NULL;
  28. HIGH_CloseWindow = NULL;
  29. HIGH_HideWindow = NULL;
  30. char INIPath[100] = "";
  31. CILIX_AUX_X::CILIX_GetModuleCurPath(INIPath);
  32. strcat(INIPath, "hspscanner.nantian.ini");
  33. char log_dir[100] = "";
  34. CILIX_AUX_X::CILIX_X_INIKeyString(INIPath, "LOGConfig", "log_dir", log_dir, "/etc/nantian");
  35. char log_level[100] = "";
  36. CILIX_AUX_X::CILIX_X_INIKeyString(INIPath, "LOGConfig", "log_level", log_level, "3");
  37. cmb::log_init_config config;
  38. config.dev_name = "HSPScannerGvr";
  39. config.log_dir = log_dir;
  40. config.log_level = atoi(log_level);
  41. std::string str;
  42. cmb::log4vendor::init(config, str);
  43. LOG4VTM(WARN, "<Gvar> - "<<"Enter-");
  44. LOG4VTM(WARN, "<Gvar> - "<<"hspscanner.nantian.1.1.so - 版本:V1.0.0.8");
  45. LoadDll();
  46. LOG4VTM(WARN, "<Gvar> - "<<"Exit-");
  47. }
  48. Gvar::~Gvar()
  49. {
  50. if (m_hDll != NULL)
  51. {
  52. FreeDll();
  53. }
  54. if (m_trace)
  55. {
  56. delete m_trace;
  57. m_trace = NULL;
  58. }
  59. }
  60. void Gvar::LoadDll()
  61. {
  62. LOG4VTM(WARN, "<LoadDll> - "<<"Enter-");
  63. char confile[1024] = "";
  64. CILIX_AUX_X::CILIX_GetModuleCurPath(confile);
  65. char dllPath[1024] = "";
  66. strcpy(dllPath,confile);
  67. strcat(dllPath,"nantian/libBHCamBase.nantian.so");
  68. m_trace->WriteTrace(CILIXTRACE_L_INFO,"LoadDll","版本:V1.0.0.8");
  69. m_trace->WriteTrace(CILIXTRACE_L_INFO,"LoadDll","驱动库路径dll1Path=%s",dllPath);
  70. LOG4VTM(WARN, "<LoadDll> - "<<"驱动库路径dllPath = "<<dllPath);
  71. m_hDll = dlopen(dllPath,RTLD_LAZY);
  72. if (m_hDll == NULL)
  73. {
  74. m_trace->WriteTrace(CILIXTRACE_L_ERROR,"LoadDll","动态库:%s加载失败",dllPath);
  75. LOG4VTM(WARN, "<LoadDll> - "<<"动态库“libBHCamBase.so”加载失败");
  76. LOG4VTM(WARN, "<LoadDll> - "<<"Exit-");
  77. return;
  78. }
  79. HIGH_StartCamera = (pHIGH_StartCamera)dlsym(m_hDll,"HIGH_StartCamera");
  80. if (HIGH_StartCamera == NULL)
  81. {
  82. m_trace->WriteTrace(CILIXTRACE_L_ERROR,"LoadDll","动态库函数HIGH_StartCamera加载失败");
  83. LOG4VTM(WARN, "<LoadDll> - "<<"动态库函数HIGH_StartCamera加载失败");
  84. LOG4VTM(WARN, "<LoadDll> - "<<"Exit-");
  85. return;
  86. }
  87. HIGH_GetStatus = (pHIGH_GetStatus)dlsym(m_hDll,"HIGH_GetStatus");
  88. if (HIGH_GetStatus == NULL)
  89. {
  90. m_trace->WriteTrace(CILIXTRACE_L_ERROR,"LoadDll","动态库函数HIGH_GetStatus加载失败");
  91. LOG4VTM(WARN, "<LoadDll> - "<<"动态库函数HIGH_GetStatus加载失败");
  92. LOG4VTM(WARN, "<LoadDll> - "<<"Exit-");
  93. return;
  94. }
  95. HIGH_GetFirmwareVersion = (pHIGH_GetFirmwareVersion)dlsym(m_hDll,"HIGH_GetFirmwareVersion");
  96. if (HIGH_GetFirmwareVersion == NULL)
  97. {
  98. m_trace->WriteTrace(CILIXTRACE_L_ERROR,"LoadDll","动态库函数HIGH_GetFirmwareVersion加载失败");
  99. LOG4VTM(WARN, "<LoadDll> - "<<"动态库函数HIGH_GetFirmwareVersion加载失败");
  100. LOG4VTM(WARN, "<LoadDll> - "<<"Exit-");
  101. return;
  102. }
  103. HIGH_StopCamera = (pHIGH_StopCamera)dlsym(m_hDll,"HIGH_StopCamera");
  104. if (HIGH_StopCamera == NULL)
  105. {
  106. m_trace->WriteTrace(CILIXTRACE_L_ERROR,"LoadDll","动态库函数HIGH_StopCamera加载失败");
  107. LOG4VTM(WARN, "<LoadDll> - "<<"动态库函数HIGH_StopCamera加载失败");
  108. LOG4VTM(WARN, "<LoadDll> - "<<"Exit-");
  109. return;
  110. }
  111. HIGH_SetColorType = (pHIGH_SetColorType)dlsym(m_hDll,"HIGH_SetColorType");
  112. if (HIGH_SetColorType == NULL)
  113. {
  114. m_trace->WriteTrace(CILIXTRACE_L_ERROR,"LoadDll","动态库函数HIGH_SetColorType加载失败");
  115. LOG4VTM(WARN, "<LoadDll> - "<<"动态库函数HIGH_SetColorType加载失败");
  116. LOG4VTM(WARN, "<LoadDll> - "<<"Exit-");
  117. return;
  118. }
  119. HIGH_SetRotateSize = (pHIGH_SetRotateSize)dlsym(m_hDll,"HIGH_SetRotateSize");
  120. if (HIGH_SetRotateSize == NULL)
  121. {
  122. m_trace->WriteTrace(CILIXTRACE_L_ERROR,"LoadDll","动态库函数HIGH_SetRotateSize加载失败");
  123. LOG4VTM(WARN, "<LoadDll> - "<<"动态库函数HIGH_SetRotateSize加载失败");
  124. LOG4VTM(WARN, "<LoadDll> - "<<"Exit-");
  125. return;
  126. }
  127. HIGH_SetAutoCrop = (pHIGH_SetAutoCrop)dlsym(m_hDll,"HIGH_SetAutoCrop");
  128. if (HIGH_SetAutoCrop == NULL)
  129. {
  130. m_trace->WriteTrace(CILIXTRACE_L_ERROR,"LoadDll","动态库函数HIGH_SetAutoCrop加载失败");
  131. LOG4VTM(WARN, "<LoadDll> - "<<"动态库函数HIGH_SetAutoCrop加载失败");
  132. LOG4VTM(WARN, "<LoadDll> - "<<"Exit-");
  133. return;
  134. }
  135. HIGH_CreateWindow = (pHIGH_CreateWindow)dlsym(m_hDll,"HIGH_CreateWindow");
  136. if (HIGH_CreateWindow == NULL)
  137. {
  138. m_trace->WriteTrace(CILIXTRACE_L_ERROR,"LoadDll","动态库函数HIGH_CreateWindow加载失败");
  139. LOG4VTM(WARN, "<LoadDll> - "<<"动态库函数HIGH_CreateWindow加载失败");
  140. LOG4VTM(WARN, "<LoadDll> - "<<"Exit-");
  141. return;
  142. }
  143. HIGH_TakePicture = (pHIGH_TakePicture)dlsym(m_hDll,"HIGH_TakePicture");
  144. if (HIGH_TakePicture == NULL)
  145. {
  146. m_trace->WriteTrace(CILIXTRACE_L_ERROR,"LoadDll","动态库函数HIGH_TakePicture加载失败");
  147. LOG4VTM(WARN, "<LoadDll> - "<<"动态库函数HIGH_TakePicture加载失败");
  148. LOG4VTM(WARN, "<LoadDll> - "<<"Exit-");
  149. return;
  150. }
  151. HIGH_SetCameraPixel = (pHIGH_SetCameraPixel)dlsym(m_hDll,"HIGH_SetCameraPixel");
  152. if (HIGH_SetCameraPixel == NULL)
  153. {
  154. m_trace->WriteTrace(CILIXTRACE_L_ERROR,"LoadDll","动态库函数HIGH_SetCameraPixel加载失败");
  155. LOG4VTM(WARN, "<LoadDll> - "<<"动态库函数HIGH_SetCameraPixel加载失败");
  156. LOG4VTM(WARN, "<LoadDll> - "<<"Exit-");
  157. return;
  158. }
  159. HIGH_GetHPixelByIndex = (pHIGH_GetHPixelByIndex)dlsym(m_hDll,"HIGH_GetHPixelByIndex");
  160. if (HIGH_GetHPixelByIndex == NULL)
  161. {
  162. m_trace->WriteTrace(CILIXTRACE_L_ERROR,"LoadDll","动态库函数HIGH_GetHPixelByIndex加载失败");
  163. LOG4VTM(WARN, "<LoadDll> - "<<"动态库函数HIGH_GetHPixelByIndex加载失败");
  164. LOG4VTM(WARN, "<LoadDll> - "<<"Exit-");
  165. return;
  166. }
  167. HIGH_GetVPixelByIndex = (pHIGH_GetVPixelByIndex)dlsym(m_hDll,"HIGH_GetVPixelByIndex");
  168. if (HIGH_GetVPixelByIndex == NULL)
  169. {
  170. m_trace->WriteTrace(CILIXTRACE_L_ERROR,"LoadDll","动态库函数HIGH_GetVPixelByIndex加载失败");
  171. LOG4VTM(WARN, "<LoadDll> - "<<"动态库函数HIGH_GetVPixelByIndex加载失败");
  172. LOG4VTM(WARN, "<LoadDll> - "<<"Exit-");
  173. return;
  174. }
  175. HIGH_CloseWindow = (pHIGH_CloseWindow)dlsym(m_hDll,"HIGH_CloseWindow");
  176. if (HIGH_CloseWindow == NULL)
  177. {
  178. m_trace->WriteTrace(CILIXTRACE_L_ERROR,"LoadDll","动态库函数HIGH_CloseWindow加载失败");
  179. LOG4VTM(WARN, "<LoadDll> - "<<"动态库函数HIGH_CloseWindow加载失败");
  180. LOG4VTM(WARN, "<LoadDll> - "<<"Exit-");
  181. return;
  182. }
  183. HIGH_HideWindow = (pHIGH_HideWindow)dlsym(m_hDll,"HIGH_HideWindow");
  184. if (HIGH_HideWindow == NULL)
  185. {
  186. m_trace->WriteTrace(CILIXTRACE_L_ERROR,"LoadDll","动态库函数HIGH_HideWindow加载失败");
  187. LOG4VTM(WARN, "<LoadDll> - "<<"动态库函数HIGH_HideWindow加载失败");
  188. LOG4VTM(WARN, "<LoadDll> - "<<"Exit-");
  189. return;
  190. }
  191. m_isLoad = TRUE;
  192. m_trace->WriteTrace(CILIXTRACE_L_INFO,"LoadDll","动态库加载成功退出接口");
  193. LOG4VTM(WARN, "<LoadDll> - "<<"动态库加载成功退出接口");
  194. LOG4VTM(WARN, "<LoadDll> - "<<"Exit-");
  195. return ;
  196. }
  197. void Gvar::FreeDll()
  198. {
  199. if (m_hDll)
  200. {
  201. dlclose(m_hDll);
  202. m_hDll = NULL;
  203. }
  204. }
  205. int Gvar::WriteFileEx(char *filename, char *Value, int ValueLen)
  206. {
  207. FILE *fp;
  208. if(NULL == (fp = fopen(filename, "w+"))) {
  209. perror("fopen");
  210. return -1;
  211. }
  212. fwrite(Value, 1, ValueLen, fp);
  213. fclose(fp);
  214. return 0;
  215. }
  216. int Gvar::ReadFileEx(char *filename, char *Value, int *ValueLen)
  217. {
  218. FILE *fp;
  219. if(NULL == (fp = fopen(filename, "r"))) {
  220. perror("fopen");
  221. return -1;
  222. }
  223. fseek(fp, 0L, SEEK_END);
  224. *ValueLen = ftell(fp);
  225. fseek(fp, 0L, SEEK_SET);
  226. int f = fread(Value, 1, *ValueLen, fp);
  227. fclose(fp);
  228. return 0;
  229. }
  230. void Gvar::CreateFileEx(char* path,char* data,int ilen)
  231. {
  232. int i = 0;
  233. char FilePath[100] = "";
  234. FilePath[0] = path[0];
  235. for(i= 1; i<=strlen(path); i++)
  236. {
  237. FilePath[i] = path[i];
  238. if(path[i] == '/')
  239. {
  240. if(access(FilePath, F_OK) != 0)
  241. {
  242. mkdir(FilePath,S_IRUSR | S_IWUSR | S_IXUSR | S_IRWXG | S_IRWXO);
  243. }
  244. }
  245. }
  246. WriteFileEx(FilePath,data,ilen);
  247. }