如何通过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
相关产品推荐
相关产品推荐

