7个版本 (4个重大更新)
0.5.0 | 2022年7月24日 |
---|---|
0.4.0 | 2022年2月18日 |
0.3.0 | 2021年9月26日 |
0.2.0 | 2021年9月24日 |
0.1.2 | 2021年9月8日 |
#1394 in 硬件支持
73KB
2K SLoC
webusb
Rust中对WebUSB规范的实现。
[dependencies]
webusb = "0.5.0"
与Deno的用法
import "https://deno.land/x/webusb/mod.ts";
const devices = await navigator.usb.getDevices();
// Arduino Leonardo
let device = devices.find((p) => p.productId == 0x8036);
await device.open();
console.log("Device opened.");
if (device.configuration === null) {
device.selectConfiguration(1);
}
console.log(`${device.productName} - ${device.serialNumber}`);
await device.claimInterface(2);
await device.selectAlternateInterface(2, 0);
await device.controlTransferOut({
"requestType": "class",
"recipient": "interface",
"request": 0x22,
"value": 0x01,
"index": 2,
});
while (true) {
const action = prompt(">>");
if (action.toLowerCase() == "exit") break;
const data = new TextEncoder().encode(action);
await device.transferOut(4, data);
console.info("Transfer.");
}
await device.controlTransferOut({
"requestType": "class",
"recipient": "interface",
"request": 0x22,
"value": 0x00,
"index": 2,
});
await device.close();
console.log("Bye.");
测试
在合并PR之前和之后在main
上运行硬件测试。测试运行器是一个自托管的Linux x86_64机器,通过微型USB连接连接到Arduino Leonardo (ATmega32u4)。
测试由维护者在PR上审查和触发,以防止恶意执行。将此草图加载到您的项目中以在本地运行测试。
在编写测试时,可能会遇到频繁的Io / NoDevice错误,这可能是由于连接松动。将这些测试标记为#[flaky_test::flaky_test]
。
许可证
MIT许可证
依赖项
~0–600KB
~13K SLoC