2010-01-26 12 views
7

Kodowanie agenta SNMP. Chcę wysłać wartości, które mają przecinek dziesiętny do Menedżera SNMP.Jaki jest dobry sposób wyświetlania liczby zmiennoprzecinkowej za pośrednictwem SNMP?

mam kilka opcji:

  1. obciąć liczbę.
  2. Pomnóż przez stałą.
  3. Zapytaj Stackoverflow.

Jeśli skracam numer, utracę wiele potrzebnych informacji.

Jeśli pomnożę przez stałą, menedżer wyświetli dziwne jednostki, których użytkownik raczej nie zobaczy. (gramy zamiast kilogramów).

Tak więc, robię opcję 3. Co mam zrobić?

Odpowiedz

11

Zazwyczaj standardowym sposobem jest zdefiniowanie KONWENCJI TEXTUALNEJ z typem całkowitym (takim jak Integer32 lub Unsigned32) i DISPLAY-HINT z formatem "dN", gdzie N to liczba umieszcza separator dziesiętny w celu wyświetlania.

W związku z tym dla wartości z jednym miejscem po przecinku w zakresie od (na przykład) do 10,0, należy użyć KONWENCJI TEKSTOWEJ typu Unsigned32 (0..100) i WYŚWIETLACZ-WSKAZÓWKA "d-1" . Na przewodzie wartość wynosi od 0 do 100, ale menedżer (za pomocą załadowanego modułu MIB) przesunie dziesiętne jedno miejsce, aby wyświetlić zakres od 0,0 do 10,0.

Inne sposoby robienia tego nie sprzyjają interoperacyjności.

1

Ja raczej wysyłam te dane przez OCTET STRING/DisplayString. Numery takie jak "1.5" można łatwo wysłać.

Jeśli jednak dane muszą być dokładne, możesz użyć sugestii Kyle'a wysyłając bajty (oktety). Zauważalnie, że jest również wysyłane przez OCTET STRING, ponieważ jest to idealny pojemnik bajtowy.

+0

Moją obawą wysłania reprezentacji testowej jest to, że Menedżer SNMP nie może wykonywać żadnych obliczeń z tymi danymi. – Robert

Powiązane problemy