LLRPCSharpVirtual Device CLI GitHub ↗

LLRPCSHARP / CLI USER’S GUIDE

Virtual Device CLI User’s Guide

LlrpVirtualDevice.Cli 是设备侧的独立命令行工具。它在一个进程中托管一台确定性虚拟 LLRP 设备,提供标准 TCP 端点,让 Reader SDK、WPF 客户端或第三方 LLRP 客户端在没有真实硬件时进行联调。

1. 定位与启动

从源码启动。无参数进入交互式设备 Shell,但不会立即创建设备:

dotnet run --project src/LlrpVirtualDevice.Cli/LlrpVirtualDevice.Cli.csproj

命令行帮助使用的可执行文件名是 llrp-virtual-device;源码运行时使用上面的项目路径。

这是“单台设备”工具,不是多设备管理器,也不会自动恢复进程重启前的 ROSpec、AccessSpec 或盘点状态。

2. 运行模式

llrp-virtual-device进入 Shell,不创建设备。
llrp-virtual-device run [options]创建并以前台服务模式运行,Ctrl+C 停止。
llrp-virtual-device live [options]自动创建并启动设备,然后进入带 RX/TX 事件输出的 Shell。
llrp-virtual-device shell显式进入空的交互式 Shell。
llrp-virtual-device validate --config PATH校验一个本地 JSON 设备配置。
llrp-virtual-device presets列出内置设备预设。
llrp-virtual-device caps列出能力 Profile。
# 安静的前台服务
dotnet run --project src/LlrpVirtualDevice.Cli/LlrpVirtualDevice.Cli.csproj -- run --port 5084

# 自动启动并观察客户端产生的 RX/TX 报文
dotnet run --project src/LlrpVirtualDevice.Cli/LlrpVirtualDevice.Cli.csproj -- live --llrp 1.0.1

live 不会自己伪造客户端请求;必须由 LlrpCli、Reader SDK 或其他 LLRP 客户端连接并产生流量。

3. 交互式生命周期 Shell

进入 Shell 后,生命周期按“创建 → 启动 → 观察 → 停止/销毁”管理:

vdev (empty)> server create --llrp 1.0.1
vdev (created)> server start
vdev (running)> server status
vdev (running)> logs on
vdev (running)> server stop
vdev (stopped)> server destroy
vdev (empty)> exit
server create [options]创建 Host,但默认不绑定 TCP。
server run [options]创建并启动一台设备。
server start|stop|restart控制同一个 Host 的监听器和客户端会话。
server status显示状态、端点、协议、Profile 和客户端数量。
server destroy销毁当前设备,之后才能创建下一台。
logs on|off|status控制生命周期、客户端和解码后的 RX/TX 事件输出。

默认监听地址是 127.0.0.1、端口是 5084、连接数为 1;通过 --listen、--port 和 --max-client-connections 覆盖。

4. 预设与 JSON 配置

当前内置预设以协议和设备形状为中心,而不是虚构的业务场景:

llrp.standard101.basic

LLRP 1.0.1 标准设备与确定性标签报告。

llrp.standard101.strict

LLRP 1.0.1 标准设备,启用严格盘点状态校验。

llrp.standard11.basic

LLRP 1.1 设备,显式执行版本协商。

llrp.standard20.basic

当前 LLRP 2.0 翻译设备基线。

impinj.r420.basic

Impinj R420 形状的 LLRP 1.0.1 扩展设备。

配置文件描述能力 Profile、数据源、报告节奏和确定性 RF 可观察行为;监听地址、端口和运行中的 ROSpec/AccessSpec 不写入配置:

{
  "schemaVersion": 1,
  "presetId": "llrp.standard101.basic",
  "capabilityProfileId": "llrp1.0.1_standard",
  "protocolVersion": "1.0.1",
  "inventoryDataSource": "default",
  "reportIntervalMilliseconds": 100,
  "repeat": true,
  "rfScenario": "static",
  "randomSeed": 2026,
  "singleTagProbability": 0.85,
  "maxTagsPerRound": 2,
  "tags": [
    {
      "epc": "E28011910000000000000001",
      "antennaId": 1,
      "peakRssi": -55,
      "tid": "E280110520007001",
      "userMemory": [4660, 22136]
    }
  ]
}
# 校验配置
dotnet run --project src/LlrpVirtualDevice.Cli/LlrpVirtualDevice.Cli.csproj -- validate --config virtual-device.json

# 运行配置
dotnet run --project src/LlrpVirtualDevice.Cli/LlrpVirtualDevice.Cli.csproj -- run --config virtual-device.json

标准 Profile 暴露 4 根逻辑天线,默认数据源包含确定性标签。static、moving-tags 和 noisy 只控制可观察标签行为,不是物理 RF 波形模拟。

5. 第三方客户端联调

启动虚拟设备后,任何普通 LLRP 客户端都可以连接 127.0.0.1:5084。典型组合是:

01使用 llrp-virtual-device run 或 live 启动设备端。
02使用 LlrpCli、LlrpSdk 或第三方客户端连接端点。
03通过 logs on 观察连接、能力查询、ROSpec 和报告的 RX/TX 事件。

Impinj R420 Profile 已用 ItemTest 2.10.0 验证 LLRP 1.0.1 连接和进入盘点启动流程。这一结论只覆盖 LLRP 通道,不代表实现 mDNS、rshell/SSH 等非 LLRP 服务。

6. 工具边界

Virtual Device CLI 是 SDK 的测试工具,不是产品主页上的主要应用 API。需要在 xUnit 或 WPF 内嵌虚拟设备时,再查看 Virtual Device API Reference;需要命令行联调时留在本指南。
  • 支持标准设备端连接、能力/配置、ROSpec/AccessSpec 生命周期、报告和标准 Tag Access 路径。
  • 不驱动真实 RFID 模块,不计算 Tx Power、灵敏度、Tari、距离和碰撞物理。
  • 默认只托管一个设备实例,不提供多设备目录或跨进程恢复。
  • 设备端的协议版本和厂商 Profile 仍以当前状态与互操作证据为准。