如何将 ASCII 字符转换为 Javascript 中的可读值
How to convert ASCII characters to readable value in Javascript
我已经接收到 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$
检查 fromCharCode() 函数
示例:
function myFunction() {
var res = String.fromCharCode(72, 69, 76, 76, 79);
document.getElementById("demo").innerHTML = res;
}
结果:你好
您可以使用 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('&');
接下来,您需要了解上述数组 a
中每一项的含义。
希望对您有所帮助。
这不是 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 文档作为第一个结果。它是 Track Air Interface Protocol 的文档,这是一个名为 Enduro Pro 的 GPS 设备使用的协议。
此 link 可能不会永远持续下去,但目前可以在以下位置找到该文档: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
命令时,都值得在谷歌上搜索前几个字符(命令词)。我从未使用过此设备,对此一无所知,但我通过谷歌搜索获得了以上所有信息 +RESP:GTFRI
。
理想情况下,因为您可能实际上可以访问该设备,所以您还应该拥有文档的副本。但我在这个行业工作的时间足够长,知道情况并非总是如此。
你的问题自相矛盾:
How to convert ASCII characters to readable value
ASCII字符被发明为可读值,代表数字(ASCII码),代表字节....
也许您指的是 ASCII 码。在这种情况下,在 javascript
中,您可以使用以下代码将 ASCII 码转换为其相关字符:
String.fromCharCode(code)
但老实说,我认为您的问题与 ASCII 无关。您需要的是有关 GPS 响应格式的信息,这是不可避免地应该在某处记录的内容。
我已经接收到 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$
检查 fromCharCode() 函数 示例:
function myFunction() {
var res = String.fromCharCode(72, 69, 76, 76, 79);
document.getElementById("demo").innerHTML = res;
}
结果:你好
您可以使用 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('&');
接下来,您需要了解上述数组 a
中每一项的含义。
希望对您有所帮助。
这不是 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 文档作为第一个结果。它是 Track Air Interface Protocol 的文档,这是一个名为 Enduro Pro 的 GPS 设备使用的协议。
此 link 可能不会永远持续下去,但目前可以在以下位置找到该文档: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
命令时,都值得在谷歌上搜索前几个字符(命令词)。我从未使用过此设备,对此一无所知,但我通过谷歌搜索获得了以上所有信息 +RESP:GTFRI
。
理想情况下,因为您可能实际上可以访问该设备,所以您还应该拥有文档的副本。但我在这个行业工作的时间足够长,知道情况并非总是如此。
你的问题自相矛盾:
How to convert ASCII characters to readable value
ASCII字符被发明为可读值,代表数字(ASCII码),代表字节....
也许您指的是 ASCII 码。在这种情况下,在 javascript
中,您可以使用以下代码将 ASCII 码转换为其相关字符:
String.fromCharCode(code)
但老实说,我认为您的问题与 ASCII 无关。您需要的是有关 GPS 响应格式的信息,这是不可避免地应该在某处记录的内容。