FingerPrint_impl.cpp 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239
  1. #include "FingerPrint_impl.h"
  2. #include "FingerPrint_httpans.h"
  3. #include <cstring>
  4. #include <cstdio>
  5. #include "log4vendor.h"
  6. #include <path.h>
  7. void writeFile(const char* filename)
  8. {
  9. FILE* fp = fopen(filename, "wb");
  10. fprintf(fp, "fingerImage");
  11. string content = "fingerImage";
  12. fwrite(content.c_str(), content.length(), 1, fp);
  13. fclose(fp);
  14. }
  15. FingerPrintImpl::FingerPrintImpl()
  16. {
  17. }
  18. FingerPrintImpl::~FingerPrintImpl()
  19. {
  20. }
  21. ErrorCodeEnum FingerPrintImpl::GetDevCategory(DevCategoryInfo& devCategory)
  22. {
  23. ErrorCodeEnum err = Error_Succeed;
  24. SimulatorDevCategoryAns ans;
  25. err = SimulatorHttpFunction(EntityName, "GetDevCategory", ans);
  26. LOG4VTM(INFO, "GetDevCategory err = " << err);
  27. strcpy(devCategory.szType, ans.szType.c_str());
  28. strcpy(devCategory.szModel, ans.szModel.c_str());
  29. strcpy(devCategory.szVendor, ans.szVendor.c_str());
  30. devCategory.eState = (DevStateEnum)ans.eState;
  31. devCategory.version.wMajor = ans.version.wMajor;
  32. devCategory.version.wMinor = ans.version.wMinor;
  33. devCategory.version.wRevision = ans.version.wRevision;
  34. devCategory.version.wBuild = ans.version.wBuild;
  35. return err;
  36. }
  37. ErrorCodeEnum FingerPrintImpl::Reset()
  38. {
  39. ErrorCodeEnum err = Error_Succeed;
  40. err = SimulatorHttpFunction(EntityName, "Reset");
  41. LOG4VTM(INFO, "Reset err = " << err);
  42. return err;
  43. }
  44. ErrorCodeEnum FingerPrintImpl::DevClose()
  45. {
  46. ErrorCodeEnum err = Error_Succeed;
  47. err = SimulatorHttpFunction(EntityName, "DevClose");
  48. LOG4VTM(INFO, "DevClose err = " << err);
  49. return err;
  50. }
  51. ErrorCodeEnum FingerPrintImpl::GetLastErr(DevErrorInfo& devErrInfo)
  52. {
  53. ErrorCodeEnum err = Error_Succeed;
  54. SimulatorDevErrInfoAns ans;
  55. err = SimulatorHttpFunction(EntityName, "GetLastErr", ans);
  56. LOG4VTM(INFO, "GetLastErr err = " << err);
  57. devErrInfo.dwErrMsgLen = ans.dwErrMsgLen;
  58. strcpy(devErrInfo.szErrMsg, ans.szErrMsg.c_str());
  59. return err;
  60. }
  61. ErrorCodeEnum FingerPrintImpl::DevOpen(DWORD dwPort, DWORD dwBaudRate)
  62. {
  63. ErrorCodeEnum err = Error_Succeed;
  64. err = SimulatorHttpFunction(EntityName, "DevOpen");
  65. LOG4VTM(INFO, "DevOpen err = " << err);
  66. return err;
  67. }
  68. ErrorCodeEnum FingerPrintImpl::Image2Feature(const char* imageName, LPBYTE lpbFeature, int& iLength)
  69. {
  70. ErrorCodeEnum err = Error_Succeed;
  71. Image2FeatureAns ans;
  72. err = SimulatorHttpFunction(EntityName, "Image2Feature", ans);
  73. LOG4VTM(INFO, "Image2Feature err = " << err);
  74. if (err == Error_Succeed)
  75. {
  76. //imageName写入的文件,lpbFeature 特征码,iLength特征码长度
  77. string imgName(imageName);
  78. string imgPath = GetCurrentDirectory() + SPLIT_SLASH_STR + imgName;
  79. writeFile(imgPath.c_str());
  80. #ifdef _MSC_VER
  81. strcpy_s((char*)lpbFeature, 1024, ans.lpbFeature.c_str());
  82. #else
  83. strncpy((char*)lpbFeature, ans.lpbFeature.c_str(), 1024);
  84. #endif
  85. iLength = ans.iLength;
  86. }
  87. return err;
  88. }
  89. ErrorCodeEnum FingerPrintImpl::Image2Template(const char* imagePath1, const char* imagePath2, const char* imagePath3, LPBYTE lpbTemplate, int& iLength)
  90. {
  91. //获取模板特征码
  92. LOG4VTM(INFO, "imagePath1 path = " << imagePath1);
  93. LOG4VTM(INFO, "imagePath2 path = " << imagePath2);
  94. LOG4VTM(INFO, "imagePath3 path = " << imagePath3);
  95. ErrorCodeEnum err = Error_Succeed;
  96. Image2TemplateAns ans;
  97. err = SimulatorHttpFunction(EntityName, "Image2Template", ans);
  98. LOG4VTM(INFO, "Image2Template err = " << err);
  99. if (err == Error_Succeed)
  100. {
  101. #ifdef _MSC_VER
  102. strcpy_s((char*)lpbTemplate, 1024, ans.lpbTemplate.c_str());
  103. #else
  104. strncpy((char*)lpbTemplate, ans.lpbTemplate.c_str(), 1024);
  105. #endif
  106. iLength = ans.iLength;
  107. }
  108. return err;
  109. }
  110. ErrorCodeEnum FingerPrintImpl::Match(LPBYTE lpbTemplate[], int iTemplateLen[], int templateNum, LPBYTE lbpFeature, int& iFeatureLen, int level /*= 3*/)
  111. {
  112. ErrorCodeEnum err = Error_Succeed;
  113. MatchAns ans;
  114. err = SimulatorHttpFunction(EntityName, "Match", ans);
  115. LOG4VTM(INFO, "Match err = " << err);
  116. if (err == Error_Succeed)
  117. {
  118. #ifdef _MSC_VER
  119. strcpy_s((char*)lbpFeature, 1024, ans.lbpFeature.c_str());
  120. #else
  121. strncpy((char*)lbpFeature, ans.lbpFeature.c_str(), 1024);
  122. #endif
  123. iFeatureLen = ans.iFeatureLen;
  124. }
  125. return err;
  126. }
  127. ErrorCodeEnum FingerPrintImpl::Cancel()
  128. {
  129. ErrorCodeEnum err = Error_Succeed;
  130. err = SimulatorHttpFunction(EntityName, "Cancel");
  131. LOG4VTM(INFO, "Cancel err = " << err);
  132. return err;
  133. }
  134. #ifdef _MSC_VER
  135. BOOL APIENTRY DllMain(HMODULE hModule,
  136. DWORD ul_reason_for_call,
  137. LPVOID lpReserved
  138. )
  139. {
  140. switch (ul_reason_for_call)
  141. {
  142. case DLL_PROCESS_ATTACH:
  143. case DLL_THREAD_ATTACH:
  144. case DLL_THREAD_DETACH:
  145. case DLL_PROCESS_DETACH:
  146. break;
  147. }
  148. return TRUE;
  149. }
  150. #endif
  151. DEVICEBASE_API ErrorCodeEnum CreateDevComponent(DeviceBaseClass*& pBaseObj)
  152. {
  153. pBaseObj = new FingerPrintImpl();
  154. if (pBaseObj == NULL) {
  155. return Error_Resource;
  156. }
  157. cmb::log_init_config config;
  158. config.dev_name = "vendor_FingerPrint";
  159. #ifdef _MSC_VER
  160. config.log_dir = ("C:\\rvc\\dbg\\");
  161. #else
  162. config.log_dir = ("/opt/rvc/dbg/");
  163. #endif
  164. std::string str;
  165. cmb::log4vendor::init(config, str);
  166. std::string tmpStr = GetSimulatorUrl();
  167. LOG4VTM(INFO, "URL = " << tmpStr.c_str());
  168. return Error_Succeed;
  169. }
  170. DEVICEBASE_API ErrorCodeEnum ReleaseDevComponent(DeviceBaseClass*& pBaseObj)
  171. {
  172. if (pBaseObj == NULL) {
  173. return Error_Param;
  174. }
  175. if (FingerPrintImpl* pTmp = dynamic_cast<FingerPrintImpl*>(pBaseObj))
  176. {
  177. delete pTmp;
  178. pTmp = NULL;
  179. return Error_Succeed;
  180. }
  181. return Error_Param;
  182. }
  183. #ifdef NEWER_COMPILER_WORKAROUNDS
  184. DEVICEBASE_API ErrorCodeEnum GetDevAdapterVersion(DevSoftVersion& retVesion)
  185. {
  186. retVesion.wMajor = retVesion.wMinor = retVesion.wBuild = retVesion.wRevision = 0;
  187. return Error_Succeed;
  188. }
  189. #endif // NEWER_COMPILER_WORKAROUNDS