Загрузка страницы

SIM800L SMS сообщения PDU декодирование кириллица Cyrillic UCS2 format Arduino Decode sms messages

https://drive.google.com/drive/folders/11d8xldQSrUfHqQRqOXI78kj4Iv4szILQ
SMS_PDU_Decode_Cyrillic_Arduino_SIM800L_2020_12_26.ino
/*
SMS_PDU_Decode_Cyrillic_Arduino_SIM800L_2020_12_26
декодирование sms-сообщения PDU / UCS2 формата кириллица
decoding of sms-messages PDU / UCS2 in Cyrillic format
arduino IDE-1.6.12

https://drive.google.com/drive/folders/1cNVe7wQF4HhTadJbO_yAMLIoJPae52A4?usp=sharing
SMS_PDU_Decode_Cyrillic_Arduino_SIM800L_2020_12_26.ino
https://drive.google.com/drive/folders/11d8xldQSrUfHqQRqOXI78kj4Iv4szILQ
*/

#include ◄SoftwareSerial.h► // библиотека для программного Serial - UART
SoftwareSerial mySerial(2, 3); // Соединяем (RX *SIM800L* TX) с (3-Pin *Arduino* 2-Pin) AT
#define SERIAL_BAUD 4800 // скорость Serial

#define RESPONSE_NEW_SMS "+CMT:" // УВЕДОМЛЕНИЕ - пришло оповещение о новом SMS

// 1 символ UCS2 PDU занимает 2 байта, каждый байт в HEX-формате. итого 1 символ занимает 4 знака .
char arrResultDecodeUCS2PDU[99] {NULL}; // массив для хранения, декодированных 4 знаков UCS2 PDU, в 1 байт, в кириллице - латиницы
int indexArrResult = -1; // счетчик индекса массива
char arrUCS2[5]; // массив для хранения принятого 1 символа UCS2 (4 знака) от SIM800L

void FOO_PDUdecode();
void setup() {
Serial.begin(SERIAL_BAUD);
mySerial.begin(SERIAL_BAUD);

while (1) {
if (Serial.available())mySerial.write(Serial.read());

if (mySerial.available()) {
Serial.write(mySerial.peek());
arrResultDecodeUCS2PDU[++indexArrResult] = mySerial.read();
if ((arrResultDecodeUCS2PDU[indexArrResult] == '\n') && (arrResultDecodeUCS2PDU[indexArrResult - 1] == '\r')) {
arrResultDecodeUCS2PDU[indexArrResult - 1] = NULL;
indexArrResult = - 1;
if (memcmp_P(arrResultDecodeUCS2PDU, PSTR(RESPONSE_NEW_SMS), sizeof(RESPONSE_NEW_SMS) - 1) == 0) { //оповещение о новом SMS
arrResultDecodeUCS2PDU[0] = NULL;
FOO_PDUdecode();
}
}
}
}

}

void loop() {}
void FOO_PDUdecode() {
char UCS2ToChar = NULL;
indexArrResult = -1;
int indexArrUCS2 = -1;
while (1) {
if (mySerial.available()) {
arrUCS2[++indexArrUCS2] = (char)mySerial.read();
Serial.write(arrUCS2[indexArrUCS2]);

if ((arrUCS2[indexArrUCS2] == '\n') && (arrUCS2[indexArrUCS2 - 1] == '\r')) {
arrResultDecodeUCS2PDU[indexArrResult + 1] = NULL;
Serial.println(arrResultDecodeUCS2PDU);
if (UCS2ToChar == NULL)Serial.println(F("NOT Decode")); // если декодирования не было
return;
}

if (indexArrUCS2 ► 2) { // если приняли (4 байта / знака) (1 символа UCS2) например ((char)-'R' = 0052-(UCS2))

if (arrUCS2[1] == '0') { // если латиница. если 2-рой знак символа UCS2 = '0'. Значить символ UCS2 латиница
UCS2ToChar = ((arrUCS2[2] - '0') * 16); // 3-тий знак символа (UCS2 латиница), преобразуем сохраняем
if (arrUCS2[3] ► '9')UCS2ToChar += (arrUCS2[3] - 55); // если 4-тый (знак UCS2), HEX-формата A,B,C.D,E.F
else UCS2ToChar += (arrUCS2[3] - '0'); // если 4-тый (знак UCS2), HEX-формата (0-9)
arrResultDecodeUCS2PDU[++indexArrResult] = (char)UCS2ToChar; // сохраняем
Serial.write('\t');
}

else if (arrUCS2[1] == '4') { // если кириллица. если 2-рой знак символа UCS2 = '4'. (таблица символов UCS2)
if (arrUCS2[2] == '0')UCS2ToChar = 89;
else if (arrUCS2[2] == '1')UCS2ToChar = 64;
else if (arrUCS2[2] == '2')UCS2ToChar = 48;
else if (arrUCS2[2] == '3')UCS2ToChar = 32;
else if (arrUCS2[2] == '4')UCS2ToChar = 16;
else if (arrUCS2[2] == '5')UCS2ToChar = 73;
if (arrUCS2[3] ► '9')UCS2ToChar -= (arrUCS2[3] - 55);
else UCS2ToChar -= (arrUCS2[3] - '0');

UCS2ToChar = -UCS2ToChar; // инвертируем данные
arrResultDecodeUCS2PDU[++indexArrResult] = (char)UCS2ToChar;
Serial.write('\t');
}
else if (memcmp_P(arrUCS2, PSTR("2116"), 4) == 0) { // Символ № - если Символ вне общего правила
arrResultDecodeUCS2PDU[++indexArrResult] = -71;
}

indexArrUCS2 = -1;

}
}
}
}

Ссылка на видео:
https://youtu.be/q0ZdPEv9KRM

Видео SIM800L SMS сообщения PDU декодирование кириллица Cyrillic UCS2 format Arduino Decode sms messages канала Дмитрий Осипов
Показать
Комментарии отсутствуют
Введите заголовок:

Введите адрес ссылки:

Введите адрес видео с YouTube:

Зарегистрируйтесь или войдите с
Информация о видео
26 декабря 2020 г. 14:00:27
00:06:07
Другие видео канала
Железнодорожная станция "НОВАЯ" - метро "Авиамоторная" перекрыли проход. Москва долгострой. СобянинЖелезнодорожная станция "НОВАЯ" - метро "Авиамоторная" перекрыли проход. Москва долгострой. Собяниношибка msvcp140 dll Как решить проблему  Visual Studio  ИзменитеMulti-Threaded DLL на Multi-Threadedошибка msvcp140 dll Как решить проблему Visual Studio ИзменитеMulti-Threaded DLL на Multi-Threadedv2 ARDUINO ДЕРЖАТЕЛЬ ДЛЯ СМАРТФОНА ЭЛЕКТРОННЫЙ HOLDER FOR SMARTPHONE ELECTRONIC SERVOv2 ARDUINO ДЕРЖАТЕЛЬ ДЛЯ СМАРТФОНА ЭЛЕКТРОННЫЙ HOLDER FOR SMARTPHONE ELECTRONIC SERVOsim800l разрешенные номера Sim800l numbers allowed. AT+CWHITELISTsim800l разрешенные номера Sim800l numbers allowed. AT+CWHITELISTArduino Pro Mini  Serial BOOT LOADER ADRR загрузка sketch Upload code RESETArduino Pro Mini Serial BOOT LOADER ADRR загрузка sketch Upload code RESETМузей истории "Лефортово" тест внешнего микрофона для смартфона Galaxy S7 EdgeМузей истории "Лефортово" тест внешнего микрофона для смартфона Galaxy S7 Edge"Майский чай" Смородина.  благодарю приехали заменили"Майский чай" Смородина. благодарю приехали заменилиArduino Pro Mini загрузка sketch Upload code soft reset программная перезагрузка  Своими рукамиArduino Pro Mini загрузка sketch Upload code soft reset программная перезагрузка Своими рукамиСвято-Троицкий храм в Наташино, г. ЛюберцыСвято-Троицкий храм в Наташино, г. ЛюберцыОБРЕЗАТЬ СКЛЕИТЬ ВИДЕО БЕЗ ПОТЕРИ КАЧЕСТВА ffmpeg.exe CUT AND GLUE VIDEO WITHOUT RECODINGОБРЕЗАТЬ СКЛЕИТЬ ВИДЕО БЕЗ ПОТЕРИ КАЧЕСТВА ffmpeg.exe CUT AND GLUE VIDEO WITHOUT RECODINGч.1/2  Billa — сеть супермаркетов Билла Дорогов  13000 звонок на горячую линиюч.1/2 Billa — сеть супермаркетов Билла Дорогов 13000 звонок на горячую линиюarduino- tv VGAX + SIM800Larduino- tv VGAX + SIM800L14/19 4k ЗАПРЕТ ВИДЕОСЪЁМКИ Как подать жалобу участковому  ПОЧТА РОССИИ 111024 полиция «Титýшки»14/19 4k ЗАПРЕТ ВИДЕОСЪЁМКИ Как подать жалобу участковому ПОЧТА РОССИИ 111024 полиция «Титýшки»SIM800L загрузка аудио файлов во внутреннюю память ArmFile Download v1.00 воспроизведение файловSIM800L загрузка аудио файлов во внутреннюю память ArmFile Download v1.00 воспроизведение файловгусеница 20180914 141626гусеница 20180914 141626МТС  не реагирует на обращение.  Терминал. осторожно! платный! номер - техподдержкиМТС не реагирует на обращение. Терминал. осторожно! платный! номер - техподдержкиArduino xxxArduino xxxтерпила и терпеливыйтерпила и терпеливыйТающий снег Прощание с зимой 24 марта 2019 год Москва улица Авиамоторная 20190324 182045Тающий снег Прощание с зимой 24 марта 2019 год Москва улица Авиамоторная 20190324 182045Arduino деление числа с помощью смещения бит. только разрядные числа atmega328Arduino деление числа с помощью смещения бит. только разрядные числа atmega328чемпионат по-узбекски снег Москва вечер молодцы 20 января 2019 г.чемпионат по-узбекски снег Москва вечер молодцы 20 января 2019 г.
Яндекс.Метрика