我想从我们作为一家公司开发的睡眠跟踪设备中提取一个文件,应用到我们通过蓝牙使用Flight开发的应用程序中.该文件将以.bin格式保存到设备.Ffltter_Blue_plus套餐能做到这点吗?或者任何不同的方法?如果你能帮忙,我会很高兴的
我想从我们作为一家公司开发的睡眠跟踪设备中提取一个文件,应用到我们通过蓝牙使用Flight开发的应用程序中.该文件将以.bin格式保存到设备.Ffltter_Blue_plus套餐能做到这点吗?或者任何不同的方法?如果你能帮忙,我会很高兴的
是的,这是可能的,但不是直截了当的.你将不得不在你的睡眠跟踪设备和你用Ffltter开发的应用程序上实现一个文件传输协议.这是因为没有默认的BLE文件传输协议,需要从头开始开发适合您用例的定制协议.这不是一件微不足道的事情,但以下是一些帮助你入门的建议:
Sleep Tracking Device个
您需要在睡眠跟踪设备上实现GATT服务器,以公开可读取/通知的数据.该设备需要是不断通告并愿意接受来自远程中央设备的传入连接的外围设备.
Flutter Application个
Flutter 应用程序需要是可以向睡眠跟踪设备订阅(接收通知)和写入数据的GATT客户端设备.它还需要是一个中央,这样它才能扫描并连接到睡眠跟踪设备.
Implementation个
当您的设备需要从睡眠跟踪设备读取数据时,它首先需要使用以下扫描功能找到它:-
// Start scanning
flutterBlue.startScan(timeout: Duration(seconds: 4));
// Listen to scan results
var subscription = flutterBlue.scanResults.listen((results) {
// do something with scan results
for (ScanResult r in results) {
print('${r.device.name} found! rssi: ${r.rssi}');
}
});
// Stop scanning
flutterBlue.stopScan();
如果发现睡眠跟踪设备是扫描列表的一部分,则Flutter 应用程序需要使用以下功能连接到它:-
// Connect to sleep tracking device
await device.connect();
然后,需要使用以下功能启用通知:-
await characteristic.setNotifyValue(true);
characteristic.value.listen((value) {
// do something with new value
});
然后,您需要写入睡眠跟踪设备上的特征,以告诉它您已准备好接收来自它的数据.您可以使用以下功能完成此操作:-
// Writes to a characteristic
await c.write([0x10, 0x01])
请注意,以上只是一个示例.特征可能具有不同的句柄,因此上面的两个值将不同.
在睡眠跟踪设备上,一旦触发Flutter 应用程序准备接收文件的事件,睡眠跟踪设备需要分块.bin数据并将其作为BLE通知在BLE上传输.这些通知的实现将取决于睡眠跟踪设备上运行的操作系统/软件,所以我不会在这里分享代码.
最后,请注意,这是通过BLE在两个设备之间传输文件的非常简化的实施.可以通过优化吞吐量和适当的流量控制机制来改进实现,但这超出了这个问题的范围.
您可以通过以下链接找到更多信息:-