Compare commits
3 Commits
35411e5c84
...
ac4f938e32
Author | SHA1 | Date |
---|---|---|
luoliangyi | ac4f938e32 | |
luoliangyi | f26ecbcc34 | |
luoliangyi | dec98c1891 |
|
@ -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);
|
||||
}
|
||||
|
@ -4464,16 +4485,12 @@ namespace ver_2
|
|||
{
|
||||
HGBase_SetImageDpi(img, p->m_dpi, p->m_dpi);
|
||||
|
||||
HGBool blank = HGFALSE;
|
||||
if (p->m_scanBlankCheck)
|
||||
HGImgProc_ImageBlankCheck(img, NULL, &blank);
|
||||
|
||||
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;
|
||||
|
@ -4488,10 +4505,20 @@ namespace ver_2
|
|||
}
|
||||
}
|
||||
|
||||
HGBool blank = HGFALSE;
|
||||
if (p->m_scanBlankCheck)
|
||||
HGImgProc_ImageBlankCheck(img, NULL, &blank);
|
||||
|
||||
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_scanLocalSave)
|
||||
{
|
||||
HGBase_DeleteFile(imagePath.c_str());
|
||||
}
|
||||
}
|
||||
HGBase_LeaveLock(p->m_lock);
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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,25 +919,19 @@ 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)
|
||||
{
|
||||
std::string errInfo;
|
||||
p->GetManager()->LoadLocalImage(path, base64, errInfo);
|
||||
}
|
||||
|
||||
cJSON *retJson = cJSON_CreateObject();
|
||||
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,13 +939,16 @@ 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()));
|
||||
else
|
||||
HGBase_DeleteFile(path);
|
||||
|
||||
if (p->m_startScanIsGetBase64)
|
||||
if (getBase64)
|
||||
{
|
||||
std::string base64;
|
||||
std::string errInfo;
|
||||
p->GetManager()->LoadLocalImage(path, base64, errInfo);
|
||||
cJSON_AddItemToObject(retJson, "image_base64", cJSON_CreateString(base64.c_str()));
|
||||
}
|
||||
|
||||
char* resp = cJSON_Print(retJson);
|
||||
if (NULL != resp)
|
||||
|
@ -2479,19 +2474,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)
|
||||
|
@ -2521,9 +2505,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);
|
||||
|
||||
|
@ -3058,25 +3039,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)
|
||||
|
@ -3106,12 +3070,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);
|
||||
|
||||
|
|
|
@ -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;
|
||||
};
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue