|
|
@@ -0,0 +1,683 @@
|
|
|
+#include "hspscannerimpl.h"
|
|
|
+//#include "CkDBus.h"
|
|
|
+LOG_EXTERN()
|
|
|
+
|
|
|
+void GetModulePath(char* lpStrPath)
|
|
|
+{
|
|
|
+ LOG_FUNCTION();
|
|
|
+ char szBuff[MAX_PATH];
|
|
|
+ Dl_info path_info;
|
|
|
+ std::string strLog = "";
|
|
|
+ memset(&path_info, 0x00, sizeof(path_info));
|
|
|
+ memset(szBuff, 0x00, sizeof(szBuff));
|
|
|
+ int iRet = dladdr((const void*)GetModulePath, &path_info);
|
|
|
+ if(!iRet)
|
|
|
+ {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ strcpy(szBuff, path_info.dli_fname);
|
|
|
+
|
|
|
+ char *pLast=strrchr(szBuff, '/'); //find last '/'
|
|
|
+
|
|
|
+ if(nullptr != pLast) *pLast = 0; //cut
|
|
|
+
|
|
|
+
|
|
|
+ strcat(szBuff, "/"); //
|
|
|
+
|
|
|
+
|
|
|
+ if(nullptr != lpStrPath)
|
|
|
+ {
|
|
|
+ strcpy(lpStrPath, szBuff);
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+HSPSClassImpl::HSPSClassImpl():
|
|
|
+ m_pDll(nullptr)
|
|
|
+ ,m_bDevOpen(false)
|
|
|
+ ,m_bPreview(false)
|
|
|
+ ,m_bShow(false)
|
|
|
+ ,m_nPort(-1)
|
|
|
+ ,m_strIniPath("")
|
|
|
+ ,m_strDllPath("")
|
|
|
+{
|
|
|
+ LOG_FUNCTION();
|
|
|
+ memset(m_strModulePath, 0x00, sizeof(m_strModulePath));
|
|
|
+ GetModulePath(m_strModulePath); //获取so所在路径
|
|
|
+
|
|
|
+ m_strIniPath = m_strModulePath;
|
|
|
+ m_strIniPath += "CK-VTM-E1000.INI";
|
|
|
+ m_strDllPath = m_strModulePath;
|
|
|
+
|
|
|
+ m_nX = 1280;
|
|
|
+ m_nY = 0;
|
|
|
+ m_nWidth = 1920;
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
+HSPSClassImpl::~HSPSClassImpl()
|
|
|
+{
|
|
|
+ LOG_FUNCTION();
|
|
|
+ DevClose();
|
|
|
+ if(m_pDll != nullptr)
|
|
|
+ {
|
|
|
+ delete m_pDll;
|
|
|
+ }
|
|
|
+ m_bDevOpen = false;
|
|
|
+ m_bPreview = false;
|
|
|
+ m_bShow = false;
|
|
|
+}
|
|
|
+
|
|
|
+ErrorCodeEnum HSPSClassImpl::DevOpen()
|
|
|
+{
|
|
|
+ LOG_FUNCTION();
|
|
|
+ //LogM("HSPSClassImpl::Entry->HSPS DevOpen()!");
|
|
|
+ int iRet;
|
|
|
+ CHAR strDllPath[256] = {0};
|
|
|
+ char sDevInfo[64+1] = {0};
|
|
|
+ char sID[1024] = {0};
|
|
|
+ const char * tmpStr = "libBHCamBase.so";
|
|
|
+ strncat(strDllPath, "libBHCamBase.so",strlen(tmpStr));
|
|
|
+ m_pDll = new CDevDllLoad(strDllPath);
|
|
|
+ if (nullptr == m_pDll)
|
|
|
+ {
|
|
|
+ LogM("HSPSClassImpl::Entry->HSPS DevOpen() new object CDevDllLoad failed!");
|
|
|
+ SaveErrorInfo("对象创建失败", DEC_DEV_OBJECT_CREATE_FAILED);
|
|
|
+ return Error_DevNotAvailable;
|
|
|
+ }
|
|
|
+ iRet = m_pDll->HIGH_StartCamera();
|
|
|
+ //记日志
|
|
|
+ if(iRet != FR_RET_SUCC)
|
|
|
+ {
|
|
|
+ LogM("HSPSClassImpl::Entry->HSPS DevOpen()->m_pDll->HIGH_StartCamera() failed! <=> iRet = %d",iRet);
|
|
|
+ m_bDevOpen = false;
|
|
|
+ SaveErrorInfo("设备未打开", Error_DevNotAvailable);
|
|
|
+ return Error_DevNotAvailable;
|
|
|
+ }
|
|
|
+ LogM("HSPSClassImpl::Entry->HSPS DevOpen()->m_pDll->HIGH_StartCamera() success! <=> iRet = %d",iRet);
|
|
|
+ m_bDevOpen = true;
|
|
|
+ memset(sDevInfo, 0, sizeof(sDevInfo));
|
|
|
+ memset(sID, 0, sizeof(sID));
|
|
|
+ iRet = m_pDll->HIGH_GetFirmwareVersion(sDevInfo);
|
|
|
+ if (iRet == FR_RET_SUCC)
|
|
|
+ {
|
|
|
+ LogM("HSPSClassImpl::Leave->HSPS DevOpen()->m_pDll->HIGH_GetFirmwareVersion sucessfull!");
|
|
|
+ }
|
|
|
+ m_pDll->HIGH_SetCameraPixel(3264,2448);
|
|
|
+
|
|
|
+ return Error_Succeed;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ErrorCodeEnum HSPSClassImpl::GetDevCategory(DevCategoryInfo &devCategory)
|
|
|
+{
|
|
|
+ LOG_FUNCTION();
|
|
|
+ LogM("HSPSClassImpl::Entry->HSPS GetDevCategory()!");
|
|
|
+ int iRet = 0;
|
|
|
+ char szDevInfo[128] = {0};
|
|
|
+ char sID[1024] = {0};
|
|
|
+ //记日志
|
|
|
+ memset(devCategory.szType, 0, MAX_DEV_TYPE_LEN);
|
|
|
+ memset(devCategory.szModel, 0, MAX_DEV_MODEL_LEN);
|
|
|
+ memset(devCategory.szVendor, 0, MAX_DEV_VENDOR_LEN);
|
|
|
+ memset(szDevInfo, 0, sizeof(szDevInfo));
|
|
|
+ memset(sID, 0, sizeof(sID));
|
|
|
+ iRet = m_pDll->HIGH_GetFirmwareVersion(szDevInfo);
|
|
|
+ if(iRet == FR_RET_SUCC)
|
|
|
+ {
|
|
|
+ snprintf(devCategory.szType,sizeof (devCategory.szType) ,"PVER=Kai-wang#MID=%s", szDevInfo);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ //memcpy(devCategory.szType, "PVER=Wellcom#MID=JZT-998APB-V20_V1.0.4.1_SC_[20150320]", strlen("PVER=Wellcom#MID=JZT-998APB-V20_V1.0.4.1_SC_[20150320]"));
|
|
|
+ SaveErrorInfo(iRet);
|
|
|
+ return Error_DevConnFailed;
|
|
|
+ }
|
|
|
+ memcpy(devCategory.szVendor, "keba", strlen("keba"));
|
|
|
+ LogM("devCategory.szType = %s",devCategory.szType);
|
|
|
+ LogM("devCategory.szVendor = %s",devCategory.szVendor);
|
|
|
+ LogM("HSPSClassImpl::Leave->HSPS GetDevCategory() sucessfull!");
|
|
|
+ return Error_Succeed;
|
|
|
+}
|
|
|
+
|
|
|
+ErrorCodeEnum HSPSClassImpl::Reset()
|
|
|
+{
|
|
|
+ LOG_FUNCTION();
|
|
|
+ LogM("HSPSClassImpl::Entry->HSPS Reset()!");
|
|
|
+ DevClose();
|
|
|
+ LogM("HSPSClassImpl::Leave->HSPS Reset() sucessfull!");
|
|
|
+ return DevOpen();
|
|
|
+}
|
|
|
+
|
|
|
+ErrorCodeEnum HSPSClassImpl::DevClose()
|
|
|
+{
|
|
|
+ LOG_FUNCTION();
|
|
|
+ int iRet = -1;
|
|
|
+ LogM("HSPSClassImpl::Entry->HSPS DevClose()!");
|
|
|
+ if(!m_bDevOpen)
|
|
|
+ {
|
|
|
+ return Error_Succeed;
|
|
|
+ }
|
|
|
+ //CLOSEDEV();
|
|
|
+ iRet = m_pDll->HIGH_CloseWindow();
|
|
|
+
|
|
|
+ iRet = m_pDll->HIGH_StopCamera();
|
|
|
+
|
|
|
+ if(iRet == FR_RET_SUCC)
|
|
|
+ m_bPreview = false;
|
|
|
+
|
|
|
+ m_pDll->FreeDLL();
|
|
|
+ m_bDevOpen = false;
|
|
|
+ LogM("HSPSClassImpl::Leave->HSPS DevClose() sucessfull!");
|
|
|
+ return Error_Succeed;
|
|
|
+}
|
|
|
+
|
|
|
+ErrorCodeEnum HSPSClassImpl::GetLastErr(DevErrorInfo &devErrInfo)
|
|
|
+{
|
|
|
+ LOG_FUNCTION();
|
|
|
+ LogM("HSPSClassImpl::Entry->HSPS GetLastErr()!");
|
|
|
+ devErrInfo.dwErrMsgLen = 0;
|
|
|
+ memset(devErrInfo.szErrMsg, 0, sizeof(devErrInfo.szErrMsg));
|
|
|
+
|
|
|
+ devErrInfo.dwErrMsgLen = (m_shErrCode << 16);
|
|
|
+ sprintf(devErrInfo.szErrMsg, m_szErrMsg);
|
|
|
+ devErrInfo.dwErrMsgLen += (strlen(devErrInfo.szErrMsg) & 0x0000FFFF);
|
|
|
+ LogM("devErrInfo.szErrMsg = %s",devErrInfo.szErrMsg);
|
|
|
+ LogM("HSPSClassImpl::Leave->HSPS GetLastErr() sucessfull!");
|
|
|
+ return Error_Succeed;
|
|
|
+}
|
|
|
+
|
|
|
+ErrorCodeEnum HSPSClassImpl::SetParam(ParamType type, ParamTypeValue value)
|
|
|
+{
|
|
|
+ LOG_FUNCTION();
|
|
|
+ int iRet = -1;
|
|
|
+ if(!m_bDevOpen)
|
|
|
+ {
|
|
|
+ SaveErrorInfo("SetParam()->Dev is not open",Error_DevNotAvailable );
|
|
|
+ LogM("HSPSClassImpl::leave HSPS->SetParam() failed");
|
|
|
+ return Error_DevNotAvailable;
|
|
|
+ }
|
|
|
+ LogM("HSPSClassImpl::SetParam(type=%d,value=%d),line=%d",type,value,__LINE__);
|
|
|
+ if(type == HSPS_MODEL_COLOR)
|
|
|
+ {
|
|
|
+ if(value == HSPS_COLOR_FULL)
|
|
|
+ iRet = m_pDll->HIGH_SetColorType(0);
|
|
|
+
|
|
|
+ else if (value == HSPS_COLOR_GREY) {
|
|
|
+ iRet = m_pDll->HIGH_SetColorType(1);
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ SaveErrorInfo("SetParam()->ParamType COLOR ParamTypeValue error",Error_Param );
|
|
|
+ LogM("HSPSClassImpl::leave HSPS->SetParam(COLOR) ParamTypeValue error(%d)", value);
|
|
|
+ return Error_Param;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else if (type == HSPS_MODEL_ROTATE)
|
|
|
+ {
|
|
|
+ if(value == HSPS_ROTATE_NOANGLE)
|
|
|
+ iRet = m_pDll->HIGH_SetRotateSize(0);
|
|
|
+
|
|
|
+ else if (value == HSPS_ROTATE_LEFT)
|
|
|
+ iRet = m_pDll->HIGH_SetRotateSize(1);
|
|
|
+
|
|
|
+ else if (value == HSPS_ROTATE_MIRROR)
|
|
|
+ iRet = m_pDll->HIGH_SetRotateSize(2);
|
|
|
+
|
|
|
+ else if (value == HSPS_ROTATE_RIGHT)
|
|
|
+ iRet = m_pDll->HIGH_SetRotateSize(3);
|
|
|
+
|
|
|
+ else {
|
|
|
+ SaveErrorInfo("SetParam()->ParamType ROTATE ParamTypeValue error",Error_Param );
|
|
|
+ LogM("HSPSClassImpl::leave HSPS->SetParam(ROTATE) ParamTypeValue error(%d)", value);
|
|
|
+ return Error_Param;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else if (type == HSPS_MODEL_SCANSIZE)
|
|
|
+ {
|
|
|
+ //自动纠偏
|
|
|
+ if(value == HSPS_SCAN_FULL){
|
|
|
+ iRet = m_pDll->HIGH_SetAutoCrop(false);
|
|
|
+ }
|
|
|
+ //
|
|
|
+
|
|
|
+ else if (value == HSPS_SCAN_A4){
|
|
|
+ iRet = m_pDll->HIGH_SetAutoCrop(true);
|
|
|
+ }
|
|
|
+ //
|
|
|
+
|
|
|
+ else if (value == HSPS_SCAN_IDCARD){
|
|
|
+ iRet = m_pDll->HIGH_SetAutoCrop(true);
|
|
|
+ }
|
|
|
+ //
|
|
|
+
|
|
|
+ else {
|
|
|
+ SaveErrorInfo("SetParam()->ParamType SCANSIZE ParamTypeValue error",Error_Param );
|
|
|
+ LogM("HSPSClassImpl::leave HSPS->SetParam(SCANSIZE) ParamTypeValue error(%d)", value);
|
|
|
+ return Error_Param;
|
|
|
+ }
|
|
|
+ if(iRet != FR_RET_SUCC)
|
|
|
+ {
|
|
|
+ SaveErrorInfo(iRet);
|
|
|
+ LogM("HSPSClassImpl::SetParam(type=%d,value=%d) = [%d] HIGH_SetAutoCrop error,line=%d",type,value,iRet,__LINE__);
|
|
|
+ return Error_DevMedia;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else if (type == HSPS_MODEL_VIEW)
|
|
|
+ {
|
|
|
+ if(value == HSPS_VIEW_HIDE)
|
|
|
+ iRet = m_pDll->HIGH_HideWindow(1);
|
|
|
+
|
|
|
+
|
|
|
+ else if (value == HSPS_VIEW_SHOW)
|
|
|
+ iRet = m_pDll->HIGH_HideWindow(0);
|
|
|
+
|
|
|
+ else {
|
|
|
+ SaveErrorInfo("SetParam()->ParamType VIEW ParamTypeValue error",Error_Param );
|
|
|
+ LogM("HSPSClassImpl::leave HSPS->SetParam(VIEW) ParamTypeValue error(%d)", value);
|
|
|
+ return Error_Param;
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ SaveErrorInfo("SetParam()->ParamType error",Error_Param );
|
|
|
+ LogM("HSPSClassImpl::leave HSPS->SetParam error(%d)", type);
|
|
|
+ return Error_Param;
|
|
|
+ }
|
|
|
+
|
|
|
+ if(iRet != FR_RET_SUCC)
|
|
|
+ {
|
|
|
+ SaveErrorInfo(iRet);
|
|
|
+ LogM("HSPSClassImpl::SetParam(type=%d,value=%d) = [%d] error,line=%d",type,value,iRet,__LINE__);
|
|
|
+ return Error_DevMedia;
|
|
|
+ }
|
|
|
+ return Error_Succeed;
|
|
|
+}
|
|
|
+
|
|
|
+ErrorCodeEnum HSPSClassImpl::SetPreview(short nValue)
|
|
|
+{
|
|
|
+ LOG_FUNCTION();
|
|
|
+ LogM("HSPSClassImpl::SetPreview(nValue=%d),line=%d",nValue,__LINE__);
|
|
|
+ int iRet = -1;
|
|
|
+ if(!m_bDevOpen)
|
|
|
+ {
|
|
|
+ SaveErrorInfo("SetPreview()->Dev is not open",Error_DevNotAvailable );
|
|
|
+ LogM("HSPSClassImpl::leave HSPS->SetPreview() failed");
|
|
|
+ return Error_DevNotAvailable;
|
|
|
+ }
|
|
|
+ if(nValue == 1)
|
|
|
+ {
|
|
|
+ m_pDll->HIGH_GetStatus( &DevStatus);
|
|
|
+ if(FR_DS_ONLINE==DevStatus)
|
|
|
+ {
|
|
|
+ if(!DevWindow)
|
|
|
+ iRet = m_pDll->HIGH_CreateWindow(m_nX, m_nY, m_nWidth, m_nHeight);
|
|
|
+ else {
|
|
|
+ iRet = m_pDll->HIGH_HideWindow(FALSE);
|
|
|
+ }
|
|
|
+
|
|
|
+ if(iRet != FR_RET_SUCC)
|
|
|
+ {
|
|
|
+ for (int var = 0; iRet&&(var < 8); ++var) {
|
|
|
+ m_pDll->HIGH_CloseWindow();
|
|
|
+ sleep(1000);
|
|
|
+ iRet = m_pDll->HIGH_CreateWindow(m_nX, m_nY, m_nWidth, m_nHeight);
|
|
|
+ }
|
|
|
+ if(iRet != FR_RET_SUCC)
|
|
|
+ {
|
|
|
+ SaveErrorInfo(iRet);
|
|
|
+ LogM("HSPSClassImpl::SetPreview() = [%d] error,line=%d",iRet,__LINE__);
|
|
|
+ return Error_DevMedia;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if(iRet == FR_RET_SUCC)
|
|
|
+ {
|
|
|
+ m_bShow = 1;
|
|
|
+ m_bPreview = true;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ LogM("HSPSClassImpl::SetPreview() DevStatus = [%d] DevError:1->OFFLIN,2->BUSY,3->HARDWAREERROR,4->UNKNOW,line=%d",DevStatus,__LINE__);
|
|
|
+ return Error_DevMedia;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else if (nValue == 0)
|
|
|
+ {
|
|
|
+ iRet = m_pDll->HIGH_HideWindow(TRUE);
|
|
|
+ if(iRet == FR_RET_SUCC)
|
|
|
+ m_bShow = 0;
|
|
|
+
|
|
|
+ iRet = m_pDll->HIGH_CloseWindow();
|
|
|
+ DevWindow = false;
|
|
|
+ if(iRet == FR_RET_SUCC)
|
|
|
+ m_bPreview = false;
|
|
|
+ }
|
|
|
+
|
|
|
+ else {
|
|
|
+ SaveErrorInfo("SetPreview()->nValue error",Error_Param );
|
|
|
+ LogM("HSPSClassImpl::leave HSPS->SetPreview(%d) error", nValue);
|
|
|
+ return Error_Param;
|
|
|
+ }
|
|
|
+ if(iRet != FR_RET_SUCC)
|
|
|
+ {
|
|
|
+ SaveErrorInfo(iRet);
|
|
|
+ LogM("HSPSClassImpl::SetPreview(value=%d) = [%d] error,line=%d",nValue,iRet,__LINE__);
|
|
|
+ return Error_DevMedia;
|
|
|
+ }
|
|
|
+
|
|
|
+ return Error_Succeed;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+ErrorCodeEnum HSPSClassImpl::ScanImage(const char* pszFileName)
|
|
|
+{
|
|
|
+ LOG_FUNCTION();
|
|
|
+ LogM("HSPSClassImpl::ScanImage(pszFileName=%s),line=%d",pszFileName,__LINE__);
|
|
|
+ int iRet = -1;
|
|
|
+ if(!m_bDevOpen)
|
|
|
+ {
|
|
|
+ SaveErrorInfo("ScanImage()->Dev is not open",Error_DevNotAvailable );
|
|
|
+ LogM("HSPSClassImpl::leave HSPS->ScanImage() failed");
|
|
|
+ return Error_DevNotAvailable;
|
|
|
+ }
|
|
|
+ iRet = m_pDll->HIGH_TakePicture(pszFileName);
|
|
|
+
|
|
|
+ //iRet = m_pDll->HIGH_CreateWindow(m_nX, m_nY, 0, m_nWidth*9/16);
|
|
|
+ if(iRet != FR_RET_SUCC)
|
|
|
+ {
|
|
|
+ SaveErrorInfo(iRet);
|
|
|
+ LogM("HSPSClassImpl::ScanImage(pszFileName=%s) = [%d] error,line=%d",pszFileName,iRet,__LINE__);
|
|
|
+ return Error_DevMedia;
|
|
|
+ }
|
|
|
+ iRet = m_pDll->HIGH_HideWindow(TRUE);
|
|
|
+ m_bShow = 0;
|
|
|
+ return Error_Succeed;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+ErrorCodeEnum HSPSClassImpl::ScanImageEx(BYTE* pBtImg, int& nBtLen, const char* pszFileName)
|
|
|
+{
|
|
|
+ LOG_FUNCTION();
|
|
|
+
|
|
|
+ LogM("HSPSClassImpl::ScanImageEx(pBtImg, nBtLen=[%d], pszFileName=[%s])", nBtLen, pszFileName);
|
|
|
+
|
|
|
+ int iRet = -1;
|
|
|
+ if(!m_bDevOpen)
|
|
|
+ {
|
|
|
+ SaveErrorInfo("ScanImageEx()->Dev is not open",Error_DevNotAvailable );
|
|
|
+ LogM("HSPSClassImpl::leave HSPS->ScanImageEx() failed");
|
|
|
+ return Error_DevNotAvailable;
|
|
|
+ }
|
|
|
+ iRet = m_pDll->HIGH_TakePicture("tmp.jpg");
|
|
|
+ if(iRet != FR_RET_SUCC)
|
|
|
+ {
|
|
|
+ SaveErrorInfo(iRet);
|
|
|
+ LogM("HSPSClassImpl::ScanImageEx HIGH_TakePicture = [%d] error,line=%d",iRet,__LINE__);
|
|
|
+ return Error_DevMedia;
|
|
|
+ }
|
|
|
+ iRet = m_pDll->HIGH_HideWindow(TRUE);
|
|
|
+ if(iRet != FR_RET_SUCC)
|
|
|
+ {
|
|
|
+ SaveErrorInfo(iRet);
|
|
|
+ LogM("HSPSClassImpl::ScanImageEx HIGH_HideWindow = [%d] error,line=%d",iRet,__LINE__);
|
|
|
+ return Error_DevMedia;
|
|
|
+ }
|
|
|
+ m_bShow = 0;
|
|
|
+ //读取tmp.jpg为字节流
|
|
|
+ FILE *fp = NULL;
|
|
|
+ char* pFileData = NULL;
|
|
|
+ int file_size = 0;
|
|
|
+ fp = fopen("tmp.jpg","rb");
|
|
|
+ if(fp != NULL)
|
|
|
+ {
|
|
|
+ fseek(fp, 0, SEEK_END);
|
|
|
+ file_size = ftell(fp);
|
|
|
+ fseek(fp, 0, SEEK_SET);
|
|
|
+ pFileData = new char[file_size+1];
|
|
|
+ fread(pFileData, 1, file_size, fp);
|
|
|
+ fclose(fp);
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ SaveErrorInfo("ScanImageEx()->fopen tmp.jpg error",Error_NoTarget );
|
|
|
+ LogM("HSPSClassImpl::leave HSPS->ScanImageEx() failed");
|
|
|
+ return Error_NoTarget;
|
|
|
+ }
|
|
|
+ //memcpy(pBtImg, pFileData, file_size);
|
|
|
+ pBtImg = (BYTE*)pFileData;
|
|
|
+ nBtLen = file_size;
|
|
|
+
|
|
|
+ if(nullptr != pszFileName && strlen(pszFileName) > 0)
|
|
|
+ {
|
|
|
+ string command = "cp ";
|
|
|
+ command += "tmp.jpg";
|
|
|
+ command += " ";
|
|
|
+ command += pszFileName;
|
|
|
+ system((char*)command.c_str());
|
|
|
+ }
|
|
|
+ remove("tmp.jpg");
|
|
|
+
|
|
|
+ if(nBtLen < file_size)
|
|
|
+ {
|
|
|
+ memcpy(pBtImg, pFileData, file_size);
|
|
|
+ nBtLen = file_size;
|
|
|
+ SaveErrorInfo(iRet);
|
|
|
+ LogM("ScanImageEx()->nBtLen[%d] < file_size[%d]",nBtLen,file_size);
|
|
|
+ return Error_TooSmallBuffer;
|
|
|
+ }
|
|
|
+ memcpy(pBtImg, pFileData, file_size);
|
|
|
+ nBtLen = file_size;
|
|
|
+ return Error_Succeed;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+ErrorCodeEnum HSPSClassImpl::SetViewPos(int nX, int nY, int nWidth)
|
|
|
+{
|
|
|
+ LOG_FUNCTION();
|
|
|
+ LogM("HSPSClassImpl::SetViewPos(nX=%d, nY=%d, nWidth=%d),line=%d",nX, nY, nWidth,__LINE__);
|
|
|
+
|
|
|
+ int iRet = -1;
|
|
|
+ if(!m_bDevOpen)
|
|
|
+ {
|
|
|
+ SaveErrorInfo("SetViewPos()->Dev is not open",Error_DevNotAvailable );
|
|
|
+ LogM("HSPSClassImpl::leave HSPS->SetViewPos() failed");
|
|
|
+ return Error_DevNotAvailable;
|
|
|
+ }
|
|
|
+ if(nX >= 0 && nY >= 0 )
|
|
|
+ {
|
|
|
+ m_nX = nX;
|
|
|
+ m_nY = nY;
|
|
|
+ if(nWidth > 0)
|
|
|
+ {
|
|
|
+ m_nWidth = nWidth;
|
|
|
+
|
|
|
+ if (m_nWidth*9/16 <= 1)
|
|
|
+ m_nHeight = 1;
|
|
|
+ else {
|
|
|
+ m_nHeight = m_nWidth*9/16;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ SaveErrorInfo("SetViewPos()->Param < 0",Error_Param );
|
|
|
+ LogM("HSPSClassImpl::leave HSPS->SetViewPos() failed");
|
|
|
+ return Error_Param;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ //iRet = m_pDll->HIGH_PauseAndPlay(true);
|
|
|
+ if(m_bPreview)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+ if(nWidth > 0)
|
|
|
+ {
|
|
|
+ LogM("HSPSClassImpl::SetViewPos(nWidth) = [%d] error,line=%d",nWidth,__LINE__);
|
|
|
+ iRet = m_pDll->HIGH_CloseWindow();
|
|
|
+ iRet = m_pDll->HIGH_CreateWindow(m_nX, m_nY, m_nWidth, m_nHeight);
|
|
|
+ }
|
|
|
+ else if( nWidth == 0)
|
|
|
+ {
|
|
|
+ LogM("HSPSClassImpl::SetViewPos(nWidth) = [%d] error,line=%d",nWidth,__LINE__);
|
|
|
+ iRet = m_pDll->HIGH_CloseWindow();
|
|
|
+ iRet = m_pDll->HIGH_CreateWindow(m_nX, m_nY, 1, 1);
|
|
|
+ }
|
|
|
+
|
|
|
+ else
|
|
|
+ {
|
|
|
+
|
|
|
+ SaveErrorInfo("SetViewPos()->Param < 0",Error_Param );
|
|
|
+ LogM("HSPSClassImpl::leave HSPS->SetViewPos() failed");
|
|
|
+ return Error_Param;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ LogM("HSPSClassImpl::SetViewPos(nWidth) = [%d] error,line=%d",nWidth,__LINE__);
|
|
|
+ iRet = m_pDll->HIGH_CreateWindow(m_nX, m_nY, m_nWidth, m_nHeight);
|
|
|
+ DevWindow = true;
|
|
|
+ iRet = m_pDll->HIGH_PauseAndPlay(true);
|
|
|
+ //iRet = m_pDll->HIGH_HideWindow(TRUE);
|
|
|
+ }
|
|
|
+ if(iRet != FR_RET_SUCC)
|
|
|
+ {
|
|
|
+ SaveErrorInfo(iRet);
|
|
|
+ LogM("HSPSClassImpl::SetViewPos() = [%d] error,line=%d",iRet,__LINE__);
|
|
|
+ return Error_DevMedia;
|
|
|
+ }
|
|
|
+/* m_bPreview = false;
|
|
|
+ m_nX = nX;
|
|
|
+ m_nY = nY;
|
|
|
+ m_nWidth = nWidth;*/
|
|
|
+ //iRet = m_pDll->HIGH_HideWindow(TRUE);
|
|
|
+ //iRet = c;
|
|
|
+
|
|
|
+
|
|
|
+ LogM("HSPSClassImpl::SetViewPos() = [%d] success!,line=%d",iRet,__LINE__);
|
|
|
+ return Error_Succeed;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+ErrorCodeEnum HSPSClassImpl::SetProperty()
|
|
|
+{
|
|
|
+ return Error_Succeed;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+ErrorCodeEnum HSPSClassImpl::GetDevStatus(HspsDevStatus& status)
|
|
|
+{
|
|
|
+ LOG_FUNCTION();
|
|
|
+
|
|
|
+ status.inPreview = (short)m_bPreview;
|
|
|
+ status.inShow = (short)m_bShow;
|
|
|
+ m_pDll->HIGH_GetStatus( &DevStatus);
|
|
|
+ LogM("HSPSClassImpl::HIGH_GetStatus() = [%d] success!,line=%d",DevStatus,__LINE__);
|
|
|
+ if(DevStatus == 1)
|
|
|
+ {
|
|
|
+ status.isConnected = 0;
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ status.isConnected = 1;
|
|
|
+ }
|
|
|
+ LogM("HSPSClassImpl::GetDevStatus success! inPreview = [%d] inShow = [%d] isConnected = [isConnected]",status.inPreview,status.inShow,status.isConnected);
|
|
|
+ return Error_Succeed;
|
|
|
+}
|
|
|
+
|
|
|
+void HSPSClassImpl::SaveErrorInfo(CHAR* errMsg, int errCode)
|
|
|
+{
|
|
|
+ LOG_FUNCTION();
|
|
|
+ LogM("HSPSClassImpl::Entry->HSPS SaveErrorInfo(CHAR* errMsg, int errCode)! <=> errMsg = %s errCode = %d",errMsg,errCode);
|
|
|
+ memset(m_szErrMsg, 0, MAX_DEV_ERROR_MSG_LEN);
|
|
|
+ snprintf(m_szErrMsg, sizeof (m_szErrMsg),"%s[%d]", errMsg, errCode);
|
|
|
+ LogM("HSPSClassImpl::Leave->HSPS DevOpen()->m_pDll->SaveErrorInfo(CHAR* errMsg, int errCode) sucessfull!");
|
|
|
+}
|
|
|
+
|
|
|
+void HSPSClassImpl::SaveErrorInfo(DevErrorInfo devErrorInfo)
|
|
|
+{
|
|
|
+ LOG_FUNCTION();
|
|
|
+ LogM("HSPSClassImpl::Entry->HSPS SaveErrorInfo(DevErrorInfo devErrorInfo)! <=> devErrorInfo.szErrMsg = %s",devErrorInfo.szErrMsg);
|
|
|
+ memset(m_szErrMsg, 0, MAX_DEV_ERROR_MSG_LEN);
|
|
|
+ snprintf(m_szErrMsg,sizeof(m_szErrMsg), "%s",devErrorInfo.szErrMsg);
|
|
|
+ LogM("HSPSClassImpl::Leave->HSPS DevOpen()->m_pDll->SaveErrorInfo(DevErrorInfo devErrorInfo) sucessfull!");
|
|
|
+}
|
|
|
+void HSPSClassImpl::SaveErrorInfo(int nErrorCode)
|
|
|
+{
|
|
|
+ LOG_FUNCTION();
|
|
|
+ LogM("HSPSClassImpl::Entry->HSPS SaveErrorInfo(int nErrorCode)! <=> nErrorCode = %d",nErrorCode);
|
|
|
+ ErrorCodeEnum ret;
|
|
|
+ switch (nErrorCode)
|
|
|
+ {
|
|
|
+ case FR_RET_SUCC:
|
|
|
+ memset(m_szErrMsg, 0, MAX_DEV_ERROR_MSG_LEN);
|
|
|
+ snprintf(m_szErrMsg, sizeof(m_szErrMsg),"%d:%s",FR_RET_SUCC, "成功");
|
|
|
+ m_shErrCode = DEC_SUCCESS;
|
|
|
+ ret = Error_Succeed;
|
|
|
+ break;
|
|
|
+ case FR_RET_FAIL:
|
|
|
+ memset(m_szErrMsg, 0, MAX_DEV_ERROR_MSG_LEN);
|
|
|
+ snprintf(m_szErrMsg, sizeof(m_szErrMsg),"%d:%s",FR_RET_FAIL, "失败");
|
|
|
+ m_shErrCode = DEC_EXCEPTION;
|
|
|
+ ret = Error_Param;
|
|
|
+ break;
|
|
|
+ case FR_RET_PARA:
|
|
|
+ memset(m_szErrMsg, 0, MAX_DEV_ERROR_MSG_LEN);
|
|
|
+ snprintf(m_szErrMsg, sizeof(m_szErrMsg),"%d:%s",FR_RET_PARA, "参数错误");
|
|
|
+ m_shErrCode = DEC_INVALID_PARAMETER;
|
|
|
+ ret = Error_Param;
|
|
|
+ break;
|
|
|
+ case FR_RET_NDEV:
|
|
|
+ memset(m_szErrMsg, 0, MAX_DEV_ERROR_MSG_LEN);
|
|
|
+ snprintf(m_szErrMsg, sizeof(m_szErrMsg),"%d:%s",FR_RET_NDEV, "打开设备失败");
|
|
|
+ m_shErrCode = DEC_DEV_NOT_FOUND;
|
|
|
+ ret = Error_Param;
|
|
|
+ break;
|
|
|
+ case FR_RET_NINI:
|
|
|
+ memset(m_szErrMsg, 0, MAX_DEV_ERROR_MSG_LEN);
|
|
|
+ snprintf(m_szErrMsg,sizeof(m_szErrMsg), "%d:%s",FR_RET_NINI, "未打开设备");
|
|
|
+ m_shErrCode = DEC_DEV_NOT_OPENED;
|
|
|
+ ret = Error_DevConnFailed;
|
|
|
+ break;
|
|
|
+ case FR_RET_BUSY:
|
|
|
+ memset(m_szErrMsg, 0, MAX_DEV_ERROR_MSG_LEN);
|
|
|
+ snprintf(m_szErrMsg, sizeof(m_szErrMsg),"%d:%s",FR_RET_BUSY, "设备繁忙");
|
|
|
+ m_shErrCode = DEC_DEV_NOT_OPENED;
|
|
|
+ ret = Error_NotInit;
|
|
|
+ break;
|
|
|
+ case FR_RET_DATA:
|
|
|
+ memset(m_szErrMsg, 0, MAX_DEV_ERROR_MSG_LEN);
|
|
|
+ snprintf(m_szErrMsg, sizeof(m_szErrMsg),"%d:%s",FR_RET_DATA, "图像数据不正确");
|
|
|
+ m_shErrCode = DEC_INVALID_PARAMETER;
|
|
|
+ ret = Error_Param;
|
|
|
+ break;
|
|
|
+ case FR_RET_NLNK:
|
|
|
+ memset(m_szErrMsg, 0, MAX_DEV_ERROR_MSG_LEN);
|
|
|
+ snprintf(m_szErrMsg, sizeof(m_szErrMsg),"%d:%s",FR_RET_NLNK, "设备断开");
|
|
|
+ m_shErrCode = DEC_DEV_NOT_OPENED;
|
|
|
+ ret = Error_Param;
|
|
|
+ break;
|
|
|
+ case FR_RET_NMEM:
|
|
|
+ memset(m_szErrMsg, 0, MAX_DEV_ERROR_MSG_LEN);
|
|
|
+ snprintf(m_szErrMsg, sizeof(m_szErrMsg),"%d:%s",FR_RET_NMEM, "内存分配失败");
|
|
|
+ m_shErrCode = DEC_NULL_POINTER;
|
|
|
+ ret = Error_Param;
|
|
|
+ break;
|
|
|
+ case FR_RET_ARDY:
|
|
|
+ memset(m_szErrMsg, 0, MAX_DEV_ERROR_MSG_LEN);
|
|
|
+ snprintf(m_szErrMsg,sizeof(m_szErrMsg), "%d:%s",FR_RET_ARDY, "已经打开设备");
|
|
|
+ m_shErrCode = DEC_RESET_FAILED;
|
|
|
+ ret = Error_Param;
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ memset(m_szErrMsg, 0, MAX_DEV_ERROR_MSG_LEN);
|
|
|
+ snprintf(m_szErrMsg, sizeof(m_szErrMsg),"%d:%s",nErrorCode, "其它未定义的错误");
|
|
|
+ m_shErrCode = DEC_ERROR_CODE_UNRECOGNIZABLE;
|
|
|
+ ret = Error_Param;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ LogM("HSPSClassImpl::Leave->HSPS DevOpen()->m_pDll->SaveErrorInfo(int nErrorCode) sucessfull!");
|
|
|
+}
|
|
|
+
|