使用llrpjs库 for Node.js,我们尝试从斑马FX7500 (摩托罗拉?)读取标签。这一讨论指向142-144页,但没有指出设置设备的潜在值。
根据我们可以收集的内容,我们应该发出一个带有自定义参数(MotoDefaultSpec = VendorIdentifier: 161, ParameterSubtype: 102, UseDefaultSpecForAutoMode: true)的MotoDefaultSpec = VendorIdentifier: 161, ParameterSubtype: 102, UseDefaultSpecForAutoMode: true。我们是否也需要包括ROSpec和/或AccessSpec值(它们是必需的)?在发送SET_READER_CONFIG消息之后,还需要发送常规的LLRP消息(ADD_ROSPEC、ENABLE_ROSPEC、START_ROSPEC)吗?如果没有MotoDefaultSpec,即使在发送常规LLRP消息之后,发送GET_REPORT也不会检索标记,也不会使用MOTO_GET_TAG_EVENT_REPORT检索自定义消息。它们都会触发一个RO_ACCESS_REPORT事件消息,但是tagReportData是空的。
用于llrpjs的自述文件将“供应商定义支持”作为TODO项目列出。虽然这有点模糊,但是库是否可能没有实现自定义LLRP扩展(消息/参数)支持,这就是为什么我们的尝试都没有起作用?MotoDefaultSpec参数和MOTO_GET_TAG_EVENT_REPORT是为供应商/芯片组定制的。MOTO_GET_TAG_EVENT_REPORT自定义消息似乎触发了类似于基本LLRP GET_REPORT消息的RO_ACCESS_REPORT,因此我们假设该部分正在工作。
值得注意的是,Zebra的123 tool桌面安装和优化工具按预期连接和读取标签,因此设备和天线正在工作(读取标签)。
这些问题是否与我们正在使用的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
}
}
}
}
}发布于 2022-08-18 21:53:27
对于任何有类似问题的人,我们发现试图配置比Zebra设备更多的天线会导致整个规范失败。在我们的例子中,我们有两个天线连接,所以包括天线3和4在规范是造成问题。
关于ROSPEC的工作,见下文。data.AISpec.AntennaIDs属性中的额外天线被删除,并允许我们的应用程序连接和读取标记。
在尝试STOP_ROSPEC时,我们仍然对llrpjs有一些问题,因为它发送一个没有resName值的RO_ACCESS_REPORT响应。有关详细信息,请参阅关于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
}
}
}
}
}https://stackoverflow.com/questions/71969968
复制相似问题