Cum se trimite flash-sms

Cum se trimite flash-sms

În modul PDU, un mesaj SMS este un set de date transmise modemului ca caractere ASCII.
Să luăm în considerare formatul mesajului SMS transmis, secvența de comenzi trimise la modemul GSM și să formăm și pachetul PDU și să trimitem mesajul flash "Hi!" Către numărul ipotetic +70123456789.







Formatul mesajului SMS transmis în modul PDU

este prezentat în imagine:

Cum se trimite flash-sms

Numele câmpului PDU

Deci, să luăm în considerare alocarea câmpurilor individuale ale pachetului PDU al mesajului transmis.

2. Tip PDU - tip PDU

Cum se trimite flash-sms

2.1 RP (calea de răspuns)
0 - calea pentru răspuns nu este definită,
1 - calea de răspuns este definită, este utilizat același SMSC (SMSC).

2.2 UDHI (Încărcarea datelor de utilizator inclusă):
0 - câmpul UD conține numai mesajul în sine,
1- Câmpul UD conține un mesaj și un antet suplimentar.

2.3 SRR (solicitarea raportului de stare):
0 - starea mesajului nu este solicitată,
1- Starea mesajului este solicitată.

2.4 VPF (Format Perioada de Valabilitate):
00 - câmpul VP este absent,
01 - rezervat,
10 - câmpul VP conține date de timp într-un format relativ,
11 - câmpul VP conține date de timp în format absolut.

2.5 RD (Reject Duplicates):
0 - SMSC trebuie să transmită mesajul destinatarului în cazul în care are aceleași valori ale câmpurilor MR și DA ca mesajul anterior.
1 - SMSC ar trebui să respingă mesajul în cazul în care are aceleași valori ale câmpurilor MR și DA ca mesajul anterior.

2.6 MTI (Indicator tip de mesaj):
00 - mesaj primit (de la SMSC la modul) sau confirmare (de la modul la SMSC)
01 - trimite mesajul (de la modul la SMSC) sau trimite confirmare (de la SMSC la modul),
10 - raport de livrare (de la SMSC la modul) sau comanda SMS (de la modul la SMSC)
11 este rezervată.

Pentru a simplifica câmpul VP (durata de viață a SMS-ului, a se vedea secțiunea 7), nu vom folosi și vom seta biții VPF la zero. De asemenea, în valoarea zero, am setat biții RP, UDHI, SRR, RD. Bitii MTI ai mesajului trimis trebuie să fie setați la 01. Astfel, valoarea octetului de câmp tip PDU este presupusă a fi 0x01.

3. MR (Message Reference) - numărul de ordine al mesajului este determinat de modulul propriu-zis. În PDU, valoarea câmpului este setată la 0x00.







Numărul de cifre din numărul destinatarului

Tipul numărului destinatarului

4.1 Numărul de cifre din numărul destinatarului este luat în considerare fără a lua în considerare semnul "+" și este reprezentat în format hexazecimal.
De exemplu, pentru numărul +70123456789 octetul "Numărul de cifre din numărul destinatarului" este 0x0B (11 în sistemul zecimal).

4.2 Tipul numărului destinatarului.
În cazul formatului internațional, numărul de octeți "Tipul receptorului" este setat la 0x91, în cazul formatului local - 0x81.

4.3 Numărul destinatarului.
Câmpul "Număr destinatar" se formează după cum urmează:
a) în cazul unui format internațional, semnul "+" este eliminat;
b) dacă numărul de cifre din număr este ciudat, la sfârșit se adaugă "F";
c) numerele numărului sunt rearanjate în perechi.

De exemplu, pentru numărul +70123456789 câmpul "Numărul destinatarului" va arăta astfel: 0721436587F9 și întregul câmp DA - 0B910721436587F9.

6. DCS (Schema de codificare a datelor) - codarea mesajului.
Acesta este câmpul care ne interesează cel mai mult! Pentru a trimite mesaje cu caractere chirilice, trebuie să utilizați codificarea UCS2.
Valoarea câmpului DCS în cazul nostru ar trebui să fie setată la 0x18 - aceasta este combinația secretă care permite trimiterea de mesaje flash cu simboluri chirilice (0x08 - SMS obișnuit).

7. VP (Perioada de valabilitate) - durata de viață a mesajului.

7.1 Câmpul VP nu este utilizat (amintiți-vă, am fost de acord că nu vom folosi în exemplul nostru?).
În acest caz, lungimea câmpului VP este de 0 octeți, biții VPF trebuie să fie setați la 00 (așa cum am făcut deja).

7.2 Câmpul VP conține date despre durata de viață în format relativ.
În acest caz, lungimea câmpului VP este de 1 octet, biții VPF trebuie să fie setați la 10 (în sistemul binar).
Valorile posibile ale câmpului VP în cazul utilizării formatului de timp relativ și a formulei de calcul a duratei de viață corespunzătoare a mesajului sunt date în tabelul următor:

Valoarea VP este hexazecimal

VP zecimal

Valoarea de timp corespunzătoare VP

În acest caz, fiecare byte conține două numere zecimale intercalate. De exemplu, octetul 2 în cazul lunii mai va fi 0x50.
Anul este reprezentat de ultimele două cifre.
Fusul orar indică diferența dintre ora locală și ora GMT (GMT), exprimată în sferturi de oră. În acest caz, primul bit indică semnul acestei diferențe: 0 - diferența este pozitivă, 1 - diferența este negativă. Adică, octetul 7 în cazul zonei GMT + 3 va avea valoarea 0x21.

Deoarece am decis să nu folosim câmpul VP și să setăm cei doi biți ai VPF din câmpul Tip PDU la 00, în pachetul PDU al exemplului nostru, câmpul VP va fi absent.

8. UDL (lungimea datelor de utilizator) - lungimea câmpului UD în octeți.
Dacă utilizați codificarea UCS2 de interes pentru noi, valoarea câmpului UDL poate fi calculată prin înmulțirea numărului de caractere din mesajul transmis cu 2 (fiecare caracter este codat în două octeți). Pentru mesajul "Hello!", Câmpul UDL este 0x1A (26 în sistemul zecimal).

9. UD (date utilizator) - mesajul
Pentru a trimite un mesaj pe chirilic, trebuie să utilizați codificarea UCS2, în această codificare fiecare literă sau caracter este codificată de doi octeți.
Tabela de codificare UCS2 - aici
Mesajul "Hello!" În codarea UCS2 va arăta astfel:
P: 041F
p: 0440
și: 0438
în: 0432
e: 0435
t: 0442
. 002C
. 0,020
X: 0425
a: 0430
b: 0431
p: 0440
. 0,021

Procesul de trimitere a unui mesaj SMS

După formarea pachetului PDU, procesul de trimitere a SMS-urilor este ușor și constă în doi pași simpli:

1. Introduceți comanda SMS trimite cu numărul de octeți din pachetul PDU, cu excepția câmpului SCA. Nu sună prea prietenos, dar dacă nu se utilizează numărul Centrului SMS, atunci câmpul SCA este 0x00 (așa cum facem) și acest număr este egal cu numărul de octeți din pachetul PDU minus unul. Pentru "Bună ziua!" Această valoare este de 39:

Este important ca această comandă să fie terminată de simbolul "r" (0x0D), fără aditivi.
După aceea, modemul GSM emite o invitație ">" pentru a introduce datele pachetului PDU.

Introducerea datelor pachetului PDU trebuie să se încheie cu un octet de 0x1A

Dacă SMS-ul este trimis cu succes, modemul va răspunde:

+CMGS: Message_Reference
în regulă

unde Message_Reference este numărul de serie al mesajului setat de modem (a se vedea descrierea câmpului MR al pachetului PDU).







Articole similare

Trimiteți-le prietenilor: