websdk,将事件中携带的iden改为调用成功时的iden

This commit is contained in:
luoliangyi 2024-04-18 11:04:35 +08:00
parent dec98c1891
commit f26ecbcc34
4 changed files with 116 additions and 134 deletions

View File

@ -67,8 +67,13 @@ namespace ver_2
m_sn.clear();
m_devHandle = NULL;
m_devParams.clear();
m_initIden.clear();
m_initHaveIden = false;
m_scanIden.clear();
m_scanHaveIden = false;
m_scanBlankCheck = false;
m_scanTemp = false;
m_scanLocalSave = true;
m_scanGetBase64 = false;
m_scanning = false;
m_scanEvent = NULL;
m_dpi = 200;
@ -1333,7 +1338,7 @@ namespace ver_2
return ret;
}
int ManagerV2::InitDevice(std::string& errInfo)
int ManagerV2::InitDevice(const std::string &iden, bool haveIden, std::string& errInfo)
{
errInfo = "错误";
@ -1343,9 +1348,14 @@ namespace ver_2
return -1;
}
m_initIden = iden;
m_initHaveIden = haveIden;
SANE_Int version_code = 0;
if (SANE_STATUS_GOOD != sane_init_ex(&version_code, sane_ex_callback, this))
{
m_initIden.clear();
m_initHaveIden = false;
errInfo = "初始化失败";
return -1;
}
@ -1371,6 +1381,8 @@ namespace ver_2
m_devNameList.clear();
m_initDevice = false;
m_initIden.clear();
m_initHaveIden = false;
errInfo.clear();
return 0;
}
@ -1613,7 +1625,7 @@ namespace ver_2
return 0;
}
int ManagerV2::StartScan(bool blankCheck, bool temp, std::string& errInfo)
int ManagerV2::StartScan(const std::string &iden, bool haveIden, bool blankCheck, bool localSave, bool getBase64, std::string& errInfo)
{
errInfo = "错误";
@ -1629,8 +1641,11 @@ namespace ver_2
return -1;
}
m_scanIden = iden;
m_scanHaveIden = haveIden;
m_scanBlankCheck = blankCheck;
m_scanTemp = temp;
m_scanLocalSave = localSave;
m_scanGetBase64 = getBase64;
HGBase_CreateEvent(HGFALSE, HGFALSE, &m_scanEvent);
assert(NULL != m_scanEvent);
m_dpi = GetDpi();
@ -1641,8 +1656,11 @@ namespace ver_2
errInfo = Utf8ToStdString(sane_strstatus(status));
HGBase_DestroyEvent(m_scanEvent);
m_scanEvent = NULL;
m_scanIden.clear();
m_scanHaveIden = false;
m_scanBlankCheck = false;
m_scanTemp = false;
m_scanLocalSave = true;
m_scanGetBase64 = false;
m_dpi = 200;
return -1;
}
@ -1669,8 +1687,11 @@ namespace ver_2
HGBase_WaitEvent(m_scanEvent);
HGBase_DestroyEvent(m_scanEvent);
m_scanEvent = NULL;
m_scanIden.clear();
m_scanHaveIden = false;
m_scanBlankCheck = false;
m_scanTemp = false;
m_scanLocalSave = true;
m_scanGetBase64 = false;
m_scanning = false;
m_dpi = 200;
@ -4333,7 +4354,7 @@ namespace ver_2
std::list<class WSUser *>::iterator iter;
for (iter = p->m_user.begin(); iter != p->m_user.end(); ++iter)
{
WSUser::SaneEvent(SANEEVENT_ARRIVE, sane_dev->name, false, *iter);
WSUser::DbtEvent(p->m_initIden, p->m_initHaveIden, SANEEVENT_ARRIVE, sane_dev->name, false, *iter);
}
HGBase_LeaveLock(p->m_lock);
}
@ -4367,7 +4388,7 @@ namespace ver_2
std::list<class WSUser *>::iterator iter;
for (iter = p->m_user.begin(); iter != p->m_user.end(); ++iter)
{
WSUser::SaneEvent(SANEEVENT_REMOVE, sane_dev->name, false, *iter);
WSUser::DbtEvent(p->m_initIden, p->m_initHaveIden, SANEEVENT_REMOVE, sane_dev->name, false, *iter);
}
HGBase_LeaveLock(p->m_lock);
}
@ -4380,7 +4401,7 @@ namespace ver_2
std::list<class WSUser *>::iterator iter;
for (iter = p->m_user.begin(); iter != p->m_user.end(); ++iter)
{
WSUser::SaneEvent(SANEEVENT_WORKING, (const char*)data, false, *iter);
WSUser::SaneEvent(p->m_scanIden, p->m_scanHaveIden, SANEEVENT_WORKING, (const char*)data, false, *iter);
}
HGBase_LeaveLock(p->m_lock);
}
@ -4406,7 +4427,7 @@ namespace ver_2
std::list<class WSUser *>::iterator iter;
for (iter = p->m_user.begin(); iter != p->m_user.end(); ++iter)
{
WSUser::SaneEvent(SANEEVENT_FINISH, (const char*)data, (0 != *len), *iter);
WSUser::SaneEvent(p->m_scanIden, p->m_scanHaveIden, SANEEVENT_FINISH, (const char*)data, (0 != *len), *iter);
}
HGBase_LeaveLock(p->m_lock);
}
@ -4419,7 +4440,7 @@ namespace ver_2
std::list<class WSUser *>::iterator iter;
for (iter = p->m_user.begin(); iter != p->m_user.end(); ++iter)
{
WSUser::SaneEvent(SANEEVENT_STATUS, (const char*)data, false, *iter);
WSUser::SaneEvent(p->m_scanIden, p->m_scanHaveIden, SANEEVENT_STATUS, (const char*)data, false, *iter);
}
HGBase_LeaveLock(p->m_lock);
}
@ -4432,7 +4453,7 @@ namespace ver_2
std::list<class WSUser *>::iterator iter;
for (iter = p->m_user.begin(); iter != p->m_user.end(); ++iter)
{
WSUser::SaneEvent(SANEEVENT_ERROR, (const char*)data, (0 != *len), *iter);
WSUser::SaneEvent(p->m_scanIden, p->m_scanHaveIden, SANEEVENT_ERROR, (const char*)data, (0 != *len), *iter);
}
HGBase_LeaveLock(p->m_lock);
}
@ -4470,10 +4491,10 @@ namespace ver_2
HGBase_EnterLock(p->m_lock);
std::string imagePath;
int ret = p->SaveImage(img, p->m_scanTemp, imagePath);
int ret = p->SaveImage(img, !p->m_scanLocalSave, imagePath);
if (0 == ret)
{
if (!p->m_scanTemp)
if (p->m_scanLocalSave)
{
AddSavedFileParam* addParam = new AddSavedFileParam;
addParam->mgr = p;
@ -4491,10 +4512,11 @@ namespace ver_2
std::list<class WSUser *>::iterator iter;
for (iter = p->m_user.begin(); iter != p->m_user.end(); ++iter)
{
WSUser::SaneImageCallback(imagePath.c_str(), blank ? true : false, *iter);
WSUser::SaneImageCallback(p->m_scanIden, p->m_scanHaveIden, p->m_scanBlankCheck, p->m_scanLocalSave, p->m_scanGetBase64,
imagePath.c_str(), blank ? true : false, *iter);
}
if (p->m_scanTemp)
if (!p->m_scanLocalSave)
{
HGBase_DeleteFile(imagePath.c_str());
}

View File

@ -185,7 +185,7 @@ namespace ver_2
int LocalImageBinarization(const std::string& imagePath, bool temp, std::string& outImagePath, std::string& errInfo);
// 设备初始化
int InitDevice(std::string& errInfo);
int InitDevice(const std::string &iden, bool haveIden, std::string& errInfo);
// 设备反初始化
int DeinitDevice(std::string& errInfo);
// 是否已经初始化
@ -209,7 +209,7 @@ namespace ver_2
// 获取当前设备名
int GetCurrDeviceName(std::string& deviceName, std::string& errInfo);
// 开始扫描
int StartScan(bool blankCheck, bool temp, std::string& errInfo);
int StartScan(const std::string &iden, bool haveIden, bool blankCheck, bool localSave, bool getBase64, std::string& errInfo);
// 停止扫描
int StopScan(std::string& errInfo);
// 是否已经启动扫描
@ -326,8 +326,13 @@ namespace ver_2
std::string m_devName;
std::string m_sn;
std::vector<DeviceParamsGroup> m_devParams;
std::string m_initIden;
bool m_initHaveIden;
std::string m_scanIden;
bool m_scanHaveIden;
bool m_scanBlankCheck;
bool m_scanTemp;
bool m_scanLocalSave;
bool m_scanGetBase64;
bool m_scanning;
HGEvent m_scanEvent;
HGUInt m_dpi;

View File

@ -194,14 +194,6 @@ namespace ver_2
#endif
: WebUser(server, id, ip, port, sockConn)
{
m_initDeviceIden.clear();
m_initDeviceHaveIden = false;
m_startScanIden.clear();
m_startScanHaveIden = false;
m_startScanBlankCheck = false;
m_startScanIsLocalSave = true;
m_startScanIsGetBase64 = false;
GetManager()->AddUser(this);
}
@ -793,7 +785,7 @@ namespace ver_2
}
}
void WSUser::SaneEvent(int code, const char* str, bool err, void* param)
void WSUser::DbtEvent(const std::string &iden, bool haveIden, int code, const char* str, bool err, void* param)
{
WSUser* p = (WSUser*)param;
@ -803,8 +795,8 @@ namespace ver_2
if (NULL != retJson)
{
cJSON_AddItemToObject(retJson, "func", cJSON_CreateString("device_arrive"));
if (p->m_initDeviceHaveIden)
cJSON_AddItemToObject(retJson, "iden", cJSON_CreateString(p->m_initDeviceIden.c_str()));
if (haveIden)
cJSON_AddItemToObject(retJson, "iden", cJSON_CreateString(iden.c_str()));
cJSON_AddItemToObject(retJson, "device_name", cJSON_CreateString(str));
char* resp = cJSON_Print(retJson);
@ -823,8 +815,8 @@ namespace ver_2
if (NULL != retJson)
{
cJSON_AddItemToObject(retJson, "func", cJSON_CreateString("device_remove"));
if (p->m_initDeviceHaveIden)
cJSON_AddItemToObject(retJson, "iden", cJSON_CreateString(p->m_initDeviceIden.c_str()));
if (haveIden)
cJSON_AddItemToObject(retJson, "iden", cJSON_CreateString(iden.c_str()));
cJSON_AddItemToObject(retJson, "device_name", cJSON_CreateString(str));
char* resp = cJSON_Print(retJson);
@ -837,14 +829,20 @@ namespace ver_2
cJSON_Delete(retJson);
}
}
else if (code == SANEEVENT_WORKING)
}
void WSUser::SaneEvent(const std::string &iden, bool haveIden, int code, const char* str, bool err, void* param)
{
WSUser* p = (WSUser*)param;
if (code == SANEEVENT_WORKING)
{
cJSON* retJson = cJSON_CreateObject();
if (NULL != retJson)
{
cJSON_AddItemToObject(retJson, "func", cJSON_CreateString("scan_begin"));
if (p->m_startScanHaveIden)
cJSON_AddItemToObject(retJson, "iden", cJSON_CreateString(p->m_startScanIden.c_str()));
if (haveIden)
cJSON_AddItemToObject(retJson, "iden", cJSON_CreateString(iden.c_str()));
char* resp = cJSON_Print(retJson);
if (NULL != resp)
@ -860,8 +858,8 @@ namespace ver_2
if (NULL != retJson)
{
cJSON_AddItemToObject(retJson, "func", cJSON_CreateString("scan_info"));
if (p->m_startScanHaveIden)
cJSON_AddItemToObject(retJson, "iden", cJSON_CreateString(p->m_startScanIden.c_str()));
if (haveIden)
cJSON_AddItemToObject(retJson, "iden", cJSON_CreateString(iden.c_str()));
if (err)
cJSON_AddItemToObject(retJson, "is_error", cJSON_CreateTrue());
else
@ -884,8 +882,8 @@ namespace ver_2
if (NULL != retJson)
{
cJSON_AddItemToObject(retJson, "func", cJSON_CreateString("scan_info"));
if (p->m_startScanHaveIden)
cJSON_AddItemToObject(retJson, "iden", cJSON_CreateString(p->m_startScanIden.c_str()));
if (haveIden)
cJSON_AddItemToObject(retJson, "iden", cJSON_CreateString(iden.c_str()));
if (err)
cJSON_AddItemToObject(retJson, "is_error", cJSON_CreateTrue());
else
@ -906,8 +904,8 @@ namespace ver_2
if (NULL != retJson)
{
cJSON_AddItemToObject(retJson, "func", cJSON_CreateString("scan_end"));
if (p->m_startScanHaveIden)
cJSON_AddItemToObject(retJson, "iden", cJSON_CreateString(p->m_startScanIden.c_str()));
if (haveIden)
cJSON_AddItemToObject(retJson, "iden", cJSON_CreateString(iden.c_str()));
char* resp = cJSON_Print(retJson);
if (NULL != resp)
@ -921,12 +919,13 @@ namespace ver_2
}
}
void WSUser::SaneImageCallback(const char* path, bool blank, void* param)
void WSUser::SaneImageCallback(const std::string &iden, bool haveIden, bool blankCheck, bool localSave, bool getBase64,
const char* path, bool blank, void* param)
{
WSUser* p = (WSUser*)param;
std::string base64;
if (p->m_startScanIsGetBase64)
if (getBase64)
{
std::string errInfo;
p->GetManager()->LoadLocalImage(path, base64, errInfo);
@ -936,10 +935,10 @@ namespace ver_2
if (NULL != retJson)
{
cJSON_AddItemToObject(retJson, "func", cJSON_CreateString("scan_image"));
if (p->m_startScanHaveIden)
cJSON_AddItemToObject(retJson, "iden", cJSON_CreateString(p->m_startScanIden.c_str()));
if (haveIden)
cJSON_AddItemToObject(retJson, "iden", cJSON_CreateString(iden.c_str()));
if (p->m_startScanBlankCheck)
if (blankCheck)
{
if (blank)
cJSON_AddItemToObject(retJson, "is_blank", cJSON_CreateTrue());
@ -947,10 +946,10 @@ namespace ver_2
cJSON_AddItemToObject(retJson, "is_blank", cJSON_CreateFalse());
}
if (p->m_startScanIsLocalSave)
if (localSave)
cJSON_AddItemToObject(retJson, "image_path", cJSON_CreateString(StdStringToUtf8(path).c_str()));
if (p->m_startScanIsGetBase64)
if (getBase64)
cJSON_AddItemToObject(retJson, "image_base64", cJSON_CreateString(base64.c_str()));
char* resp = cJSON_Print(retJson);
@ -2477,19 +2476,8 @@ namespace ver_2
bool findIden = false;
std::string iden = GetJsonStringValue(json, "iden", &findIden);
if (!GetManager()->IsDeviceInit())
{
m_initDeviceIden = iden;
m_initDeviceHaveIden = findIden;
}
std::string errInfo;
int ret = GetManager()->InitDevice(errInfo);
if (0 != ret)
{
m_initDeviceIden.clear();
m_initDeviceHaveIden = false;
}
int ret = GetManager()->InitDevice(iden, findIden, errInfo);
cJSON* retJson = cJSON_CreateObject();
if (NULL != retJson)
@ -2519,9 +2507,6 @@ namespace ver_2
std::string errInfo;
int ret = GetManager()->DeinitDevice(errInfo);
m_initDeviceIden.clear();
m_initDeviceHaveIden = false;
bool findIden = false;
std::string iden = GetJsonStringValue(json, "iden", &findIden);
@ -3056,25 +3041,8 @@ namespace ver_2
if (!find)
getBase64 = false;
if (!GetManager()->IsScanning())
{
m_startScanIden = iden;
m_startScanHaveIden = findIden;
m_startScanBlankCheck = blankCheck;
m_startScanIsLocalSave = localSave;
m_startScanIsGetBase64 = getBase64;
}
std::string errInfo;
int ret = GetManager()->StartScan(blankCheck, !localSave, errInfo);
if (0 != ret)
{
m_startScanIden.clear();
m_startScanHaveIden = false;
m_startScanBlankCheck = false;
m_startScanIsLocalSave = true;
m_startScanIsGetBase64 = false;
}
int ret = GetManager()->StartScan(iden, findIden, blankCheck, localSave, getBase64, errInfo);
cJSON* retJson = cJSON_CreateObject();
if (NULL != retJson)
@ -3104,12 +3072,6 @@ namespace ver_2
std::string errInfo;
int ret = GetManager()->StopScan(errInfo);
m_startScanIden.clear();
m_startScanHaveIden = false;
m_startScanBlankCheck = false;
m_startScanIsLocalSave = true;
m_startScanIsGetBase64 = false;
bool findIden = false;
std::string iden = GetJsonStringValue(json, "iden", &findIden);

View File

@ -26,8 +26,10 @@ namespace ver_2
virtual void ThreadFunc();
public:
static void SaneEvent(int code, const char* str, bool err, void* param);
static void SaneImageCallback(const char* path, bool blank, void* param);
static void DbtEvent(const std::string &iden, bool haveIden, int code, const char* str, bool err, void* param);
static void SaneEvent(const std::string &iden, bool haveIden, int code, const char* str, bool err, void* param);
static void SaneImageCallback(const std::string &iden, bool haveIden, bool blankCheck, bool localSave, bool getBase64,
const char* path, bool blank, void* param);
private:
bool ShakeHand(const std::string& head);
void Pong();
@ -92,14 +94,5 @@ namespace ver_2
void MoveImage(cJSON* json);
void ExchangeImage(cJSON* json);
void ImageBookSort(cJSON* json);
private:
std::string m_initDeviceIden;
bool m_initDeviceHaveIden;
std::string m_startScanIden;
bool m_startScanHaveIden;
bool m_startScanBlankCheck;
bool m_startScanIsLocalSave;
bool m_startScanIsGetBase64;
};
}