hu:project:text_com

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);

}
  • hu/project/text_com.txt
  • 2022/04/21 15:04
  • ()