用于cordova的蓝牙原始字节数据传输

用于cordova的蓝牙原始字节数据传输,cordova,bluetooth,data-transfer,Cordova,Bluetooth,Data Transfer,如何在蓝牙设备和Cordova中的Android/iOS之间发送和接收一系列数据字节 我的项目详情如下: 我有一个蓝牙传感器设备,我正在开发。设备以一系列字节的形式发送数据。它还为设备API使用二进制控制字系统,并以字节序列的形式发送/接收命令。所以我需要接收和发送无符号字节(8位值,0-255)。这个设置在Java和Arduino中很容易使用。我有工作电脑和arduino应用程序,通过简单的串行连接与设备通信 现在我正在使用Cordova、Angular、Ionic和bluetoothSeri

如何在蓝牙设备和Cordova中的Android/iOS之间发送和接收一系列数据字节

我的项目详情如下:

我有一个蓝牙传感器设备,我正在开发。设备以一系列字节的形式发送数据。它还为设备API使用二进制控制字系统,并以字节序列的形式发送/接收命令。所以我需要接收和发送无符号字节(8位值,0-255)。这个设置在Java和Arduino中很容易使用。我有工作电脑和arduino应用程序,通过简单的串行连接与设备通信

现在我正在使用Cordova、Angular、Ionic和bluetoothSerial插件(Don Coleman的出色工作)开发一个移动应用程序。该应用程序必须在android和iOS上运行

更新:更多详细信息和答案: Sanfor指出bluetoothSerial有一个write()方法,它接受Uint8Array。也许我做错了什么,但我无法让这种方法发挥作用!以下是我尝试过的:

var buf = new ArrayBuffer(2);
var view = new Uint8Array(buf);
view[0] = 0;
view[1] = 200;

//write(view); // does not work either
// re: 123,101,100,123,34,101,149,189,201,137,149,189,201,149,153,149,101,149,189,201,255
//write(buf);  // does not work
// re: 65,97,77,101,115,77,103,101,115,103,61,101,115,61
writeBuffer(buf); // does work - thanks to Glen Arrowsmith!
// correct response: 0,101,100,0,200,101,100,200
此外,使用bluetoothSerial.read的尝试可能会被迫用于7位数字。使用uint8array有一些变化,但它们只是改变了数据接收失败的方式,因为inBuffer被转换为bluetoothSerial中的字符串

bluetoothSerial.read(readSuccess, simpleLog); // does not work
function readSuccess ( data ) {       
    var arr = [];
    for (var i=0; i<data.length;i++){
        arr.push(data.charCodeAt(i));
    } // returned data is corrupted for all values over 127!
    console.log('Converted ' + arr3 + ' with length ' + arr3.length);
  }
bluetoothSerial.read(readSuccess,simpleLog);//不起作用
函数readSuccess(数据){
var-arr=[];

对于(var i=0;i来说,您似乎拥有所需的一切,因此可能我没有完全正确地理解您。我假设您想了解如何使用该插件处理字节发送,对吗?例如,您可以看到插件提供程序的。另外,我要提到的是,可以在JavaScript中作为参数处理

Uint8Array类型化数组表示8位无符号整数的数组


我想这正是您想要的。

LED示例确实显示了如何使用订阅服务器接收数据,我可能最终会这样做。我明白您所说的write()文档可以发送字节的意思,但我还无法获得write()为了发送有用的数据……我在上面添加了更多的信息和代码。@brendan:写了问题后,请不要更改,因为它会使原始答案部分无效。如果你的问题现在只是你做得对吗,我会说它看起来正是我可以写的,所以是的。我已经撤消了原始问题中的任何更改,而只是一个简单的问题dded了我目前正在使用的解决方案。谢谢你的指针。你能分享整个工作代码吗?
bluetoothSerial.readBuffer(readSuccess, simpleLog);
function readSuccess ( data ) {
    var arr = new Uint8Array(data);
    var msg = '';
    for (var i = 0; i < arr.length; i++){
        msg += arr[i]+', ';
    }
    console.log('Received ' +arr+' with vals '+msg+'and length '+arr.length);
    cb(arr);
}