====== Přijímání SMS ====== {{:cs:mervis-ide:35-help:receivesms.png}} ===== Název funkce ===== RECEIVESMS ===== Volání v ST ===== TYPE KRATKY_STRING : STRING[160]; END_TYPE PROGRAM TEST_RECEIVESMS VAR_OUTPUT SMSRES : INT := 0; SMS_RECEIVE : BOOL := FALSE; SMS_CHANNEL : ARRAY[0..9] OF STRING; SMS_SENDER : ARRAY[0..9] OF KRATKY_STRING; SMS_MESSAGE : ARRAY[0..9] OF STRING; RECEIVE_TIME : ARRAY[0..9] OF DT; RESULT : ARRAY[0..9] OF INT; I : INT := 0; END_VAR IF SMS_RECEIVE THEN FOR i := 0 TO 9 DO RESULT[I] := MESSAGING.RECEIVESMS(CHANNEL => SMS_CHANNEL[I], SENDER => SMS_SENDER[I], MESSAGE => SMS_MESSAGE[I], RECEIVETIME => RECEIVE_TIME[I]); END_FOR; SMS_RECEIVE := FALSE; END_IF; MESSAGING.SENDSMS(); END_PROGRAM ===== Knihovna ===== MESSAGING ===== Verze ===== V1.0 ===== Popis ===== Volaná funkce se dotazuje připojených modemů na přijaté SMS zprávy v každém výpočetním cyklu PLC. Tato funkce je určena **pouze pro ST kód**, tak aby funkce byla volaná pouze tehdy, když chceme zjistit stav příchozích zpráv. ===== Výstupy ===== |Výstup |Typ |Význam | |=> |INT |číselný status; výsledek kontroly nastavení systému | |CHANNEL |STRING|kanál, na kterém je připojen modem, který obdržel zprávu| |SENDER |STRING|odesílatel | |MESSAGE |STRING|přijatá SMS zpráva (základní ASCII znaky) | |RECEIVETIME|DT |čas, kdy byla SMS zpráva přijata | ===== Funkce ===== Při každém volání funkce //receivesms// v programu se funkce doptává připojených modemů na přijaté SMS zprávy. Výstupem je název kanálu //channel//, ze kterého byla SMS zpráva vyčtena, odesílatel //sender//, čas přijetí zprávy //receivetime//, samotná SMS zpráva //message// a výsledek čtení z daného místa. Proměnná //channel// odkazuje na definované komunikační spojení. To je třeba vytvořit v možnostech PLC: Dvojklikem na PLC zobrazte jeho nabídku a vyberte záložku //Definice hlášení// a pravým kliknutím zobrazíte nabídku, ve které vyberete //Přidat alarmový kanál//. {{:cs:mervis-ide:35-help:sendmail_1.png}} Nyní definujete název, který je vstupem proměnné //channel//. Dále definujete typ spojení //GSM//. Kliknutím vyberete kanál a v jeho vlastnostech nastavíte port, na kterém bude RT komunikovat s modemem. Dále se definují komunikační vlastnosti kanálu. V případě zabezpečené SIM karty je třeba zadat PIN kód. Nakonec potvrdíte všechny změny kliknutím na OK v červeně označeném dialogu. {{:cs:mervis-ide:35-help:sendsms_1.png}} V případě použití některého ze standardně dodávaných modemů (Siemens TC-35, Wavecom), je možné vybrat v //Nastavení AT příkazů// předdefinované příkazy pro nastavení modemu. Následně klikněte na tlačítko //Použít//. Potřebné AT příkazy se následně doplní do tabulky. Zmáčkněte tlačítko //Zavřít// a potvrďte změny klinutím na OK v červeně označeném dialogu. V případě jiného typu modemu, je třeba nastavit modem jeho příslušnými AT příkazy. (V případě problému s nastavením jiného typu modemu kontaktujte technickou podporu Domat Control System.) {{:cs:mervis-ide:35-help:sendsms_2.png}} Výstupní proměnná result hlásí výsledek kontroly nastavení systému. |Číselný status|Význam | |0 |OK | |16 |Neznámý kanál | |24 |Chyba - hodnota číselného statusu nelze určit | |25 |Nemožnost otevřít port nebo inicializovat GSM modem (např. chybně zadané číslo portu)| |26 |Timeout při provádění AT příkazu (default 2 s) | |31 |Není k dispozici žádná zpráva | |42 |Chyba GSM kanálu (např. špatný PIN, nedostupnost sítě, …) | |jiné |Interní chyba - kontaktujte technickou podporu Domat Control System | ===== Příklad použití ===== Tato funkce může být použita k zadání řetězce (//string//) do PLC pomocí SMS zprávy. Příklad viz výše Volání v ST. Je zde použit standardní počet 10 úložných míst, ze kterých se vyčítají aktuální přijaté SMS zprávy. Všechny odpovídající místa v polích //sms_receive, sms_channel, sms_sender, sms_message, receive_time a result// jsou parametry jedné SMS zprávy. Aktuálně vyčtené zprávy mají na odpovídajícím místě v //results// číslo 0. V případě jiného čísla na některé z pozic //results// nedošlo k vyčtení SMS zprávy z tohoto místa a na odpovídající pozici v ostatních polích //sms_receive, sms_channel, sms_sender, sms_message a receive_time// je buď prázdné místo, nebo poslední zpráva, která byla na toto místo uložena. Velikost přijaté zprávy je omezena na 160 znaků.