WebElektronika

SMS küldése QNavigátorral és Console alkalmazással .NET környezetben

person access_time 2016.05.09.
Folytatjuk tovább a Quectel néhány termékének a megismerését. Most egy SMS-t fogunk elküldeni a QNavigatorral, de már úgy, hogy az ehhez szükséges AT parancsokat mi fogjuk megadni. Ezután a VS2012-vel elkészítünk egy Console alkalmazást, amivel szintén egy SMS-t küldünk el a C# kódban megadott telefonszámra.


Korábbi részben megnéztük a QNavigator program használatának alapjait. Küldtünk SMS-t, illetve kezdeményeztünk hívást is ezzel a programmal, de úgy, hogy nem írtunk egy AT parancsot sem.

Most újra SMS-t küldünk, de már úgy hogy az ehhez szükséges AT parancsokat mi írjuk be a QNavigator felületére, illetve elkészítünk egy SMS küldő alkalmazást .NET környezetben.
Az AT parancsok részletes leírása, bemutatása megtalálható a Quectel oldalán, a letöltések résznél.

Néhány link az SMS küldésről :

 

1. SMS küldése QNavigator-ral

Noha az AT parancsok leírása megtalálhatók a Quectel honlapján, a QNavigator is ismerteti ezeket. Csatlakoztassuk az EVB-KIT-et a soros porton ("main") és az USB porton keresztül a számítógépünkhöz is indítsuk el a QNavigátort.

Ezután a QNavigator felületének bal oldalán találjuk az "AT Command" menüpontot, kattintsunk rá és válasszuk ki az "SMS Commands" almenüt. Itt láthatjuk az SMS kezeléséhez szükséges AT parancsok bemutatását, de ezen a felületen tudjuk beírni a különböző AT parancsokat is.

Írjuk be a következő AT parancsokat egymás után.

  1. AT+CMGF=1
  2. AT+CMGS="+36 telefonszám"
  3. Írjuk ide az üzenetet.
  4. CTR-Z karakter kiküldése (0x1A)

 

Kattintsunk az "AT Command" fülre, és azután lehetőségünk nyílik megismerni az AT parancsokat, illetve különböző műveleteket is végre tudunk itt hajtani.
Válasszuk ki a "Text" módot az SMS küldéshez (1. ábra, AT+CMGF=1).

SMS küldése
1. ábra   Text mód kiválasztása
 

A parancs beírása után kattintsunk a "Send" gombra. Az AT parancsok nem csak itt, hanem a QNavigator program felületének alján is beírhatók.

Ezután adjuk meg azt a telefonszámot, ahova az üzenetünket küldeni szeretnénk (2. ábra, AT+CMGS="+36 telefonszám").

SMS küldése
2. ábra   A telefonszám megadása
 

Ezeknek a műveleteknek a végrehajtása során a  QNavigator jobb oldalán látjuk a kiadott AT parancsokat, illetve a visszaigazolásokat is.

Írjuk most be az elküldeni kívánt üzenetünket is (3. ábra).

SMS küldése
3. ábra   Megadjuk az SMS szövegét is
 

Végül zárjuk le ezt a "folyamatot" egy CTRL-Z-vel. A QNavigator jobb oldalán találjuk azt a lehetőséget, amellyel különböző speciális karakterek küldhetők el (4. ábra). Válasszuk ki a CTRL-Z-t!

SMS küldése
4. ábra   A CTRL-Z elküldése
 

Ezzel el is küldtük az SMS-ünket a megadott telefonszámra.

 

2. SMS küldése .NET környezetben

Hozzunk létre a Visual Studio segítségével egy új projektet, egy Console alkalmazást. A program osztályt módosítsuk a következő programrészlet szerint.

class Program
    {
        static void Main(string[] args)
        {
            try
            {
                SerialPort sp = new SerialPort("COM8", 115200);
                sp.Open();
                sp.Write("AT+CMGF=1\r");
                Console.WriteLine("Beállításra kerüls a Text mód");
                Thread.Sleep(50);
                sp.Write("AT+CMGS=\"" + "+36XXXXXXXXX" + "\"\r\n");
                Console.WriteLine("Megadtuk a telefonszámot");
                Thread.Sleep(50);
                sp.Write("Ez egy teszt a WebElektronikarol." + "\x1A");
                Console.WriteLine("Elküldtük az üzenetet a telefonszámra");
                Thread.Sleep(50);
                sp.Close();
                Console.WriteLine("Sikerült elküldeni az SMS-t.");
                Console.ReadLine();
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
            }
        }
    }

A Main() metódusban először a SerialPort osztályból készítünk egy példányt (sp). Ehhez hozzá kell adnunk a "using System.IO.Ports;"-t a projektünkhöz. A SerialPort osztálynak hét konstruktora van, a példányosításnál azt választottuk ki, amelynél a paraméterlistában meg kell adni a port nevét, illetve a baudrate értékét.
Ezután ezt a virtuális soros portot megnyitjuk az Open() metódussal.
A Write() metódussal string-et tudunk kiírni a megnyitott porton keresztül. Ezzel írjuk ki tehát az első AT parancsunkat, amellyel az SMS küldésének a módja adható meg. Ha CMGF=0, akkor PDU módot, ha CMGF=1 akkor Text módot használunk a küldéskor. A küldés után várakozunk 50 ms-ot a Thread.Sleep() segítségével. A várakozás után megadjuk azt a mobilszámot, ahova küldeni szeretnénk az SMS-t. Az "SMS Application Note GSM_SMS_AN_V1.1" szerint (13. oldal) el kell küldenünk ezután egy CR-t (link), majd írhatjuk utána a SMS-ünk szövegét is.
Az üzenetünk után írjuk ki a megnyitott portra a CTR-Z karaktert is (0x1A). Ezután a virtuális soros portot lezárjuk a Close() metódussal.

A CTR-Z kiküldése történhet "x1A"-nak, de akár (char)26-nak a megadásával is. A programunk futási eredménye látható az 5. ábrán.

kiírás
5. ábra   Elküldtük .NET-ben az SMS-t
 

Könnyen előfordulhat, hogy amikor az Olvasó megvalósítja ezt a projektet, akkor nem a COM8-on keresztül történik a virtuális soros port megnyitása. A Control Panel/Device Manager-nél tudjuk megnézni, hogy melyik port került felhasználásra. A következő cikkünkben úgy írjuk meg az alkalmazásunkat, hogy a port kiválasztása ezen belül fog történni.