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:
| Text | Bytes | Zahl |
|---|---|---|
STR("A") | 65 | 65 |
STR("OK") | 79, 75 | 79 · 256 + 75 = 20299 |
STR("MAX") | 77, 65, 88 | 5063000 |
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
| Fehler | Ursache |
|---|---|
InvalidStringLength (28) | mehr als sechs Zeichen |
InvalidStringNull (29) | leerer Text STR("") |
InvalidStringNonAscii (30) | Zeichen außerhalb von ASCII, etwa Umlaute |
STR("KÜHL") lässt sich nicht laden – das Ü ist kein ASCII-Zeichen. Schreib „KUEHL“, genau wie bei den Gerätenamen.
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