我正在尝试编写一个使用 Zebra FX9500 RFID 阅读器读取标签库存的应用程序。我尝试从制造商网站安装 SDK,但不明白如何使用它,而且我也不熟悉 C、C# 或 Java,所以我找到了一个使用 LLRP 协议进行通信的 Python 库 ( sllurp )带有 RFID 阅读器。
git 的自述文件提供了一个示例代码,看起来很简单,应该返回一些标签:
# Minimal example; see inventory.py for more.
from sllurp import llrp
from twisted.internet import reactor
import logging
logging.getLogger().setLevel(logging.INFO)
def cb (tagReport):
tags = tagReport.msgdict['RO_ACCESS_REPORT']['TagReportData']
print 'tags:', tags
factory = llrp.LLRPClientFactory()
factory.addTagReportCallback(cb)
reactor.connectTCP('myreader', llrp.LLRP_PORT, factory)
reactor.run()
使用它,程序将返回“tags = []”。
该库还提供了一个 CLI,用于从 RFID 阅读器获取库存。sllurp inventory
从命令行运行,程序将开始与阅读器通信,并保持在看似无限的库存阅读循环中(阅读器上的 LED 一直闪烁)。在这一点上,我似乎只能通过使用 CTRL+C 来阻止它。停止后,程序将返回标签列表。
到目前为止一切顺利,但我实际上想连接到阅读器,只阅读一次(或几秒钟,我不知道)并获得一组标签。
尝试自己调试,但只能到此为止。似乎我不能在这里发布日志,因为它有太多字符,但我在 GIT here中打开了一个问题。
如果有人对 sllurp 模块或 LLRP 协议有任何经验,也许你可以提供帮助。我怎样才能停止库存读取循环?我可以发送一个 STOP_ROSPEC/ROSpecStopTrigger 来终止库存读数吗?我该怎么做?
谢谢!