Cordova able.write i can';t发送数据(Android) 我在Apache Cordova中构建了一个Android应用程序,它与Bluetooth 4.0(BLE)配合使用。GitHub repostory插件指明了将信息发送到BLE设备的这种形状(在我的例子中是HM10模块):

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

此函数用于将数据写入特征

写(设备id、服务id、特性id、数据、成功、失败); 描述 函数write将数据写入特征

参数: 设备id:外围设备的UUID或MAC地址 服务\u uuid:BLE服务的uuid characteristic_uuid:BLE特性的uuid 数据:二进制数据,使用ArrayBuffer 成功:连接成功时调用的成功回调函数。[可选] 失败:错误回调函数,在发生错误时调用。[可选]


我曾尝试以这种方式发送数据,但立即调用失败函数

    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));
},