LLRP для Zebra FX7500 с llrpjs не читает теги

Используя библиотеку llrpjs для Node.js, мы пытаемся прочитать теги с Zebra FX7500 (Motorola?). Это обсуждение указывает на страницы 142-144 Руководства по управлению программным интерфейсом считывателя RFID, но не указывает возможные значения для настройки устройства.

Из того, что мы можем собрать, мы должны создать a с пользовательским параметром ( MotoDefaultSpec = VendorIdentifier: 161, ParameterSubtype: 102, UseDefaultSpecForAutoMode: true). Нужно ли нам включать ROSpecи/или AccessSpecзначения (требуются ли они)? После отправки SET_READER_CONFIGсообщение, нам все еще нужно отправлять обычные сообщения LRP ( ADD_ROSPEC, ENABLE_ROSPEC, START_ROSPEC)? Без , даже после отправки обычных сообщений LLRP, отправка не извлекает ни теги, ни пользовательское сообщение с . Оба они запускают сообщение о событии, но tagReportDataнулевой.

В файле README для llrpjs "Поддержка определений поставщиков" указана как элемент TODO. Хотя это несколько расплывчато, возможно ли, что библиотека просто не реализовала поддержку пользовательских расширений LLRP (сообщения/параметры), поэтому ни одна из наших попыток не работает? В MotoDefaultSpecпараметр и являются пользовательскими для поставщика/набора микросхем. В MOTO_GET_TAG_EVENT_REPORTпользовательское сообщение, кажется, вызывает RO_ACCESS_REPORTаналогично базовому LLR GET_REPORTсообщение, поэтому мы предполагаем, что эта часть работает.

Стоит отметить, что инструмент настройки и оптимизации Zebra 123RFID Desktop подключается и считывает метки, как и ожидалось, поэтому устройство и антенна работают (считывают метки).

Могут ли эти проблемы быть связаны с используемым нами файлом ROSPEC (см. ниже)?

      {
  "$schema": "https://llrpjs.github.io/schema/core/encoding/json/1.0/llrp-1x0.schema.json",
  "id": 1,
  "type": "ADD_ROSPEC",
  "data": {
    "ROSpec": {
      "ROSpecID": 123,
      "Priority": 1,
      "CurrentState": "Disabled",
      "ROBoundarySpec": {
        "ROSpecStartTrigger": {
          "ROSpecStartTriggerType": "Immediate"
        },
        "ROSpecStopTrigger": {
          "ROSpecStopTriggerType": "Null",
          "DurationTriggerValue": 0
        }
      },
      "AISpec": {
        "AntennaIDs": [1, 2, 3, 4],
        "AISpecStopTrigger": {
          "AISpecStopTriggerType": "Null",
          "DurationTrigger": 0
        },
        "InventoryParameterSpec": {
          "InventoryParameterSpecID": 1234,
          "ProtocolID": "EPCGlobalClass1Gen2"
        }
      },
      "ROReportSpec": {
        "ROReportTrigger": "Upon_N_Tags_Or_End_Of_ROSpec",
        "N": 1,
        "TagReportContentSelector": {
          "EnableROSpecID": true,
          "EnableAntennaID": true,
          "EnableFirstSeenTimestamp": true,
          "EnableLastSeenTimestamp": true,
          "EnableSpecIndex": false,
          "EnableInventoryParameterSpecID": false,
          "EnableChannelIndex": false,
          "EnablePeakRSSI": false,
          "EnableTagSeenCount": true,
          "EnableAccessSpecID": false
        }
      }
    }
  }
}

1 ответ

Для тех, у кого есть аналогичная проблема, мы обнаружили, что попытка настроить больше антенн, чем подключено устройство Zebra, приводит к сбою всей спецификации. В нашем случае у нас были подключены две антенны, поэтому включение антенн 3 и 4 в спецификацию вызывало проблему.

См. ниже рабочий РОСПЭК. Дополнительные антенны вdata.AISpec.AntennaIDsбыли удалены и позволили нашему приложению подключаться и читать теги.

У нас все еще есть некоторые проблемы с llrpjs при попытке, потому что он отправляетRO_ACCESS_REPORTответ безresNameценить. См. вопрос на GitHub для получения дополнительной информации.

При этом наше приложение работает без отправкиSTOP_ROSPECкоманда.

      {
  "$schema": "https://llrpjs.github.io/schema/core/encoding/json/1.0/llrp-1x0.schema.json",
  "id": 1,
  "type": "ADD_ROSPEC",
  "data": {
    "ROSpec": {
      "ROSpecID": 123,
      "Priority": 1,
      "CurrentState": "Disabled",
      "ROBoundarySpec": {
        "ROSpecStartTrigger": {
          "ROSpecStartTriggerType": "Null"
        },
        "ROSpecStopTrigger": {
          "ROSpecStopTriggerType": "Null",
          "DurationTriggerValue": 0
        }
      },
      "AISpec": {
        "AntennaIDs": [1, 2],
        "AISpecStopTrigger": {
          "AISpecStopTriggerType": "Null",
          "DurationTrigger": 0
        },
        "InventoryParameterSpec": {
          "InventoryParameterSpecID": 1234,
          "ProtocolID": "EPCGlobalClass1Gen2",
          "AntennaConfiguration": {
            "AntennaID": 1,
            "RFReceiver": {
              "ReceiverSensitivity": 0
            },
            "RFTransmitter": {
              "HopTableID": 1,
              "ChannelIndex": 1,
              "TransmitPower": 170
            },
            "C1G2InventoryCommand": {
              "TagInventoryStateAware": false,
              "C1G2RFControl": {
                "ModeIndex": 23,
                "Tari": 0
              },
              "C1G2SingulationControl": {
                "Session": 1,
                "TagPopulation": 32,
                "TagTransitTime": 0,
                "C1G2TagInventoryStateAwareSingulationAction": {
                  "I": "State_A",
                  "S": "SL"
                }
              }
            }
          }
        }
      },
      "ROReportSpec": {
        "ROReportTrigger": "Upon_N_Tags_Or_End_Of_AISpec",
        "N": 1,
        "TagReportContentSelector": {
          "EnableROSpecID": true,
          "EnableAntennaID": true,
          "EnableFirstSeenTimestamp": true,
          "EnableLastSeenTimestamp": true,
          "EnableTagSeenCount": true,
          "EnableSpecIndex": false,
          "EnableInventoryParameterSpecID": false,
          "EnableChannelIndex": false,
          "EnablePeakRSSI": false,
          "EnableAccessSpecID": false
        }
      }
    }
  }
}
Другие вопросы по тегам