Text Com
A Text Com a Hayes modemparancsok mintájára egy szöveges kommunikációnyelv, ahol a parancsok és a válaszok is kódolt szöveges formában kerülnek átvitelre. Ez az egész egyenlőre csak egy kísérlet, amit alap-automizálási megoldásokhoz próbálok összerakni.
Alapformátuma:
{művelet}:{egység}:{mód}:{állapot}
Példák:
CMD:SW01:AUT (AUT/MAN/LOC/ERR) // Az első relékimenet automatikába kapcsolása
QUE:SW01 // az első relékimenet állapotának a lekérdezése
QUE:? // az elérhető egységek lekérdezése
STA:SW01:AUT:ON (AUT/MAN/LOC/ERR) (ON/OFF/NN) // az első relékimenet állapotának a jelentése: auto/on
{művelet}
NOP: helykitöltés
CMD: parancs
QUE: lekérdezés
STA: állapot
#define _NOP 0 #define _CMD 1 #define _QUE 2 #define _STA 3
{egység}
QUE:? // az elérhető egységek lekérdezése
Erre a válasz valami ilyesmi:
STA:SW01:RELAY12V:DIGI_AUT:Relé kimenet szelep 1
STA:SW01:RELAY12V:DIGI_AUT:Relé kimenet szelep 1
STA:ME01:DSTEMP:A1_OUT:Folyadékhőmérséklet °C
STA:ME02:DSTEMP:A1_OUT:Levegő hőmérséklet °C
STA:ME03:APRES:A1_OUT:Levegő nyomása mbar
{mód}
NNN: helykitöltés
AUT: automatikus mód
MAN: (távoli) manuális mód
LOC: helyi (manuális) mód
ERR: módhiba
#define _NNN 10 #define _AUT 11 #define _MAN 12 #define _LOC 13 #define _ERR 19
{állapot}
NN: helykitöltés
ON: be
OF: ki
SB: standby
ER: állapothiba
#define _NN 20 #define _ON 21 #define _OF 22 #define _SB 23 #define _ER 29
#define _NOP 0 #define _CMD 1 #define _QUE 2 #define _STA 3 #define _NNN 10 #define _AUT 11 #define _MAN 12 #define _LOC 13 #define _ERR 19 #define _NN 20 #define _ON 21 #define _OF 22 #define _SB 23 #define _ER 29 String readit = "CMD:SW01:AUT"; String it, it2; int income, unit, mod, posStart, posEnd; void setup() { Serial.begin(9600); // put your setup code here, to run once: } void loop() { // read and ident command posStart = 0; posEnd = readit.indexOf(":"); it = readit.substring(posStart, posEnd); readit = readit.substring(posEnd+1); if (it = "CMD") { // command mod = _CMD; } else if (it = "QUE") { // question mod = _QUE; } else if (it = "STA") { // status mod = _STA; } else { mod = _NOP; // problem } // read and ident unit posStart = 0; posEnd = readit.indexOf(":"); it2 = readit.substring(posStart, posEnd); // read and ident MODE if (it = "CMD") { // command mod = _CMD; } else if (it = "QUE") { // question mod = _QUE; } else if (it = "STA") { // status mod = _STA; } else { mod = _NOP; // problem } Serial.print("it: "); Serial.println(readit); delay(2000); }