Как преобразовать символы ASCII в читаемое значение в Javascript - PullRequest
0 голосов
/ 10 июля 2019

Я получил символы ASCII на устройство GPS, но я могу понять, как считывать данные в символы 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 ]

1 голос
/ 10 июля 2019

Ваш вопрос противоречив:

How to convert ASCII characters to readable value

Символы ASCII были изобретены как читаемые значения, представляющие числа (коды ASCII), представляющие байты ....

Может быть, вы имели в виду коды ASCII. В этом случае в javascript вы можете преобразовать код ASCII в его относительный символ с помощью этого:

String.fromCharCode(code)

Но, честно говоря, я не думаю, что ваша проблема не имеет ничего общего с ASCII. Вам нужна информация о формате ответа GPS, и это то, что неизбежно должно быть где-то задокументировано.

1 голос
/ 10 июля 2019

Это не проблема 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, стоит поискать в гуглепервые несколько символов (командные слова).Я никогда не работал с этим устройством и ничего о нем не знаю, но я получил все вышеперечисленное от googling +RESP:GTFRI.

В идеале , поскольку вы, вероятно, действительно имеете доступ к устройствуу вас также должны быть копии документации.Но я в этой отрасли достаточно долго, чтобы понять, что это не всегда так.

0 голосов
/ 10 июля 2019

Вы можете использовать метод 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));
 });
0 голосов
/ 10 июля 2019

Я бы предложил вам разделить текст запятой ",", чтобы получить массив строк, а затем получить доступ к каждой части текста 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.

Надеюсь, это поможет.

1017 *

0 голосов
/ 10 июля 2019

Проверка из функции CharCode () Пример:

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

Результат: ПРИВЕТ

...