V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
yewuya
V2EX  ›  程序员

前端页面直接和连接到 PC 上的设备通信的方法

  •  
  •   yewuya · 2022-06-07 15:05:38 +08:00 · 1663 次点击
    这是一个创建于 899 天前的主题,其中的信息可能已经有所发展或是发生改变。

    大致就是电脑上 USB 插上遥控器,通过遥控器直接远程控制设备,需要前端读取遥控器发出的控制信号,信号解析已经搞定,但是不知道数据怎么直接发给前端

    9 条回复    2022-06-08 11:32:53 +08:00
    liyang5945
        1
    liyang5945  
       2022-06-07 15:10:08 +08:00
    需要开发一个桌面应用程序实现以下功能,1 、读取 usb 解析信号,2 、启动一个 websocket 服务,发送信号给前端
    yewuya
        2
    yewuya  
    OP
       2022-06-07 15:13:39 +08:00
    @liyang5945 这个我想过,不过最好还是直连前端
    yewuya
        3
    yewuya  
    OP
       2022-06-07 15:19:28 +08:00
    找到两个接口貌似可行,一个是 gamepad api 用来控制游戏手柄的,一个是 Web Serial API 用来 web 连接串口的
    Ediacaran
        4
    Ediacaran  
       2022-06-07 15:21:31 +08:00 via iPhone
    以前找资料找到过 webusb api 这个接口,但是没试过,不清楚有没有坑
    snoopyhai
        5
    snoopyhai  
       2022-06-07 15:22:09 +08:00
    前端是无法突破浏览器的, 或者考虑 electron 这种更开放的方式, 可能有方案能直连.

    以前做过类似场景.
    网页先 jsonp 请求本地一个地址. 如果不成功, 则认定为未安装客户端.
    如果成功, 则走 webshell://协议取尝试启动客户端, 从而启动 websockert 服务.
    最后网页尝试连接 websocket 服务.
    XiLingHost
        6
    XiLingHost  
       2022-06-07 15:25:15 +08:00
    chrome 倒是有相关的接口,pixel 刷机就是走的 webusb 我记得
    https://web.dev/i18n/zh/usb/
    sunbreak
        7
    sunbreak  
       2022-06-07 16:56:52 +08:00
    个人推荐用 Flutter Windows/macOS 来做,更接近底层,同时开发也足够方便

    https://github.com/woodemi/quick_usb

    或者用你说的 WebHID 或者 WebUSB 接口

    https://github.com/woodemi/web_usb.dart (这是 Dart 库,内有 WICG 文档链接)

    https://github.com/woodemi/web_hid.dart (这是 Dart 库,内有 WICG 文档链接)
    hellsnow
        8
    hellsnow  
       2022-06-08 10:55:04 +08:00
    以前做过一个虚拟币的加密钥匙,好像用的 chrome.hid
    MyouiSouth
        9
    MyouiSouth  
       2022-06-08 11:32:53 +08:00
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2806 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 74ms · UTC 14:16 · PVG 22:16 · LAX 06:16 · JFK 09:16
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.