diff --git a/doc/webservice/新版websdk接口说明.doc b/doc/webservice/新版websdk接口说明.doc index 6e9c45fc..065f1786 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 e27cc767..7cf56768 100644 --- a/sdk/webservice/ManagerV2.cpp +++ b/sdk/webservice/ManagerV2.cpp @@ -1377,6 +1377,30 @@ namespace ver_2 return 0; } + int ManagerV2::GetDeviceFWVersion(std::string& fwVer, std::string& errInfo) + { + errInfo = "错误"; + fwVer.clear(); + + if (!m_openDevice) + { + errInfo = "还未打开设备"; + return -1; + } + + char v[256] = {0}; + SANE_Status status = sane_control_option(m_devHandle, (SANE_Int)0x8857, SANE_ACTION_GET_VALUE, v, NULL); + if (SANE_STATUS_GOOD != status) + { + errInfo = Utf8ToStdString(sane_strstatus(status)); + return -1; + } + + fwVer = v; + errInfo.clear(); + return 0; + } + int ManagerV2::SetDeviceParam(const std::vector& devParams, std::string& errInfo) { errInfo = "错误"; diff --git a/sdk/webservice/ManagerV2.h b/sdk/webservice/ManagerV2.h index 91da3dff..c735c6e0 100644 --- a/sdk/webservice/ManagerV2.h +++ b/sdk/webservice/ManagerV2.h @@ -191,6 +191,8 @@ namespace ver_2 int CloseDevice(std::string& errInfo); // 获取设备序列号 int GetDeviceSN(std::string& sn, std::string& errInfo); + // 获取设备固件版本号 + int GetDeviceFWVersion(std::string& fwVer, 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 648eb50a..642f06d2 100644 --- a/sdk/webservice/WSUser.cpp +++ b/sdk/webservice/WSUser.cpp @@ -317,6 +317,10 @@ namespace ver_2 else if ("get_device_sn" == func) { GetDeviceSN(json); + } + else if ("get_device_fwversion" == func) + { + GetDeviceFWVersion(json); } else if ("set_device_param" == func) { @@ -2472,6 +2476,40 @@ namespace ver_2 } } + void WSUser::GetDeviceFWVersion(cJSON* json) + { + assert(NULL != json); + + std::string fwVersion; + std::string errInfo; + int ret = GetManager()->GetDeviceFWVersion(fwVersion, 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_fwversion")); + 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, "fwversion", cJSON_CreateString(StdStringToUtf8(fwVersion).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 60eb8be6..26de1179 100644 --- a/sdk/webservice/WSUser.h +++ b/sdk/webservice/WSUser.h @@ -58,6 +58,7 @@ namespace ver_2 void OpenDevice(cJSON* json); void CloseDevice(cJSON* json); void GetDeviceSN(cJSON* json); + void GetDeviceFWVersion(cJSON* json); void SetDeviceParam(cJSON* json); void GetDeviceParam(cJSON* json); void ResetDeviceParam(cJSON* json);