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 应用程序有啥方法可以从支持蓝牙的硬件读取实时数据?如果没有,有啥替代方案?的主要内容,如果未能解决你的问题,请参考以下文章