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

Electron应用中USB设备transferOut报错:size参数类型异常求助

Electron USB transferOut 参数类型错误解决

问题根源

报错TypeError [ERR_INVALID_ARG_TYPE]: The "size" argument must be of type number. Received an instance of Buffer由两个核心问题导致:

  • 端点类型不匹配:0x81是IN端点(用于读取设备数据),而transferOut()仅支持向OUT端点发送数据(OUT端点地址最高位为0,比如0x01)。
  • 数据类型不兼容:node-usb 2.4.3版本不支持直接传入Uint16Array,需显式转换为Buffer才能被方法正确解析。

修复后的代码

async sendDataToDevice(device) {
    const data = new Uint16Array(16);
    data[0] = 3333;
    // 将TypedArray转换为node-usb兼容的Buffer类型
    const sendBuffer = Buffer.from(data.buffer);
    // 替换为你的设备实际OUT端点地址
    await device.transferOut(0x01, sendBuffer);
}

关键注意事项

  • 确认设备OUT端点地址:可通过USB设备描述工具查看设备的端点列表,获取正确的OUT端点地址。
  • 匹配端点传输类型:确保调用transferOut()时,端点的传输类型(批量/中断等)与设备定义一致,否则仍会触发异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 08:06:50