User Tools

Site Tools


rascii-de

RASCII

Einstellung

rascii-setup-de.jpg

Optionen

Ping

Ein Ping-Befehl wird mit diesem Intervall in ms gesendet.
Deaktiviert falls Null.
Der Ping kann als "Totmannschalter" verwendet werden.


Definition

Das RASCII-Protokoll verwendet HEXA für alle Felder mit Ausnahme des Präfix- und Bemerkungs-Textes.

Befehl

Präfix Länge Befehl Daten Beispiel
@ 00…FF 00…FF 0…n @040101

Antwort

Präfix Länge Befehl Daten Beispiel
& 00…FF 00…FF 0…n

Ereignis

Präfix Länge Befehl Daten Beispiel
$ 00…FF 00…FF 0…n $100200010102030405

Info

Präfix Länge Text Beispiel
# 00…FF 0…n #0CRocDino V0.1

Der Infotext darf keines der Präfixe enthalten. Dadurch wird die Nachricht ungültig und zurückgewiesen.

Serieller Monitor

Der serielle Monitoreingang ist eine Möglichkeit, ein Gerät einfach einzurichten, z. B. die WLAN-Einstellungen.
Die Eingabe sollte gelesen werden, bis ein Zeilenvorschub (Line feed) erkannt wurde und kein Längenfeld enthalten.

Hilfe

Präfix Hinweis
? Sollte Hilfe zu Überwachungsbefehlen anzeigen.

CV

Präfix Beispeil Hinweis
* *ssid=myhome Die Hilfefunktion sollte alle möglichen Einstellungen auflisten.


HEXA

HEXA ist die Hexadezimal-ASCII-Darstellung einer Binärzahl.
Ein Dezimalwert von 47 wird beispielsweise in HEXA als "2F" dargestellt.

Code-Beispiele

Convert a HEXA string to a Byte value

Paratemers:

  • s = HEXA-Zeichenkette

Rückmeldung: Den Byte-Wert

byte HexA2Byte( const char* s ) {
  byte h, l, val;
  if( s[0] >= 'A' ) h = s[0] - 55;
  else h = s[0] -48; 
  if( s[1] >= 'A' ) l = s[1] - 55;
  else l = s[1] -48; 
  val = l + (h << 4);
  return val;
}

Wandelt einen Byte-Wert in eine HEXA-Zeichenkette um

Parameter:

  • b = Byte-Wert
  • s = Puffer für en Empfang der HEXA-Zeichenkette

Rückmeldung: Den Zeiger zum HEXA-Zeichenketten-Puffer

const char* Byte2HexA(byte b, char* s) {
  static char cHex[] = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
  s[0] = cHex[(b&0xF0)>>4];
  s[1] = cHex[ b&0x0F    ];
  s[2] = '\0';
  return s;
}


Lese-Sequenz

  1. Lesen Byte für Byte bis ein Präfix erkannt wird.
  2. Lesen der nächsten beiden HEXA-Zeichen und umwandeln in eine Zahl für die Länge.
  3. Lesen der Anzahl der Bytes, die im Längenfeld eingestellt ist.
  4. Umwandeln von HEXA in Bytes.
  5. Auswerten der Nachricht.
  6. Wiederholen.


Befehle

Board # FF is broadcast.

Code Board Description Parameters Reply
0 # Get information none A remark with version information.
1 # Start none A remark.
2 # Stop none A remark.
3 # Get config none The board configuration response.
4 # Set config The board configuration.
5 # Reset config none
6 # Get CV CV-High, CV-Low A CV number and value response.
7 # Set CV CV-High, CV-Low, value A remark.
10 # Digital output Address, port, on/off -
11 # Analog output Address, Port, value Value can be brightness, followed by three bytes RGB.
12 # Accessory Address, Port, aspect1) -
13 # Mobile speed Address-High, Address-Low, direction/speed2) -
14 # Mobile function Address-High, Address-Low, function, value, lights, fx Lights and FX(32bit) are for information only and optional.
37 # PT ON none A remark.
38 # PT OFF none A remark.
39 # Accessory CV get Address-High, Address-Low, CV-High, CV-Low A CV number and value response.
40 # Accessory CV set Address-High, Address-Low, CV-High, CV-Low, value A remark.


Ereignis

Board # FF is broadcast.

Code Board Description Parameters Remark
1 # Occupancy Port, Status on/off
2 # RFID Port, RFID bytes All RFID bytes may be set zero to signal depart.
Sending a one byte zero ID will also be evaluated as departed.
3 # Digital input Port, on/off
4 # Analog input Port, value H/L

Ereignisse können vom Hostprogramm bestätigt werden.


Bibliotheken

Arduino

1)
0=straight, 1=turnout
2)
dir=0x80, speed=0x7F
rascii-de.txt · Last modified: 2022/12/11 00:46 by rainerk