跳转到主要内容

RFID读卡器控制库

项目描述

http://img.shields.io/pypi/v/sllurp.svg https://img.shields.io/pypi/pyversions/sllurp.svg https://github.com/sllurp/sllurp/actions/workflows/test.yml/badge.svg

sllurp是一个用于与RFID读卡器交互的Python库。它是低级读卡协议(LLRP)的纯Python实现。

这些读卡器已知与sllurp配合良好,但应该可以不费太多力气适应其他LLRP兼容的读卡器

  • Impinj Speedway (R1000)

  • Impinj Speedway Revolution (R220, R420)

  • Impinj Speedway xPortal

  • Motorola MC9190-Z (手持式)

如果您想帮助另一种类型的读卡器工作,请在本项目 GitHub 上提交问题。

slurp 采用 GNU 通用公共许可证的第 3 版进行分发。有关详细信息,请参阅 LICENSE.txt

快速开始

PyPI 安装

$ virtualenv .venv
$ source .venv/bin/activate
$ pip install sllurp
$ sllurp inventory ip.add.re.ss

运行 sllurp --helpsllurp inventory --help 查看选项。

或者从 GitHub 安装

$ git clone https://github.com/ransford/sllurp.git
$ cd sllurp
$ virtualenv .venv
$ source .venv/bin/activate
$ pip install .
$ sllurp inventory ip.add.re.ss

如果读者因为您正在对其进行调试而进入一个奇怪的状态(例如,如果您的程序或slurp崩溃),您可以通过运行 sllurp reset ip.add.re.ss 将其恢复到空闲状态。

阅读器 API

slurp 将为其与阅读器的网络交互创建自己的“线程”。要建立连接,创建一个 LLRPReaderClient 并调用其 connect() 方法

# Minimal example; see sllurp/verb/inventory.py for more.
from sllurp import llrp
from sllurp.llrp import LLRPReaderConfig, LLRPReaderClient, LLRP_DEFAULT_PORT
import logging
logging.getLogger().setLevel(logging.INFO)

def tag_report_cb (reader, tag_reports):
    for tag in tag_reports:
        print('tag: %r' % tag)

config = LLRPReaderConfig()
reader = LLRPReaderClient(host, LLRP_DEFAULT_PORT, config)
reader.add_tag_report_callback(tag_report_cb)

reader.connect()
# We are now connected to the reader and inventory is running.

try:
    # Block forever or until a disconnection of the reader
    reader.join(None)
except (KeyboardInterrupt, SystemExit):
    # catch ctrl-C and stop inventory before disconnecting
    reader.disconnect()

从标签报告中获取更多信息

初始化 LLRPReaderConfig 时,在 tag_content_selector 字典参数中设置标志

llrp.LLRPReaderConfig({
    'tag_content_selector': {
        'EnableROSpecID': False,
        'EnableSpecIndex': False,
        'EnableInventoryParameterSpecID': False,
        'EnableAntennaID': True,
        'EnableChannelIndex': False,
        'EnablePeakRSSI': True,
        'EnableFirstSeenTimestamp': False,
        'EnableLastSeenTimestamp': True,
        'EnableTagSeenCount': True,
        'EnableAccessSpecID': False,
    }
})

日志记录

slurp 使用 sllurp 名称进行日志记录,因此如果您希望记录其输出,可以在导入 slurp 的应用程序中这样做

sllurp_logger = logging.getLogger('sllurp')
sllurp_logger.setLevel(logging.DEBUG)
sllurp_logger.setHandler(logging.FileHandler('sllurp.log'))
# or .setHandler(logging.StreamHandler()) to log to stderr...

供应商扩展

slurp 通过 LLRP 的自定义消息功能有限地支持供应商扩展。例如,slurp inventory –impinj-search-mode N 允许您将 Impinj 搜索模式设置为单个目标(1)或双目标(2)。

有用的阅读器命令

要查看 Impinj 阅读器当前正在使用哪些库存设置(即获取当前 ROSpec),通过 ssh 连接到阅读器并

> show rfid llrp rospec 0

重置阅读器的“核选项”是

> reboot

如果您发现了一个错误

GitHub 上创建一个问题!请遵循 Simon Tatham 的 指南 编写良好的错误报告。

当错误报告附带详尽的错误消息时最有用。将 slurp 的日志级别提高到 DEBUG,您可以通过指定 sllurp-d 命令行选项来实现。您可以使用 -l [filename] 选项将日志记录到日志文件。或者只需将此放在您自己的代码的开头

import logging
logging.getLogger('sllurp').setLevel(logging.DEBUG)

已知问题

阅读器模式选择是 令人困惑的,尤其是因为大多数阅读器似乎将 ModeIndexModeIdentifier 混淆。如果您正在使用 sllurp inventory,请使用 --mode-identifier N。检查您的阅读器手册,了解它通过 C1G2RFControl 参数支持哪些模式标识符,或者对阅读器运行 sllurp --debug inventory 以查看在功能描述中的支持模式列表。

贡献

想要贡献?以下是需要改进的一些领域

  • construct 分支中编码更多协议消息。

  • 为常见的编码和解码任务编写测试。

作者

slurp 中的大部分代码由 Ben Ransford 编写,尽管它始于 2013 年 8 月作为一个 LLRPyC 的分支。自分支以来,GitHub 上的许多优秀公民为 slurp 贡献了代码。

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分布

sllurp-2.0.1.tar.gz (66.5 kB 查看哈希值)

上传时间

构建分布

sllurp-2.0.1-py2.py3-none-any.whl (75.7 kB 查看哈希值)

上传时间 Python 2 Python 3

支持者