You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Chrome JavaScript的WebHID独立控制双路USB继电器?

如何通过WebHID实现国产双路USB继电器的独立控制?

我入手了一款高性价比的国产双路USB继电器板,想用Chrome浏览器的JavaScript结合WebHID接口实现继电器的开关控制。

参考相关示例代码并针对硬件修改后,已经能实现两路继电器同时开启和关闭,但无法实现单路继电器的独立控制。我推测0xFD和0xFF是控制指令的一部分,也尝试过指定继电器编号的组合,但都没成功,求各位帮忙解决。

已实现的代码如下:

document.getElementById('start-button').addEventListener('click', handleConnectClick);

async function handleConnectClick() {
    let device = await openDevice();
    let allOn = [0xFE, 0, 0, 0, 0, 0, 0, 0];
    await setRelay(device, allOn);
    alert(allOn);
    let allOff = [0xFC, 0, 0, 0, 0, 0, 0, 0];
    await setRelay(device, allOff);
    alert(allOff);
}

async function openDevice() {
    const vendorId = 5824; // 16C0
    const productId = 1503; // 05DF
    const device_list = await navigator.hid.getDevices();
    console.log(device_list)
    let device = device_list.find(d => d.vendorId === vendorId && d.productId === productId);
    if (!device) {
        // this returns an array now
        let devices = await navigator.hid.requestDevice({
            filters: [{vendorId, productId}],
        });
        console.log("devices:", devices);
        device = devices[0];
        if (!device)
            return null;
    }

    if (!device.opened) {
        await device.open();
    }
    console.log("device opened:", device);
    return device;
}

async function setRelay(device, [a, b, c, d, e, f, g, h]) {
    if (!device)
        return;
    const reportId = 0;
    const data = Uint8Array.from([a, b, c, d, e, f, g, h]);
    try {
        await device.sendFeatureReport(reportId, data);
    } catch (error) {
        console.error('set_Relay: failed:', error);
    }
}

内容的提问来源于stack exchange,提问作者davewhirlwind

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 06:15:28