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

时间:2019-07-10 06:04:37

标签: 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&0&0&0&030015&D50052&0&0&00000000000000000000,49,20190710013252,6D1F$

5 个答案:

答案 0 :(得分:1)

这不是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开始,以$结尾。

您的问题是您不了解此字符串的含义,不知道如何在屏幕上显示它。

面对此类问题,我的个人调试过程是使用http://www.google.com。搜寻字符串+RESP:GTFRI会给我一个PDF文档,这是第一个结果。它是跟踪空中接口协议的文档,该协议是GPS设备Enduro Pro使用的协议。

此链接可能不会永远持续下去,但是现在可以在http://www.trackingtheworld.com/wt_products/wtenduropro/Documents/Enduro_Pro_Tracker_Air_Interface_Protocol_1.04.pdf上找到该文档。

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

它似乎使用AT命令(一种串行协议格式),其中发送到设备的命令以AT+<command>开头,响应以+RESP:<command>开头。因此,数据包将对GTFRI命令(数据类型)的答复进行编码,该命令是用于配置计划报告的命令(第19页)。

每当遇到新的AT命令时,都应使用Google开头的几个字符(命令字)。我从没有使用过该设备,对此一无所知,但是我通过谷歌搜索+RESP:GTFRI获得了以上所有内容。

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

答案 1 :(得分:1)

您的问题是矛盾的

How to convert ASCII characters to readable value

发明了ASCII字符是可读的值,代表数字(ASCII码),代表字节。...

也许您是说ASCII码。在这种情况下,您可以在javascript中使用以下命令将ASCII代码转换为其相对字符:

String.fromCharCode(code)

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

答案 2 :(得分:0)

您可以使用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));
 });

答案 3 :(得分:-1)

检查fromCharCode()函数 示例:

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

结果:HELLO

答案 4 :(得分:-2)

我建议您用逗号“,”分隔文本以获取字符串数组,然后访问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('&');

接下来,您需要知道上述数组a中的每一项是什么意思。

希望这会有所帮助。