diff --git a/doc/webservice/新版websdk接口说明.doc b/doc/webservice/新版websdk接口说明.doc index 1e328964..6d43922c 100644 Binary files a/doc/webservice/新版websdk接口说明.doc and b/doc/webservice/新版websdk接口说明.doc differ diff --git a/sdk/webservice/ManagerV2.cpp b/sdk/webservice/ManagerV2.cpp index 10a88ca4..408f6431 100644 --- a/sdk/webservice/ManagerV2.cpp +++ b/sdk/webservice/ManagerV2.cpp @@ -1224,11 +1224,15 @@ namespace ver_2 errInfo = "错误"; if (m_initDevice) + { + errInfo = "已初始化"; return -1; + } SANE_Int version_code = 0; if (SANE_STATUS_GOOD != sane_init_ex(&version_code, sane_ex_callback, this)) { + errInfo = "初始化失败"; return -1; } @@ -1242,7 +1246,10 @@ namespace ver_2 errInfo = "错误"; if (!m_initDevice) + { + errInfo = "还未初始化"; return -1; + } std::string errInfo2; CloseDevice(errInfo2); @@ -1265,7 +1272,10 @@ namespace ver_2 errInfo = "错误"; if (!m_initDevice) + { + errInfo = "还未初始化"; return -1; + } HGBase_EnterLock(m_lock); deviceNameList = m_devNameList; @@ -1278,13 +1288,25 @@ namespace ver_2 { errInfo = "错误"; - if (!m_initDevice || m_openDevice) + if (!m_initDevice) + { + errInfo = "还未初始化"; return -1; + } + + if (m_openDevice) + { + errInfo = "已打开设备"; + return -1; + } SANE_Handle dev = NULL; SANE_Status status = sane_open(deviceName.c_str(), &dev); if (SANE_STATUS_GOOD != status) + { + errInfo = Utf8ToStdString(sane_strstatus(status)); return -1; + } // 从配置文件加载devParams std::vector devParams; @@ -1310,7 +1332,10 @@ namespace ver_2 errInfo = "错误"; if (!m_openDevice) + { + errInfo = "还未打开设备"; return -1; + } std::string errInfo2; StopScan(errInfo2); @@ -1325,12 +1350,45 @@ namespace ver_2 return 0; } + int ManagerV2::GetDeviceSN(std::string& sn, std::string& errInfo) + { + errInfo = "错误"; + sn.clear(); + + if (!m_openDevice) + { + errInfo = "还未打开设备"; + return -1; + } + + char v[256] = {0}; + SANE_Status status = sane_control_option(m_devHandle, (SANE_Int)0x8856, SANE_ACTION_GET_VALUE, v, NULL); + if (SANE_STATUS_GOOD != status) + { + errInfo = Utf8ToStdString(sane_strstatus(status)); + return -1; + } + + sn = v; + errInfo.clear(); + return 0; + } + int ManagerV2::SetDeviceParam(const std::vector& devParams, std::string& errInfo) { errInfo = "错误"; - if (!m_openDevice || m_scanning) + if (!m_openDevice) + { + errInfo = "还未打开设备"; return -1; + } + + if (m_scanning) + { + errInfo = "已启动扫描"; + return -1; + } // 设置devParams到设备 int ret = SetParamsToDevice(m_devHandle, devParams); @@ -1351,8 +1409,17 @@ namespace ver_2 devParams.clear(); errInfo = "错误"; - if (!m_openDevice || m_devParams.empty()) + if (!m_openDevice) + { + errInfo = "还未打开设备"; return -1; + } + + if (m_devParams.empty()) + { + errInfo = "获取设备信息失败"; + return -1; + } devParams = m_devParams; errInfo.clear(); @@ -1363,8 +1430,17 @@ namespace ver_2 { errInfo = "错误"; - if (!m_openDevice || m_scanning) - return -1; + if (!m_openDevice) + { + errInfo = "还未打开设备"; + return -1; + } + + if (m_scanning) + { + errInfo = "已启动扫描"; + return -1; + } // 重置参数 int ret = ResetParamsToDevice(m_devHandle); @@ -1384,8 +1460,11 @@ namespace ver_2 { errInfo = "错误"; - if (!m_openDevice) - return -1; + if (!m_openDevice) + { + errInfo = "还未打开设备"; + return -1; + } deviceName = m_devName; errInfo.clear(); @@ -1396,8 +1475,17 @@ namespace ver_2 { errInfo = "错误"; - if (!m_openDevice || m_scanning) - return -1; + if (!m_openDevice) + { + errInfo = "还未打开设备"; + return -1; + } + + if (m_scanning) + { + errInfo = "已启动扫描"; + return -1; + } m_scanBlankCheck = blankCheck; m_scanTemp = temp; @@ -1407,6 +1495,7 @@ namespace ver_2 SANE_Status status = sane_start(m_devHandle); if (SANE_STATUS_GOOD != status) { + errInfo = Utf8ToStdString(sane_strstatus(status)); HGBase_DestroyEvent(m_scanEvent); m_scanEvent = NULL; m_scanBlankCheck = false; @@ -1423,8 +1512,11 @@ namespace ver_2 { errInfo = "错误"; - if (!m_scanning) - return -1; + if (!m_scanning) + { + errInfo = "还未启动扫描"; + return -1; + } assert(NULL != m_devHandle); sane_cancel(m_devHandle); diff --git a/sdk/webservice/ManagerV2.h b/sdk/webservice/ManagerV2.h index 6e48e4b2..af014d9c 100644 --- a/sdk/webservice/ManagerV2.h +++ b/sdk/webservice/ManagerV2.h @@ -189,6 +189,8 @@ namespace ver_2 int OpenDevice(const std::string& deviceName, std::string& errInfo); // 关闭设备 int CloseDevice(std::string& errInfo); + // 获取设备序列号 + int GetDeviceSN(std::string& sn, std::string& errInfo); // 设置设备参数 int SetDeviceParam(const std::vector& devParams, std::string& errInfo); // 获取设备参数 diff --git a/sdk/webservice/WSUser.cpp b/sdk/webservice/WSUser.cpp index be869d2b..eb5c7fdc 100644 --- a/sdk/webservice/WSUser.cpp +++ b/sdk/webservice/WSUser.cpp @@ -314,6 +314,10 @@ namespace ver_2 { CloseDevice(json); } + else if ("get_device_sn" == func) + { + GetDeviceSN(json); + } else if ("set_device_param" == func) { SetDeviceParam(json); @@ -2432,6 +2436,40 @@ namespace ver_2 } } + void WSUser::GetDeviceSN(cJSON* json) + { + assert(NULL != json); + + std::string sn; + std::string errInfo; + int ret = GetManager()->GetDeviceSN(sn, errInfo); + + bool findIden = false; + std::string iden = GetJsonStringValue(json, "iden", &findIden); + + cJSON* retJson = cJSON_CreateObject(); + if (NULL != retJson) + { + cJSON_AddItemToObject(retJson, "func", cJSON_CreateString("get_device_sn")); + if (findIden) + cJSON_AddItemToObject(retJson, "iden", cJSON_CreateString(iden.c_str())); + cJSON_AddItemToObject(retJson, "ret", cJSON_CreateNumber(ret)); + if (0 != ret) + cJSON_AddItemToObject(retJson, "err_info", cJSON_CreateString(StdStringToUtf8(errInfo).c_str())); + else + cJSON_AddItemToObject(retJson, "sn", cJSON_CreateString(StdStringToUtf8(sn).c_str())); + + char* resp = cJSON_Print(retJson); + if (NULL != resp) + { + SendResponse((const HGByte*)resp, (HGUInt)strlen(resp), HGTRUE); + free(resp); + } + + cJSON_Delete(retJson); + } + } + void WSUser::SetDeviceParam(cJSON* json) { assert(NULL != json); diff --git a/sdk/webservice/WSUser.h b/sdk/webservice/WSUser.h index 896d5788..60eb8be6 100644 --- a/sdk/webservice/WSUser.h +++ b/sdk/webservice/WSUser.h @@ -57,6 +57,7 @@ namespace ver_2 void GetDeviceNameList(cJSON* json); void OpenDevice(cJSON* json); void CloseDevice(cJSON* json); + void GetDeviceSN(cJSON* json); void SetDeviceParam(cJSON* json); void GetDeviceParam(cJSON* json); void ResetDeviceParam(cJSON* json); diff --git a/test/webservice/demo.html b/test/webservice/demo.html index 2915bf2f..05f88bf2 100644 --- a/test/webservice/demo.html +++ b/test/webservice/demo.html @@ -137,6 +137,10 @@ { alert(msg.data); } + else if ("get_device_sn" == message['func']) + { + alert(msg.data); + } else if ("set_device_param" == message['func']) { alert(msg.data); @@ -559,6 +563,13 @@ })); } + function GetDeviceSN() + { + socket.send(JSON.stringify({ + 'func':'get_device_sn' + })); + } + function SetDeviceParam() { socket.send(JSON.stringify({ @@ -933,6 +944,7 @@ +