Web 应用程序有啥方法可以从支持蓝牙的硬件读取实时数据?如果没有,有啥替代方案?

Posted

技术标签:

【中文标题】Web 应用程序有啥方法可以从支持蓝牙的硬件读取实时数据?如果没有,有啥替代方案?【英文标题】:Is there any way for a web application to read real time data from a bluetooth enabled hardware? If not, what are the alternatives?Web 应用程序有什么方法可以从支持蓝牙的硬件读取实时数据?如果没有,有什么替代方案? 【发布时间】:2016-01-17 04:05:32 【问题描述】:

所以我是一名电气工程专业的学生,​​遇到以下问题: 我有一个传感器,它输出模拟电压,我使用微控制器从中做一个 ADC。现在我需要在 Web 应用程序中以无线方式实时读取该值,并将该值存储在主数据库中。我对基于 Web 的应用程序的了解有限,但我愿意学习。但在此之前,我需要知道是否有任何方法可以实现这一目标? 提前致谢。

【问题讨论】:

还有其他选择吗? @SLaks 【参考方案1】:

浏览器非常擅长发出 HTTP 请求。您需要做的是编写一个单独的软件,它可以直接与您的硬件(例如 Python 或 Java 应用程序)通信,并提供一个 HTTP API 来查询硬件的当前状态。

在运行此软件的同一台机器上,您可以启动浏览器并将其指向您的应用,例如http://localhost:8080,以显示相关信息。

如果您希望它以无线方式工作,让它与同一无线网络上的多台机器一起工作并不是一个很大的步骤 - 只需将 localhost 替换为机器 IP 地址即可。

【讨论】:

谢谢你。它为我提供了一些开始。我会继续努力,如果我有更多问题,我会告诉你的。再次感谢! The browser is really only good at make HTTP requests 这不是真的;查看 WebRTC、getUserMedia、WebSockets 和许多其他功能。 谢谢@SLaks。澄清。【参考方案2】:

我建议您尝试一下实验性的Web Bluetooth API。此 Web API 目前已添加到 Chrome(以及更多浏览器中),它使网站可以使用 GATT 通过蓝牙 4 无线标准发现设备并与之通信。

查看https://developers.google.com/web/updates/2015/07/interact-with-ble-devices-on-the-web 了解更多信息并查看示例https://googlechrome.github.io/samples/web-bluetooth/

以下是仅使用 javascript 读取设备电池电量的示例:

navigator.bluetooth.requestDevice( filters: [ services: ['battery_service'] ] )
.then(device => device.gatt.connect())
.then(server => 
  // Getting Battery Service...
  return server.getPrimaryService('battery_service');
)
.then(service => 
  // Getting Battery Level Characteristic...
  return service.getCharacteristic('battery_level');
)
.then(characteristic => 
  // Reading Battery Level...
  return characteristic.readValue();
)
.then(buffer => 
  var data = new DataView(buffer);
  console.log('Battery percentage is ' + data.getUint8(0));
)
.catch(error =>  console.log(error); );

【讨论】:

以上是关于Web 应用程序有啥方法可以从支持蓝牙的硬件读取实时数据?如果没有,有啥替代方案?的主要内容,如果未能解决你的问题,请参考以下文章

iOS 蓝牙连接获取MAC地址的方法

测距后有啥方法可以使用核心蓝牙连接信标

微信小程序蓝牙好用吗

从 Android 中配对的蓝牙设备读取数据

支持 NFC 和蓝牙的 ISO 14443 智能卡/标签,用于 iPhone 配对

手机蓝牙转串口硬件和ANDROID的APK程序开发源代码