webHID初识

webHID初识 --派大星的开发日记

个人开发记录笔记,仅个人理解,有错误还请指出

概述

WebHID API是一个实验性的Web技术,它允许Web应用程序与人类接口设备(HID)进行双向通信。HID设备包括键盘、鼠标、游戏控制器等,它们通过USB、蓝牙等协议与计算机通信。WebHID API使得Web开发者能够创建能够直接与这些设备交互的应用,无需浏览器插件或扩展

核心接口

  1. HId:提供连接HID设备、列出已连接HID设备以及处理连接HID设备的事件处理器的方法。
  2. HIDDevice:代表一个HID设备。单个物理设备可能由多个HIDDevice对象表示。
  3. HIDInputReportEvent:当从任何关联的HID设备接收到输入报告时,会被传递给HIDDeviceinputreport事件。
  4. HIDConnectionEvent:当设备连接或断开连接时,会被传递给HIDconnectdisconnect事件。

HIDDevice实例属性

  1. vendorId
    • 类型:number
    • 描述:设备的供应商ID,这是一个16位的无符号整数,用于标识设备的制造商。
  2. productId
    • 类型:number
    • 描述:设备的产品ID,这也是一个16位的无符号整数,用于标识制造商特定的产品。
  3. productName
    • 类型:string
    • 描述:设备的名称,通常由制造商提供,用于描述设备。
  4. usage
    • 类型:number
    • 描述:设备的用途,是一个16位的无符号整数,遵循 HID Usage Tables 标准。
  5. usagePage
    • 类型:number
    • 描述:设备的用途页面,是一个16位的无符号整数,用于指定用途的类别(例如,键盘、游戏杆等)。
  6. collections
    • 类型:HIDCollection[]
    • 描述:一个包含 HIDCollection 对象的数组,每个对象代表设备报告的一个逻辑组。
  7. opend
    • 类型:boolean
    • 描述:表示设备是否已经打开并且准备好进行数据传输。
  8. featureReports
    • 类型:HIDReportItem[]
    • 描述:一个包含 HIDReportItem 对象的数组,这些对象代表特征报告中的各个字段。
  9. oninputReport
    • 类型:EventHandler
    • 描述:一个事件处理器,当从设备接收到输入报告时会被触发。
  10. ondisconnect
    • 类型:EventHandler
    • 描述:一个事件处理器,当设备断开连接时会被触发。

HIDDevice实例实例方法

  1. open( )
    • 描述:打开与 HID 设备的连接。
    • 返回值:返回一个 Promise,当连接成功建立时解析。
    • 用途:在开始与 HID 设备通信之前,需要先打开连接。
  2. close( )
    • 描述:关闭与 HID 设备的连接。
    • 返回值:返回一个 Promise,当连接成功关闭时解析。
    • 用途:在完成与 HID 设备的通信后,关闭连接以释放资源。
  3. forget( )
    • 描述:关闭与 HID 设备的连接,并重置访问权限。
    • 返回值:返回一个 Promise,当权限被重置后解析。
    • 用途:在不再需要与 HID 设备通信时,使用此方法来清理连接和权限。
  4. sendReport(reportId,data)
    • 描述:向 HID 设备发送一个输出报告。
    • 参数
      • reportId:要发送的报告的 ID。
      • data:要发送的数据。
    • 返回值:返回一个 Promise,当报告被发送后解析。
    • 用途:用于向 HID 设备发送数据,例如控制信号或命令。
  5. sendFeatureReport(reportId,data)
    • 描述:向 HID 设备发送一个特征报告。
    • 参数
      • reportId:要发送的特征报告的 ID。
      • data:要发送的数据。
    • 返回值:返回一个 Promise,当特征报告被发送后解析。
    • 用途:用于发送设备特定的、非标准的控制信号或查询设备状态。
  6. receiveFeatureReport(reportId)
    • 描述:从 HID 设备接收一个特征报告。
    • 参数
      • reportId:要接收的特征报告的 ID。
    • 返回值:返回一个 Promise,解析为一个 DataView 对象,允许对消息内容进行类型化访问。
    • 用途:用于从 HID 设备接收设备特定的、非标准的数据或状态信息。

连接设备并打开

// 设备连接
let connectDevice = async () => {
  if ("hid" in navigator) {
    connectionState.value = 2;
    try {
      const res = await navigator.hid.requestDevice({
        filters: [
          // { productId: 0x01, vendorId: 0x02 }
        ],
      });
      
      if (!device.value.opened) {
        await openDevice(device.value);
        const deviceInfo = {
          productId: device.value.productId,
          vendorId: device.value.vendorId,
        };
        localStorage.setItem("deviceInfo", JSON.stringify(deviceInfo));
      }
    } catch (error) {
      console.log(error)
    }
  }
};
//打开设备
let openDevice = async (device) => {
  await device.open();
};

传输数据

//命令数据
let arr = [命令1,命令2,命令3,命令4,命令5];
//发送的报告id
let reportId = "你的reportId"
//数量根据实际情况定
let dataView = new DataView(new ArrayBuffer(64))
arr.forEach((item, index) => {
    dataView.setUint8(index, parseInt(item, 16));
});
//传输数据
device.sendReport(reportId, dataView.buffer).then(res=>{});
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值