stationeers.de Mod-Werkstatt · Dominik1199
EN Anmelden
  1. Start
  2. IC10-Akademie
  3. Tag 282

Tag 282 von 365 · Experte · Monat 10: Bits und Daten

Text mit STR()

STR() packt bis zu sechs ASCII-Zeichen in eine Zahl: Text auf LED-Anzeigen im String-Modus, wie die Zeichen liegen und welche Fehler bei Umlauten und langen Wörtern kommen.

Lektion 16 Min. Woche 41

Das lernst du heute

  • Bis zu sechs ASCII-Zeichen packen
  • Text auf Anzeigen
  • Grenzen von STR

Eine Anzeige mit „101.3“ sagt dem Kollegen nichts, wenn er nicht weiß, was gemessen wird. „OK“ oder „MAX“ versteht jeder. IC10 hat keine Zeichenketten – aber es kann bis zu sechs Buchstaben in eine Zahl packen.

STR()

STR("OK") wird beim Laden des Codes durch eine Zahl ersetzt, genau wie HASH(). Jedes Zeichen belegt 8 Bit, das erste Zeichen steht ganz oben:

TextBytesZahl
STR("A")6565
STR("OK")79, 7579 · 256 + 75 = 20299
STR("MAX")77, 65, 885063000

Sechs Zeichen sind 48 Bit und passen damit in die 53 Bit eines Registers. Ein siebtes passt nicht mehr.

Text auf der Anzeige

Eine LED-Anzeige zeigt Setting als Text, wenn ihr Mode auf DisplayMode.String (10) steht. Das Spiel liest die Zahl dabei Byte für Byte zurück in Zeichen:

sbn ANZ HASH("Status") Mode DisplayMode.String
sbn ANZ HASH("Status") Setting STR("OK")

Da STR() nur eine Zahl ist, kannst du es in define, move und select benutzen wie jede andere Konstante. So wählt ein Chip zwischen fertigen Texten:

move text TX_OK
slt tmp druck P_MIN
select text tmp TX_MIN text      # zu niedrig

Grenzen von STR

FehlerUrsache
InvalidStringLength (28)mehr als sechs Zeichen
InvalidStringNull (29)leerer Text STR("")
InvalidStringNonAscii (30)Zeichen außerhalb von ASCII, etwa Umlaute
Achtung

STR("KÜHL") lässt sich nicht laden – das Ü ist kein ASCII-Zeichen. Schreib „KUEHL“, genau wie bei den Gerätenamen.

Hinweis

STR() ersetzt der Präprozessor beim Laden. Text aus einem Register machen kann es nicht. Wie du zur Laufzeit Ziffern in einen Text einsetzt, zeigt das Projekt am Samstag – mit ins, denn jedes Zeichen ist einfach ein 8-Bit-Feld.

Übung

Aufgabe

Zeige den Zustand des Raums „Raum“ als Text auf der Anzeige „Status“:

  • die Anzeige steht im Modus DisplayMode.String
  • „OK“ zwischen 80 und 120 kPa
  • „MIN“ unter 80 kPa, „MAX“ über 120 kPa
  • „ERROR“, wenn der Sensor fehlt

Hinweise

Hinweis 1

Den Modus setzt sbn ANZ HASH("Status") Mode DisplayMode.String.

Hinweis 2

Starte mit move text TX_OK und überschreibe mit select.

Hinweis 3

Der Sensorausfall kommt zuletzt, damit er alles andere überschreibt.

Quiz

4 Fragen. Ab 60 % ist das Quiz bestanden – die Auswertung macht der Server.

Tag abschließen

  • Übung im Simulator bestanden
  • Quiz mit mindestens 60 % bestanden

Ohne Konto wird der Fortschritt nur in diesem Browser gespeichert.

Fehler in dieser Lektion melden

Zum Melden bitte anmelden. Anmelden

Esc
↑ ↓ wählenEnter öffnen/ öffnet die Suche überall