我已经收到了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$
答案 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
中的每一项是什么意思。
希望这会有所帮助。