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

Tag 108 von 365 · Fortgeschritten · Monat 4: Netzwerk im Detail

Relativ mit Geräten: brdse, brdns

brdse und brdns springen relativ, je nachdem ob an einem Pin ein Gerät steckt. Für ein, zwei Ausweichzeilen kurz und klar – für ganze Abschnitte zu unübersichtlich.

Lektion 13 Min. Woche 16

Das lernst du heute

  • Relativer Sprung je nach Pin
  • Kurze Ausweichzeilen
  • Lesbarkeit abwägen

Ein Sensor an einem Pin ist optional: Steckt er, soll der Chip ihn lesen, sonst einen Ersatzwert nehmen. Mit bdns und einem Label geht das. Für eine oder zwei Zeilen gibt es die kürzere Form: brdse und brdns.

Relativ je nach Pin

Befehlspringt um n Zeilen, wenn
brdse gerät nein Gerät gesetzt ist
brdns gerät nkein Gerät gesetzt ist
move temp ERSATZ          # Ersatzwert, falls d1 leer ist
brdns d1 2                # kein Geraet: Lesen auslassen
l temp d1 Temperature

Ohne Gerät springt der Chip über das l hinweg, und temp behält den Ersatzwert. Mit Gerät liest er und überschreibt ihn. Zwei Zeilen, kein Label. Wie bei bdse und bdns darf als Gerät auch ein Register mit ReferenceId stehen.

Kurze Ausweichzeilen

Das Muster heißt Standard vorn, Ausnahme dahinter: Erst steht der sichere Wert im Register, dann folgt die Zeile, die ihn nur unter einer Bedingung ersetzt.

Mehrere optionale Sensoren lassen sich so mitteln. Jeder Block zählt nur, wenn sein Sensor steckt:

move summe 0
move n 0
brdns d0 4
l t d0 Temperature
add summe summe t
add n n 1

Der Abstand 4 überspringt die drei Zeilen danach.

Lesbarkeit abwägen

Relative Sprünge sparen Labels und Zeilen. Sie haben aber einen Preis: Wer den Code liest, muss Zeilen zählen, und jede eingefügte Zeile verschiebt die Ziele. Als Faustregel gilt:

StreckeWahl
eine bis drei Zeilenrelativer Sprung
ganzer AbschnittLabel mit bdns
Ziel in einem anderen Abschnittimmer ein Label
Achtung

brdns d1 2 springt über eine Zeile, nicht über zwei. Der Abstand 1 wäre die nächste Zeile, also gar kein Sprung. Wer „2“ als „zwei Zeilen überspringen“ liest, landet eine Zeile zu weit.

Tipp

Teile durch die Anzahl erst, wenn sie größer als 0 ist, oder fang das Ergebnis ab. Ohne jeden Sensor ist summe / n sonst 0 / 0, und das ergibt NaN.

Schaubild

Lesen mit l, Schreiben mit s Gas-Sensor (d0) Temperature 293.15 IC10 r0 = 293.15 Wandlampe (d1) On 1 l r0 d0 Temperature Gerät → Register s d1 On 1 Wert → Gerät
Steckt kein Gerät, überspringt brdns die Lesezeile. Der Ersatzwert davor bleibt dann stehen.

Übung

Aufgabe

An d0 und d1 können Gassensoren stecken, an d2 eine LED-Anzeige. Die Wandheizung „Labor“ hängt im Netz.

  • Bilde mit brdse/brdns das Mittel der Sensoren, die stecken.
  • Heizung an, wenn das Mittel unter 20 °C liegt. Ohne Sensor: aus.
  • Die Anzeige zeigt das Mittel in °C, ohne Sensor −999. Fehlt die Anzeige, gibt es keinen Fehler.

Absolute Vergleichssprünge und bdse/bdns sind hier nicht erlaubt.

Hinweise

Hinweis 1

Pro Sensor ein Block: brdns sensorA 4, dann lesen, addieren, zählen.

Hinweis 2

div mittel summe n ergibt ohne Sensor NaN – slt lässt die Heizung dann aus.

Hinweis 3

Anzeige: brgtz n 2 überspringt move c KEINWERT, brdns anzeige 2 überspringt das s.

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