Hogyan küldhetek flash-sms-t

PDU üzemmódban egy SMS üzenet a modemhez ASCII karakterként továbbított adatkészlet.
Nézzük meg a formátumot a továbbított SMS-üzenetek parancsokat alkalmazni a GSM-modem, és ezáltal a PDU csomagot, és elküldhetik flash SMS «Hello!” Ahhoz, hogy a feltételezett szám 70123456789.
A továbbított SMS formátuma PDU módban
a képen látható:

PDU mező neve
Vegyük tehát fontolóra a továbbított üzenet PDU-csomagjának egyes mezeinek hozzárendelését.
2. PDU típus - PDU típus

2.1 RP (válaszút)
0 - a válasz útja nincs meghatározva,
1 - a válaszút meg van határozva, ugyanazt az SMSC-t (SMSC) használják.
2.2 UDHI (a felhasználói adat fejléc tartalmazza):
0 - az UD mező csak az üzenetet tartalmazza,
1- Az UD mező egy üzenetet és egy további fejlécet tartalmaz.
2.3 SRR (Állapotjelentés kérése):
0 - az üzenet állapotát nem kérik,
1- Az üzenet állapotát kérték.
2.4 VPF (érvényességi időszak formátuma):
00 - a VP mező hiányzik,
01 - fenntartva,
10 - a VP mező időadatokat tartalmaz relatív formátumban,
11 - a VP mező időadatokat tartalmaz abszolút formátumban.
2.5 RD (Elutasítja a másolatokat):
0 - Az SMSC továbbítja az üzenetet a címzettnek, ha ugyanazok az MR és DA mezők értékei vannak, mint az előző üzenet.
1 - Az SMSC-nek el kell utasítania az üzenetet, ha ugyanolyan értékű lesz az MR és DA mezőkben, mint az előző üzenet.
2.6 MTI (Message Type Indicator):
00 - fogadott üzenet (SMSC-ről a modulra) vagy nyugtázás (modulról SMSC-re)
01 - küldjön üzenetet (modulról SMSC-re) vagy megerősítést küld (az SMSC-ről a modulra),
10 - kézbesítési jelentés (az SMSC-ről a modulra) vagy SMS-parancs (modulról SMSC-re)
A 11. le van foglalva.
A VP mező egyszerűsítéséhez (az SMS élettartama, lásd a 7. részt), nem fogjuk használni, és a VPF biteket nullára állítjuk. Szintén a nulla értékben beállítjuk az RP, UDHI, SRR, RD biteket. Az elküldendő üzenet MTI bitjeit 01-re kell állítani. Így a PDU Type mezőbájt értéke 0x01.
3. MR (Message Reference) - az üzenet sorszámát maga a modul határozza meg. A PDU-ban a mező értéke 0x00.
A címzett száma számjegyeinek száma
A címzett száma
4.1 A címzett számjegyeinek számát a "+" jel figyelembevétele nélkül kell számolni, és hexadecimális formában kell megjeleníteni.
Például a +70123456789 számra a bájt "Számjegyek száma a címzett számában" 0x0B (11 a tizedes rendszerben).
4.2 A címzett száma.
Nemzetközi formátum esetén a bájtszám "Fogadó számminta" értéke 0x91, a helyi formátum esetén - 0x81.
4.3 A címzett száma.
A "Címzett szám" mező a következőképpen alakul:
a) nemzetközi formátum esetén a "+" jelet el kell dobni;
b) ha a számjegyek száma páratlan, az "F" végén hozzáadódik;
c) a számok száma átrendeződik párban.
Például a +70123456789 számon a "Címzett száma" mezőben a következő: 0721436587F9, és a teljes mező DA - 0B910721436587F9.
6. DCS (Data Coding Scheme) - az üzenet kódolása.
Ez az a terület, amely a legtöbbet érdekli! A cirill karakterekkel történő üzenetküldéshez az UCS2 kódolást kell használnia.
A DCS mező értékét 0x18-ra kell állítani - ez a titkos kombináció, amely lehetővé teszi villanás SMS üzenetek küldését cirillszimbólumokkal (0x08 - szokásos SMS).
7. VP (érvényességi idő) - az üzenet élettartama.
7.1 A VP mezőt nem használják (ne feledjük, egyetértettünk abban, hogy a példánkban nem fogjuk használni).
Ebben az esetben a VP mező hossza 0 bájt, a VPF biteket 00-ra kell állítani (mint már láttuk).
7.2 A VP mező adatokat tartalmaz az élettartamról relatív formátumban.
Ebben az esetben a VP mező hossza 1 bájt, a VPF biteket 10-re kell állítani (a bináris rendszerben).
A VP mező lehetséges értékei a relatív időformátum és az üzenet megfelelő élettartamának kiszámításához használt képlet esetén az alábbi táblázatban találhatók:
VP értéke hexadecimális
VP decimális érték
A megfelelő VP érték
Ebben az esetben minden byte két tizedes számot tartalmaz, egymásba ágyazva. Például a 2. bájt a május hónapja esetében 0x50 lesz.
Az év az utolsó két számjegyből áll.
Az időzóna azt jelzi, hogy a helyi idő és a GMT (GMT) közötti különbség egy óra negyedévben van kifejezve. Ebben az esetben az első bit jelzi ezt a különbséget: 0 - a különbség pozitív, 1 - a különbség negatív. Ez azt jelenti, hogy a GMT + 3 időzóna esetén a 7 byte értéke 0x21.
Mivel úgy döntöttünk, hogy nem használjuk a VP mezőt, és a PDU Type mező VPF-jének két bitjét 00-re állítjuk, példánk PDU-csomagjában a VP mező hiányzik.
8. UDL (User Data Length) - az UD mező hossza bájtban.
Ha az UCS2 kódolást használja számunkra, akkor az UDL mező értéke kiszámítható úgy, hogy a küldött üzenetben levő karakterek számát megszorozzuk 2-gyel (minden karakter két bájtban van kódolva). A "Hello!" Üzenethez az UDL mező 0x1A (26 a decimális rendszerben).
9. UD (felhasználói adatok) - az üzenet
Ha egy üzenetet cirillként szeretnénk elküldeni, akkor az UCS2 kódolást kell használnunk, ebben a kódolásban minden betű vagy karakter két bájt által kódolható.
UCS2 kódolási táblázat - itt
A "Hello!" Üzenet Az UCS2 kódolás így fog kinézni:
P: 041F
p: 0440
és: 0438
cím: 0432
e: 0435
t: 0442
. 002C
. 0020
X: 0425
a: 0430
b: 0431
p: 0440
. 0021
Az SMS üzenet küldésének folyamata
Miután létrehozta a PDU csomagot, az SMS küldés egyszerű, és két egyszerű lépést tartalmaz:
1. Adja meg az SMS küldés parancsot a PDU csomagban lévő bájtok számával, kivéve az SCA mezőt. Nem hangzik nagyon barátságosnak, de ha nem használja az SMS-központ számát, akkor az SCA mező 0x00 (ahogy mi), és ez a szám megegyezik a PDU-csomag mínusz egy bájtszámával. A "Hello!" Értékhez ez az érték 39:
Fontos, hogy ez a parancs az "r" (0x0D) szimbólummal záruljon, adalékanyagok nélkül.
Ezt követően a GSM-modem meghívást küld ">" a PDU csomag adatainak bevitelére.
A PDU csomag adatbevitelének 0x1A byte-val kell végződnie
Ha az SMS sikeres elküldésre kerül, a modem válaszol:
+CMGS: Message_Reference
rendben
ahol az Message_Reference a modem által beállított üzenet sorozatszáma (lásd a PDU csomag MR mezőjének leírását).