我已经在Ionic / Angular应用程序和一些BluetoothLE设备之间建立了连接。
文档https://github.com/randdusing/cordova-plugin-bluetoothle引起的连接要求只是地址(无密码)
但是当我开始读取数据时,加密的数据无法读取。因此,如果我不包含密码,我将无法读取这些数据。我的意思是我需要这样的东西(图片来自Play商店的蓝牙应用程序),但我不知道把收集的密码放在哪里。
在阅读不同服务的价值后,这些就是结果。
连接:
$rootScope.connect = function(addressParam) {
var params = {address: addressParam};
$cordovaBluetoothLE.connect(params).then(null, function (obj) {
console.log("Conexión error " + obj.status + " con dirección: " + obj.address);
$rootScope.close(addressParam);
}, function (obj) {
console.log("Conexión success " + obj.status + " con dirección: " + obj.address);
$rootScope.isCon(addressParam);
if(obj.status==="disconnected" || obj.status==="undefined" ){
$rootScope.connect(addressParam);
}
});
}
由于
PD:我正在连接的设备是信标。
答案 0 :(得分:1)
我的意思是我需要这样的东西(图像来自蓝牙 Play商店中的应用程序)但我不知道收集的位置 密码。
“输入密码”对话框将出现或不依赖于两个想要相互连接的设备的IO功能。配对蓝牙LE设备有几种方法。其中一个名为“Passkey”,需要用户输入密码才能完成配对程序。另一个被称为“Just Works”,将用于至少有一个设备没有能够显示六位数字的显示器,也没有能够输入六位十进制数字的键盘。 如果您连接的信标设备无法显示或传送6位十进制数字,则不会查询输入密码。
但是当我开始读取数据时,加密的数据不是 可供阅读。
我看到你已经阅读了一些数据。
服务(UUID=0x1800
)代表通用访问。特征(UUID=0x2a00
)代表设备名称。此处设备名称为“2-3
”。 ASCII中的“2
”为0x32
,“-
”为0x2D
,“3
”为0x33
。
蓝牙正式未定义服务(UUID=0xfff0
)。也许它是制造商专业。如果要解析这些数据,您可能需要了解这些数据结构的组织方式。你想读什么其他数据?这些数据是什么类型的?
希望这对你有所帮助。
答案 1 :(得分:0)
0xFFF3
和0xFFF4
是基于Jaalee-Beacon-Android-SDK实施的major
和minor
的UUID
(link)。
在Android SDK中,他们使用密码编写Major和minor并将其读回。写入操作中使用的密码是在与Beacon连接时设置的。相关代码:
majorChar.setValue(this.arraycat(PasswordBytes, MajorAsBytes));
this.bluetoothGatt.writeCharacteristic(majorChar);
在Cordova中,例如,使用默认密码0x666666,要将Major值更改为4660(0x1234),必须在写入值框中写入以下内容: 0x6666661234。 也就是说,使用Params的值
bluetoothle.write(writeSuccess, writeError, params);
您需要在数组中输入密码和主要值并按
进行编码bluetoothle.bytesToEncodedString();
然后执行写操作。
答案 2 :(得分:0)
我对Cordova的理解是它为“Androind”和“iOS”SDK提供了一种包装层,以便为这两个平台提供通用API。
根据cordova-plugin-bluetoothle项目,低级Android和iOS实现在here和here中完成。但是,它并不一定适用于每个ble设备。
幸运的是,Jaalee Beacon在here中托管了他们的iOS SDK(虽然实现看起来不是开源的),而here中的android SDK也是如此。我们可能需要做的是分别端口或修改 cordova-plugin-bluetoothle驱动程序类的低级实现。否则,我认为一切都不能与jaalee灯塔完美配合。
根据密码输入,在连接到ble设备时没有使用它,它只在读取/写入ble特性时使用。你可以查看file行143~159。注意密码的使用位置。
所以,在你的cordova代码中有一个硬编码值(也就是0x666666)是可以的。
我没有彻底阅读源代码,但我建议你这样做。希望你能得到一些有用的东西。