LLRPCSHARP / DEVICE SDK PUBLIC API REFERENCE
Virtual Device API(高级测试工具)
LlrpDevice.* 系列包提供通用的 LLRP TCP 服务端引擎、确定性软件虚拟读写器与嵌入式测试宿主,专为脱机 CI/CD 自动化测试与自定义硬件对接而设计。
架构与包分工
快速符号索引 (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 对接。 |