Как вы интерпретируете битовую строку, используя Sharp snmp lib (hrPrinterDetectedErrorState)?

Как вы интерпретируете hrPrinterDetectedErrorState (http://cric.grenoble.cnrs.fr/Administrateurs/Outils/MIBS/?oid=1.3.6.1.2.1.25.3.5.1.2) или что-то подобное с использованием Sharp Snmp lib? Есть ли какой-то тип битовой строки? Это своего рода битовая маска, но вы можете получить только один байт вместо двух (или я видел четыре байта).


person js2010    schedule 01.03.2018    source источник
comment
Невозможно. Для интерпретации BITS документы MIB обязательны, и только #SNMP Pro имеет такую ​​поддержку.   -  person Lex Li    schedule 02.03.2018
comment
Спасибо за ответ. Есть ли какой-то общий метод #snmp, который преобразует многобайтовую строку октетов в биты (или целое число)?   -  person js2010    schedule 02.03.2018
comment
GetRaw() возвращает массив байтов. Я имел в виду одно целое число.   -  person js2010    schedule 02.03.2018
comment
байты еще проще для битовых операций.   -  person Lex Li    schedule 02.03.2018
comment
В случае hrPrinterDetectedErrorState мне пришлось бы иметь 2 перечисления [flags] вместо одного, потому что нужно проверить 15 бит.   -  person js2010    schedule 02.03.2018


Ответы (1)


Сделал сам в powershell.

[flags()] Enum hrPrinterDetectedErrorState
{
  lowPaper            = 0x8000
  noPaper             = 0x4000
  lowToner            = 0x2000
  noToner             = 0x1000
  doorOpen            = 0x0800
  jammed              = 0x0400
  Offline             = 0x0200
  serviceRequested    = 0x0100

  inputTrayMissing    = 0x0080
  outputTrayMissing   = 0x0040
  markerSupplyMissing = 0x0020
  outputNearFull      = 0x0010
  outputFull          = 0x0008
  inputTrayEmpty      = 0x0004
  overduePreventMaint = 0x0002
  notUsed             = 0x0001
}

function snmpmessage($data) {

  $bytes = [byte[]][char[]]$data

  # pack up to two bytes into an int left to right
  $code = [int]$bytes[0]
  $code = $code -shl 8
  if ($bytes[1]) { $code = $code + $bytes[1] }

  [hrPrinterDetectedErrorState]$code

}

PS C:\> snmpmessage -join [char[]](0x91,0x04)
inputTrayEmpty, serviceRequested, noToner, lowPaper
person js2010    schedule 28.03.2019