diff --git a/sdk/webservice/ManagerV2.cpp b/sdk/webservice/ManagerV2.cpp index e473eb88..32454f6c 100644 --- a/sdk/webservice/ManagerV2.cpp +++ b/sdk/webservice/ManagerV2.cpp @@ -3625,29 +3625,32 @@ namespace ver_2 if (0 == strcmp(devParams[i].name.c_str(), name) || 0 == strcmp(devParams[i].title.c_str(), title)) { - if (SANE_TYPE_STRING == desp->type) - { - if (SANE_STATUS_GOOD != sane_control_option(hdev, j, SANE_ACTION_SET_VALUE, (void*)devParams[i].stringValue.c_str(), NULL)) - ret = -1; - } - else if (SANE_TYPE_INT == desp->type) - { - SANE_Int value = devParams[i].intValue; - if (SANE_STATUS_GOOD != sane_control_option(hdev, j, SANE_ACTION_SET_VALUE, &value, NULL)) - ret = -1; - } - else if (SANE_TYPE_FIXED == desp->type) - { - SANE_Fixed value = SANE_FIX(devParams[i].doubleValue); - if (SANE_STATUS_GOOD != sane_control_option(hdev, j, SANE_ACTION_SET_VALUE, &value, NULL)) - ret = -1; - } - else if (SANE_TYPE_BOOL == desp->type) - { - SANE_Bool value = (SANE_Bool)devParams[i].boolValue; - if (SANE_STATUS_GOOD != sane_control_option(hdev, j, SANE_ACTION_SET_VALUE, &value, NULL)) - ret = -1; - } + if (!IS_CAP_READONLY(desp->cap)) + { + if (SANE_TYPE_STRING == desp->type) + { + if (SANE_STATUS_GOOD != sane_control_option(hdev, j, SANE_ACTION_SET_VALUE, (void*)devParams[i].stringValue.c_str(), NULL)) + ret = -1; + } + else if (SANE_TYPE_INT == desp->type) + { + SANE_Int value = devParams[i].intValue; + if (SANE_STATUS_GOOD != sane_control_option(hdev, j, SANE_ACTION_SET_VALUE, &value, NULL)) + ret = -1; + } + else if (SANE_TYPE_FIXED == desp->type) + { + SANE_Fixed value = SANE_FIX(devParams[i].doubleValue); + if (SANE_STATUS_GOOD != sane_control_option(hdev, j, SANE_ACTION_SET_VALUE, &value, NULL)) + ret = -1; + } + else if (SANE_TYPE_BOOL == desp->type) + { + SANE_Bool value = (SANE_Bool)devParams[i].boolValue; + if (SANE_STATUS_GOOD != sane_control_option(hdev, j, SANE_ACTION_SET_VALUE, &value, NULL)) + ret = -1; + } + } find = true; break;