使用 Web HID API 在浏览器中进行HID设备交互(纯前端)

这篇具有很好参考价值的文章主要介绍了使用 Web HID API 在浏览器中进行HID设备交互(纯前端)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目的

最近在搞HID透传 《STM32 USB使用记录:HID类设备(后篇)》 。

市面上的各种测试工具都或多或少存在问题,所以就自己写一个工具进行测试。目前来说纯前端方案编写这个工具应该是最方便的,这里对 Web HID API 相关内容做个记录。

基础说明

Web HID API 相关内容参考如下:
https://developer.mozilla.org/en-US/docs/Web/API/WebHID_API
https://developer.mozilla.org/en-US/docs/Web/API/HID
https://developer.mozilla.org/en-US/docs/Web/API/HIDDevice
https://developer.mozilla.org/en-US/docs/Web/API/HIDInputReportEvent
https://wicg.github.io/webhid/

这个API目前还处于实验性质,只有电脑上的Chrome、Edge、Opera等浏览器支持:
webhidapi教程,Web与JS相关,前端,嵌入式硬件,USB,HID,透传

另外还需要注意的是从网页操作设备是比较容易产生安全风险的,所以这个API只支持本地调用或者是HTTPS方式调用。

使用下面方法可以侦测电脑上HID设备插入与拔出:

// 全局HID设备插入事件
navigator.hid.onconnect = (event) => {
    console.log("HID connected: ", event.device);
};

// 全局HID设备拔出事件
navigator.hid.ondisconnect = (event) => {
    console.log("HID connected: ", event.device);
};

使用下面方法可以显示电脑上的HID设备选择授权,或者显示已授权的HID设备列表:

// requestDevice方法将显示一个包含已连接设备列表的对话框,用户选择可以并授予其中一个设备访问权限
const devices = await navigator.hid.requestDevice({ filters: [] });
// 注意这里返回的是一个数组

// const devices = await navigator.hid.requestDevice({
//     filters: [{
//         vendorId: 0xabcd,  // 根据VID进行过滤
//         productId: 0x1234, // 根据PID进行过滤
//         usagePage: 0x0c,   // 根据usagePage进行过滤
//         usage: 0x01,       // 根据usage进行过滤
//     },],
// });

// getDevices方法可以返回已连接的授权过的设备列表
// let devices = await navigator.hid.getDevices(); 

使用下面方法可以打开或关闭HID设备等:

if (!device.opened) { // 检查设备是否打开
    await device.open(); // 打开设备
}
// await device.close(); // 关闭设备
// await device.forget() // 遗忘设备

使用下面可以读写数据:
对于HID设备而言主要有 featureinputoutput 三项可以用来数据读写交互的当然前提是设备自身支持。

// 读取Feature
const dataView = await device.receiveFeatureReport(reportId);

// 写Feature
await device.sendFeatureReport(reportId, data);

// 向HID设备发送数据
await device.sendReport(reportId, data); // reportId写0表示不适用reportId

// 监听来自HID设备的数据(input)
device.oninputreport = (event) => {
    console.log(event); // event中包含device、reportId、data等内容
};

示例工程(HID透传测试工具)

代码与说明:《基于 Web HID API 的HID透传测试工具(纯前端)》
项目地址:https://github.com/NaisuXu/HID_Passthrough_Tool
webhidapi教程,Web与JS相关,前端,嵌入式硬件,USB,HID,透传

总结

使用 Web HID API 访问HID设备非常方便,目前来说唯一的问题是这还是实验性质的功能,可能之后接口还会变动,等根据实际情况进行调整。文章来源地址https://www.toymoban.com/news/detail-803194.html

到了这里,关于使用 Web HID API 在浏览器中进行HID设备交互(纯前端)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • web3:智能合约浏览器版本的 IDE - remix 使用教程

    如果你是一位web3行业的从业者,那么智能合约一定是要接触的,这里我们就智能合约浏览器版本的 IDE-remix来介绍一下,及简单的使用操作 Remix 是一个开源的 Solidity 智能合约开发环境,是一款浏览器版本的 IDE,提供基本的编译、部署至本地或测试网络、执行合约等功能。S

    2024年02月06日
    浏览(42)
  • 使用Socket技术进行数据传输、传输文件;浏览器访问Socket服务器

    利用通信线路和通信设备,将地理位置不同的、功能独立的多台计算机互连起来,以功能完善的网络软件来实现资源共享和信息传递,就构成了计算机网络系统 IP地址和端口 通过IP地址,区分不同的计算机 每一台电脑在一个网络上拥有一个独属于自己的IP地址,用于区别其他

    2024年02月07日
    浏览(39)
  • 使用在 Web 浏览器中运行的 VSCode 实现 ROS2 测程法

                    Hadabot是软件工程师学习ROS2和机器人技术的机器人套件。我们距离Hadabot套件的测试版还有一周左右的时间。我们将在本文末尾披露有关如何注册的更多信息。         新的Hadabot套件完全支持ROS2。除了硬件套件外,Hadabot软件环境将主要基于Web浏览器,以

    2024年02月12日
    浏览(32)
  • 使用可视化docker浏览器,轻松实现分布式web自动化

    顺着docker的发展,很多测试的同学也已经在测试工作上使用docker作为环境基础去进行一些自动化测试,这篇文章主要讲述我们在docker中使用浏览器进行自动化测试如果可以实现可视化,同时可以对浏览器进行相关的操作。 首先我们先了解什么是有头浏览器和无头浏览器的区别

    2024年02月14日
    浏览(37)
  • win10进行安装使用11ie浏览器——遇到问题合集解决(执行一遍、问题解决)

    因为需要访问的页面,只能兼容使用对应的ie进行访问,所以才开始安装并使用ie。再次总结自己踩的坑。 切记注意 操作完 一下步骤 请重启电脑 首先使用ie的前提就是需要确保自己的电脑上是有ie的 检验方式之一 之间进行——“开始”——进行搜索。 或者检验这个地方 打

    2024年02月04日
    浏览(42)
  • web3:使用Docker-compose方式部署blockscout浏览器+charts图表

    最近做的项目,需要blockscout来部署一个区块链浏览器,至于blockscout是什么,咱们稍后出一篇文章专门介绍下,本次就先介绍一下如何使用Docker-compose方式部署blockscout,以及过程中遇到的种种坑

    2024年02月11日
    浏览(33)
  • 使用浏览器访问西门子S7-1200PLC_Web服务器设置

    平常都是用触摸屏或者上位机监控在线查看PLC的数据,在西门子S7-1200中,可以使用博途配置web服务器,通过浏览器进行登录,访问PLC的运行状态及需要监控的数据信息。 打开博途,新建一个项目,选择一个常用的PLC型号,进入编程界面,上述步骤不再赘述;右击mian,点击属

    2024年02月16日
    浏览(77)
  • Mac系统下使用Charles对android手机的app或者浏览器进行数据包抓取

             手机完成解锁、打开开发者模式,打开root权限          参考地址: xiaomi5c手机解锁、刷机、打开开发者模式,打开root权限_小悟哦的博客-CSDN博客 1)手机的Wi-Fi设置上,添加一个代理,代理的地址上面的“192.168.1.5”,端口:8888 2)手机浏览器上,输入 http://chl

    2024年02月09日
    浏览(34)
  • 如何给自己的项目加上域名,在浏览器中被别人访问,使用支付宝进行沙箱支付

    NATAPP-内网穿透 基于ngrok的国内高速内网映射工具 每个人可以申请两条隧道,建议选择一条web和一条tcp隧道 这个就是网络地址 访问时在用网络地址替换本地地址就行了(访问的时候一定要把这个窗口打开) 以前 localhost/front/page/login.html 现在  http://g3zjqu.natappfree.cc/front/page/login.h

    2024年02月06日
    浏览(36)
  • Java 中,使用 HttpServletResponse 对象将服务器上的文件响应到客户端浏览器进行下载

    在服务器端,使用 FileInputStream 打开要下载的文件,并将其读取到字节数组中。 2.设置 HttpServletResponse 的响应头信息,告诉浏览器需要下载文件,并指定文件名和文件类型 其中,Content-Type 表示响应内容的类型,这里设置为 application/octet-stream,表示二进制流。Content-Length 表示

    2024年02月13日
    浏览(56)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包