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
}
}
}
}
}