说明
基于浏览器 WebHID 规范封装的人机接口设备通信组件:点击“连接 HID 设备”后由
常见能力:
- requestDevice 弹出系统设备选择框,按 VID:PID 或用法页(Usage Page / Usage)过滤(须非空过滤)
- 打开后枚举集合(用法页 / 用法)与 输入 / 输出 / 特性 三类报告描述符
- 实时接收 oninputreport 上报,展示报告号、十六进制与文本预览
- 输出报告 sendReport、特性报告 sendFeatureReport / receiveFeatureReport,负载按十六进制收发
- 可撤销浏览器授权(forget),关闭连接
- OnConnected / OnDisconnected / OnData / OnError 事件 + 公开方法双驱动
- 连接 / 拔线用 addEventListener 按 deviceId 过滤,多实例可共存;兼容两种报告描述符暴露形态
- 能力检测与安全上下文提示;不支持时给出明确原因
用法
<Hid Name="HID 通信" UsagePage="0x01"
OnConnected="OnConnected" OnData="OnData" OnError="OnError" />
@code {
// 按用法页(Generic Desktop)或 VendorId/ProductId 收窄选择框;requestDevice 须给出非空过滤。
void OnConnected(HidDeviceInfo d) =>
Console.WriteLine($"{d.Display} 共 {d.Collections.Count} 集合 · {d.Inputs.Count} 输入报告");
void OnData(HidData h) =>
Console.WriteLine($"{h.Direction} R{h.ReportId} {h.Hex} | {h.Text}");
void OnError(string m) => Console.WriteLine("错误:" + m);
}
@* 也可拿到实例编程式下发输出 / 特性报告、读取特性报告、撤销授权 *@
<Hid @ref="_hid" VendorId="0x054C" ProductId="0x0CE6" />
<Button Text="下发输出" OnClick="@(() => _hid.WriteAsync(1, new byte[] { 0x00, 0x01 }))" />
<Button Text="读特性" OnClick="@(() => _hid.ReceiveFeatureAsync(0xF0))" />
<Button Text="撤销授权" OnClick="@(() => _hid.ForgetAsync())" />
API 参数
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
ConnectText |
string |
"连接 HID 设备" |
连接按钮文案(内部已本地化,作为翻译键)。 |
MaxLog |
int |
200 |
日志最多保留行数,超出丢弃最旧。 |
Name |
string |
"HID 设备" |
面板标题。 |
OnConnected |
EventCallback<HidDeviceInfo> |
— | 事件 连接成功(含设备与报告描述符)。 |
OnData |
EventCallback<HidData> |
— | 事件 发生一次报告收发(输入上报 / 输出写出 / 特性收发)。 |
OnDisconnected |
EventCallback |
— | 事件 连接断开(主动关闭或拔线)。 |
OnError |
EventCallback<string> |
— | 事件 发生错误,参数为错误说明。 |
ProductId |
int |
0 |
产品 ID 过滤(配合 VendorId)。 |
ShowLog |
bool |
true |
是否显示收发日志。 |
Usage |
int |
0 |
用法过滤(Usage,配合 UsagePage)。 |
UsagePage |
int |
0 |
用法页过滤(Usage Page,如 0x01=Generic Desktop、0xFF00=厂商自定义);未设厂商 / 产品 ID 时按其过滤。 |
VendorId |
int |
0 |
厂商 ID 过滤(0 表示不按厂商过滤)。 |
Visible |
bool |
true |
取得或设置组件是否可见,默认为false。 |
VisibleChanged |
EventCallback<bool> |
— | 事件 取得或设置组件可见性变化时的回调事件。 |
Class |
string |
null |
取得或设置组件的CSS类名,用于自定义样式。 |
Disabled |
bool |
false |
取得或设置组件是否禁用,默认为false。 |
Style |
string |
null |
取得或设置组件的内联样式,用于自定义样式。 |
所有组件均继承
BaseComponent,除上表参数外还支持Class、Style、Disabled、Visible。
扫码关注公众号
扫码加入 QQ 群