Cordova able.write i can';t发送数据(Android) 我在Apache Cordova中构建了一个Android应用程序,它与Bluetooth 4.0(BLE)配合使用。GitHub repostory插件指明了将信息发送到BLE设备的这种形状(在我的例子中是HM10模块):
此函数用于将数据写入特征 写(设备id、服务id、特性id、数据、成功、失败); 描述 函数write将数据写入特征 参数: 设备id:外围设备的UUID或MAC地址 服务\u uuid:BLE服务的uuid characteristic_uuid:BLE特性的uuid 数据:二进制数据,使用ArrayBuffer 成功:连接成功时调用的成功回调函数。[可选] 失败:错误回调函数,在发生错误时调用。[可选]Cordova able.write i can';t发送数据(Android) 我在Apache Cordova中构建了一个Android应用程序,它与Bluetooth 4.0(BLE)配合使用。GitHub repostory插件指明了将信息发送到BLE设备的这种形状(在我的例子中是HM10模块):,android,cordova,bluetooth-lowenergy,Android,Cordova,Bluetooth Lowenergy,此函数用于将数据写入特征 写(设备id、服务id、特性id、数据、成功、失败); 描述 函数write将数据写入特征 参数: 设备id:外围设备的UUID或MAC地址 服务\u uuid:BLE服务的uuid characteristic_uuid:BLE特性的uuid 数据:二进制数据,使用ArrayBuffer 成功:连接成功时调用的成功回调函数。[可选] 失败:错误回调函数,在发生错误时调用。[可选] 我曾尝试以这种方式发送数据,但立即调用失败函数 function startB
我曾尝试以这种方式发送数据,但立即调用失败函数
function startBed() {
var UiidS="FFE0"; //UUID SERVICE: AT+UUID? => 0xFFE0
var UiidC="FFE1"; //UUID CHARACTERISTICS AT+CHAR? => 0xFFE1
var data = new Uint8Array(1);
data[0] = 1;
setTimeout(ble.write(hMac,UiidS,UiidC,data.buffer,success,failure),2000);
function success() {
document.getElementById("btstate1").innerHTML = "Dato enviado!!!";
}
function failure() {
document.getElementById("btstate1").innerHTML = "Dato NO enviado!!!";
var time=2000;
navigator.vibrate(time);
}
}
如果我获取文本框值并直接发送,HM10将收到一个无法识别的字符,如Ó
var UiidS="FFE0";
var UiidC="FFE1";
var dato =document.getElementById("btstate6").value;
setTimeout(ble.write(hMac,UiidS,UiidC,dato,success,failure),2000);
总之
我不知道为什么模块没有正确接收数据,或者在其他情况下数据没有发送。也许是UUID的问题。我仍在努力解决我的问题,我确认UUID是正确的,但我怀疑我是否使用不同的插件() 我使用了以下方法
var encodedString = bluetoothle.bytesToEncodedString([145,0,14,0,255]);
bluetoothle.write(this.writeSuccess.bind(this), this.writeError.bind(this), {
"value": encodedString,
"service": this.serviceUuid,
"characteristic": this.serviceCharacteristic,
"type": "noResponse",
"address": this.currentConnectedDevice
});
在哪里
//来自插件源:
encodedStringToBytes:函数(字符串){
var数据=atob(字符串);
var bytes=新的Uint8Array(data.length);
对于(变量i=0;i
我希望这有帮助
// From plugin source:
encodedStringToBytes: function(string) {
var data = atob(string);
var bytes = new Uint8Array(data.length);
for (var i = 0; i < bytes.length; i++)
{
bytes[i] = data.charCodeAt(i);
}
return bytes;
},
bytesToEncodedString: function(bytes) {
return btoa(String.fromCharCode.apply(null, bytes));
},