Мой первый вопрос здесь;) Я застрял в попытке установить значение на устройстве с протоколом SNMP с помощью библиотеки SNMP ++ (http://www.agentpp.com/doc/snmp++3.x/index.html). Когда я проверяю значение с визуальным браузером MIB, он отображается как непрозрачный (на устройстве это, по сути, поплавок).SNMP: Невозможно создать/установить переменную, неправильное кодирование
Таким образом, текущее значение переменной равно 1.0 (которое представлено как Octed String как 9F 78 04 3F 80 00 00, не знаю, почему первые 4 гекса-пары являются такими, но 3F 80 00 00 точно 1.0 в floatish). Я модифицировал SNMPSET консольных пример немного, так что теперь, когда я хочу, чтобы установить значение, я делаю следующим образом:
(внутри determine_vb (...) функция)
case sNMP_SYNTAX_OPAQUE:
{
string str;
cout << "Opaque\n";
cout << "Please enter new value: ";
cin >> str;
// float value_float = atof(str.c_str());
const char * value_char = str.c_str();
vb.set_value(value_char);
return true;
}
(здесь у вас есть полный .cpp файл) http://pastebin.com/8sLTyP8D
к сожалению, данные настройки для VB таким образом, кажется, не работает, так как установка параметров дает мне следующее сообщение об ошибке:
Set Status = SNMP: Cannot create/set variable, Wrong Encoding
Кто-нибудь из вас знает, как правильно закодировать float для SNMP-запроса, поэтому он будет принят?
С уважением! Filip