Javascript/Cordova-将数据从NTRIP Caster流式传输到蓝牙设备

Javascript/Cordova-将数据从NTRIP Caster流式传输到蓝牙设备,javascript,cordova,geolocation,xmlhttprequest,gis,Javascript,Cordova,Geolocation,Xmlhttprequest,Gis,我正在编写一个小应用程序,需要将数据从NTRIP广播机传输到蓝牙GNSS接收器。我使用XHR从服务器获取数据,使用Cordova的蓝牙插件与我的设备通信 我能够接收到我需要的数据,但当我试图将数据写入设备时遇到了问题——基本上,什么都没有发生;虽然数据发送成功,但设备不会对字节数组“执行”任何操作 数据传输与用VB和Java编写的开源应用程序(由Lefebure编写)一起工作,因此我只能得出结论,我发送的数据结构中的某些内容与这些应用程序中的数据传输方式不同,我忽略了这些内容,或者我对某些内容有

我正在编写一个小应用程序,需要将数据从NTRIP广播机传输到蓝牙GNSS接收器。我使用XHR从服务器获取数据,使用Cordova的蓝牙插件与我的设备通信

我能够接收到我需要的数据,但当我试图将数据写入设备时遇到了问题——基本上,什么都没有发生;虽然数据发送成功,但设备不会对字节数组“执行”任何操作

数据传输与用VB和Java编写的开源应用程序(由Lefebure编写)一起工作,因此我只能得出结论,我发送的数据结构中的某些内容与这些应用程序中的数据传输方式不同,我忽略了这些内容,或者我对某些内容有根本性的误解

下面是一个JSFIDLE:

基本上,我正在建立与服务器的连接,在收到“ICY 200 OK”消息后,我将其转换为字节,并将其写入蓝牙com端口

以下是Lefebure在VB中的源代码:

(整个项目可以在LeFebure的网站上下载——只需谷歌“LeFebure ntrip”)

这个文件很长,但我想我会把它原封不动地保留下来,以防我遗漏了一些重要的东西。据我所知,我的问题的相关部分如下:

  • 1557至1615(从NTRIP服务器获取数据)
  • 1698至1716(将数据写入COM端口)

我做错了什么?

通过将所需的MIME类型设置为以下内容来解决:

xhr.overrideMimeType('text/plain;charset=x-user-defined')

if (this.responseText.indexOf("ICY 200 OK") > -1) {
    var rtkData = this.response.substr(seenBytes);
    seenBytes = this.responseText.length;
    var byteData = stringToByte(rtkData);
    var bytes = new Uint8Array(byteData);
    bluetooth.write(bytes,
        (success) => {
            console.log("bt write: " + success);
        },
        (error) => {
            console.log("bt err: " + error);
        });
     }