此函数将数据写入特征。
ble.write(设备ID,服务UUID,特征UUID,数据,成功,失败); 描述 函数写入将数据写入特征。
参数: device_id:外设的UUID或MAC地址 service_uuid:BLE服务的UUID character_uuid:BLE特性的UUID 数据:二进制数据,使用ArrayBuffer 成功:连接成功后调用的成功回调函数。 [可选的] failure:错误回调函数,发生错误时调用。 [可选]
我试图以此方式发送数据,但立即调用故障功能
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。
答案 0 :(得分:0)
我仍在尝试解决我的问题,我确认UUID是正确的,但是我对我是否像ArrayBuffer一样发送数据感到怀疑
答案 1 :(得分:0)
使用其他插件(https://github.com/randdusing/cordova-plugin-bluetoothle) 我使用了以下
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
});
哪里
// 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));
},
我希望这会有所帮助