Virtual Device API(高级测试工具)

LLRPCSHARP / DEVICE SDK PUBLIC API REFERENCE

Virtual Device API(高级测试工具)

LlrpDevice.* 系列包提供通用的 LLRP TCP 服务端引擎、确定性软件虚拟读写器与嵌入式测试宿主,专为脱机 CI/CD 自动化测试与自定义硬件对接而设计。

架构与包分工

Hosting 宿主
LlrpDevice.Virtual.Hosting (xUnit 自动化测试门面)
Server 服务端
LlrpDevice.Server (通用 TCP 报文路由与 LLRP 状态机)
Virtual 仿真核
LlrpDevice.Virtual (天线、标签可见性与可控 RSSI 抖动)
Abstractions 抽象
LlrpDevice.Abstractions (可插拔 ILlrpDevice 驱动契约)

快速符号索引 (Quick Jump)

Hosting 测试宿主门面

VirtualLlrpDeviceHost Class
命名空间: LlrpDevice.Virtual.Hosting · 实现: IVirtualDeviceHost

组合 LlrpDeviceServer 与 VirtualLlrpDevice 的高层生命周期门面,专为在单元测试(xUnit)中启动临时 TCP 虚拟端点而设计。

实战代码示例 (C# Code Sample - xUnit 测试)

using System.Net;
using LlrpDevice.Virtual.Hosting;
using LlrpSdk;
using Xunit;

public class VirtualDeviceTests
{
    [Fact]
    public async Task Reader_Should_Connect_And_Read_Simulated_Tags()
    {
        // 1. 在临时空闲端口 (Port = 0) 启动内存虚拟读写器
        var hostOptions = new VirtualDeviceHostOptions
        {
            ListenAddress = IPAddress.Loopback,
            Port = 0,
            Inventory = new VirtualInventoryOptions
            {
                Tags = [new VirtualInventoryTag
                {
                    ElectronicProductCode = Convert.FromHexString("E28011910000000000000001"),
                    AntennaId = 1,
                    PeakRssi = -55
                }]
            }
        };

        await using var host = await VirtualLlrpDeviceHost.CreateAndStartAsync(hostOptions);

        // 2. 客户端连接该临时端口
        await using var reader = LlrpReader.CreateBuilder("127.0.0.1")
            .WithPort(host.BoundPort)
            .Build();

        await reader.ConnectAsync();
        var defaults = await reader.GetDefaultSettingsAsync();
        await reader.ApplySettingsAsync(defaults.Settings);

        // 3. 盘点并验证标签
        await using var session = await reader.StartInventoryAsync();
        using var cts = new CancellationTokenSource(TimeSpan.FromSeconds(3));
        await foreach (var tag in session.ReadReportsAsync(cts.Token))
        {
            Assert.Equal("E28011910000000000000001", tag.EpcHex);
            break;
        }
    }
}
VirtualDeviceHostOptions Record
命名空间: LlrpDevice.Virtual.Hosting

宿主配置选项,包含绑定地址、端口、协议版本、标签集合与 RF 仿真参数。

Server 服务端引擎

LlrpDeviceServer Class
命名空间: LlrpDevice.Server

通用的 TCP LLRP 服务端引擎。管理客户端连接会话、编解码 LLRP 帧并与 ILlrpDevice 实例交互。

硬件抽象与 Profile 体系

ILlrpDevice Interface
命名空间: LlrpDevice.Abstractions

为物理射频模块或自定义虚拟后端提供统一的设备接口契约。

内置能力 Profile 档案 Profiles
Profile 标识描述与适用场景
llrp1.0.1_standard 标准 4 天线读写器档案,内置实测 193 档发射功率表与 41 档 RF 调制模式表。
impinj.r420.llrp-1.0.1 Impinj Speedway R420 仿真档案(由 LlrpDevice.Virtual.Impinj 提供),用于 Impinj 扩展联调与 ItemTest 对接。