Das lernst du heute
- PrefabHash und NameHash lesen
- Geräte erkennen
- Hash vergleichen
Bisher wusste dein Code immer, welches Gerät wo hängt – du hast es ja selbst angeschlossen. Ein Chip, den andere Spieler aus der Bibliothek holen, weiß das nicht. Er kann aber fragen: Jedes logikfähige Gerät meldet, was es ist und wie es heißt.
Drei Kennungen
| LogicType | liefert |
|---|---|
PrefabHash | den Hash des Prefab-Namens, also den Gerätetyp |
NameHash | den Hash des Namens, den du mit dem Etikettierer vergeben hast |
ReferenceId | die eindeutige Nummer dieses einen Geräts |
PrefabHash ist dieselbe Zahl, die HASH("StructureGasSensor") liefert. NameHash dieselbe wie HASH("Raum"). Du vergleichst also einfach mit einem define:
l typ d0 PrefabHash
seq tmp typ SENSOR # 1 = an d0 hängt ein Gassensor
Geräte an Pins erkennen
Mit dem indirekten Pin dr0 (Tag 102) geht eine Schleife alle sechs Pins durch. bdns überspringt leere Pins, bevor l einen Fehler auslöst:
move pin 0
schleife:
bdns dr0 weiter # leerer Pin: überspringen
l typ dr0 PrefabHash
weiter:
add pin pin 1
blt pin PINS schleife
So zählt der Chip, wie viele Sensoren und Akkus er hat, und findet das Gerät mit einem bestimmten Namen – egal an welchem Pin es steckt.
Wofür das gut ist
- Selbsterkennung: Ein Chip prüft beim Start, ob an d0 wirklich ein Gassensor hängt, und meldet sonst einen Fehler, statt Unsinn zu regeln.
- Universalanzeige: Je nach Gerätetyp liest der Chip
TemperatureoderRatio. - Namen statt Pins: Der Chip sucht „Haupt“, egal ob jemand den Akku auf d1 oder d3 gesteckt hat.
Ein leerer Pin ist kein Gerät. l typ dr0 PrefabHash auf einen leeren Pin hält den Chip mit einem Fehler an. Erst bdns, dann lesen.
Im Netz brauchst du das seltener, dort sucht lbn schon nach Typ und Name. Hilfreich ist NameHash aber auch dort: Ein Chip kann so prüfen, ob ein Gerät den Namen trägt, den er erwartet.
Schaubild
Übung
Aufgabe
An den Pins d0–d5 hängen Gassensoren, Akkus oder nichts. Schreibe eine Schleife über alle Pins:
- Anzeige „Sensoren“: Zahl der Gassensoren
- Anzeige „Akkus“: Zahl der Stationsbatterien
- Anzeige „Haupt“: Pin-Nummer des Geräts mit dem Namen „Haupt“, −1 wenn es fehlt
Die Pin-Nummer steht in pin (r0), damit dr0 funktioniert.
Hinweise
Hinweis 1
bdns dr0 weiter überspringt leere Pins.
Hinweis 2
l typ dr0 PrefabHash, dann seq mit SENSOR und AKKU und aufaddieren.
Hinweis 3
Name: l tmp dr0 NameHash, seq tmp tmp HAUPT, select haupt tmp pin haupt.
Quiz
3 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