如何在Javascript中将ASCII字符转换为可读值

如何在Javascript中将ASCII字符转换为可读值,javascript,ascii,ascii-art,Javascript,Ascii,Ascii Art,我已接收到GPS设备的ASCII字符,但我能理解如何将数据读取到ASCII字符 我收到过这样的数据 +RESP:GTFRI,EF8019,866425032153324,ZK105,,,,,0,0000000000000000,1,0.0,21,29.5,120.101247,30.344809,20190710013252,,0460,0000,580C,8500,31&0,1,42,0,36638,0,0,0,0,1,,0.0&0.0&0.0&0.0&

我已接收到GPS设备的ASCII字符,但我能理解如何将数据读取到ASCII字符

我收到过这样的数据

+RESP:GTFRI,EF8019,866425032153324,ZK105,,,,,0,0000000000000000,1,0.0,21,29.5,120.101247,30.344809,20190710013252,,0460,0000,580C,8500,31&0,1,42,0,36638,0,0,0,0,1,,0.0&0.0&0.0&0.0&0&0&0&030015&D50052&0&0&00000000000000000000,49,20190710013252,6D1F$

Check fromCharCode函数 例如:

    function myFunction() {
            var res = String.fromCharCode(72, 69, 76, 76, 79);
           document.getElementById("demo").innerHTML = res;
    }

结果:HELLO

您可以使用fromCharCode方法执行所需的任务。只需将所有ascii值包装到一个数组中,并将其传递到函数中即可

const arr = [] //all your ascii codes go here
const values = [""] //all your converted data will come here
arr.forEach(function(val){
  values.push(string.fromCharCode(val));
 });

我建议您用逗号分割文本,获得字符串数组,然后访问GPS文本的每个部分。我不是GPS专家,但我猜用逗号分隔的每个部分都代表着一些东西

例如:

// store the values coming from gps to some variable
var gpsText = "+RESP:GTFRI,EF8019,866425032153324,ZK105,,,,,0,0000000000000000,1,0.0,21,29.5,120.101247,30.344809,20190710013252,,0460,0000,580C,8500,31&0,1,42,0,36638,0,0,0,0,1,,0.0&0.0&0.0&0.0&0&0&0&030015&D50052&0&0&00000000000000000000,49,20190710013252,6D1F$";
// Now split it:
var gpsParts = gpsText.split(',');
这将为您提供一个包含以下项的数组:

0: "+RESP:GTFRI"
1: "EF8019"
2: "866425032153324"
3: "ZK105"
4: ""
5: ""
6: ""
7: ""
8: "0"
9: "0000000000000000"
10: "1"
11: "0.0"
12: "21"
13: "29.5"
14: "120.101247"
15: "30.344809"
16: "20190710013252"
17: ""
18: "0460"
19: "0000"
20: "580C"
21: "8500"
22: "31&0"
23: "1"
24: "42"
25: "0"
26: "36638"
27: "0"
28: "0"
29: "0"
30: "0"
31: "1"
32: ""
33: "0.0&0.0&0.0&0.0&0&0&0&030015&D50052&0&0&00000000000000000000"
34: "49"
35: "20190710013252"
36: "6D1F$"
现在,您需要知道这37个部分中的每一部分的含义,并且可能需要用符号和进一步拆分第33项,例如:

var a = gpsParts[33].split('&');
接下来,您需要知道上面数组中的每个项的含义

希望这有帮助


这不是javascript问题。您拥有以下字符串:

+RESP:GTFRI,EF8019,866425032153324,ZK105,,,,,0,0000000000000000,1,0.0,21,29.5,120.101247,30.344809,20190710013252,,0460,0000,580C,8500,31&0,1,42,0,36638,0,0,0,0,1,,0.0&0.0&0.0&0.0&0&0&0&030015&D50052&0&0&00000000000000000000,49,20190710013252,6D1F$
。。从字面上看,这是人类可读的价值。也就是说,人类可以读取的字符串从+RESP开始。。以美元结尾

你们的问题是你们不理解这个字符串的意思,不知道如何在屏幕上显示它

我个人的调试过程中,当面对这样的事情是使用。在Google上搜索字符串+RESP:GTFRI会得到一个PDF文档作为第一个结果。这是轨道空中接口协议的文档,该协议由一个名为Enduro Pro的GPS设备使用

此链接可能不会永远存在,但目前可以在以下位置找到文档:

+RESP:GTFRI数据包的文档可在第39页找到

它似乎使用AT命令作为串行协议的格式,其中发送到设备的命令以AT+开头,响应以+RESP:开头。因此,数据包对GTFRI命令数据类型的回复进行编码,GTFRI命令数据类型是配置计划报告页面19的命令

每当你遇到一种新的AT命令时,用谷歌搜索命令词的前几个字符是值得的。我从未使用过这个设备,对它一无所知,但我从Google+RESP:GTFRI获得了以上所有信息


理想情况下,由于您可能实际上可以访问该设备,因此您还应该拥有文档的副本。但我在这个行业已经有足够长的时间了,我知道情况并非总是如此。

你的问题是矛盾的:

How to convert ASCII characters to readable value
ASCII字符被发明成可读值,代表数字、ASCII码、字节

也许你指的是ASCII码。在本例中,在javascript中,您可以使用以下命令将ASCII代码转换为其相对字符:

String.fromCharCode(code)

但老实说,我不认为你的问题与ASCII无关。您需要的是有关GPS响应格式的信息,这是不可避免地要记录在某处的信息。

我不理解这个短语:将数据读取到ASCII字符。你的意思是如何解码它们?在这个例子中,哪一个是ASCII字符。你粘贴的数据似乎不是ASCII,你有什么型号的GPS设备?每个模型为同一位置生成不同的字符串它们都是ASCII字符!我的案子不管用。我的ascii节点是这样的-+分别是:GTFRI,EF8019866425032153324,ZK105,,,,,,,00000000000000000,1,0.0,21,29.5120.101247,30.3448092090190710013252,0460000580C,8500,31和0,1,42,036638,0,0,0,1,1,,,0.0&0.0&0.0&0.0&0&0&0&030015&D50052&0&0&00000000000000000000,4920190710013252,6D1F$如果我知道否决投票的原因,那会很有帮助:请注意,该协议不是标准GPS协议,但这是正常的。GPS的标准是NMEA,但几乎所有非军事制造商也实施自己的协议,如Garmin、Trimble等