main()

Der Zeichnungseintrag des Instrumentenskripts. CapDrive ruft main() auf, um diesen Bildschirm abzurufen, und ist für das Layout, die Zeichnung und die anschließende Aktualisierung verantwortlich.

Ausführungsprozess

Jedes Mal, wenn es neue Eingaben akzeptiert, aktualisiert CapDrive die aktuelle Daten- und Anzeigeumgebung, führt die gesamte Datei im neuen lokalen Bereich aus und ruft dann den diesmal definierten main() auf. Die Funktion gibt das integrierte Array View, View oder leeren Inhalt synchron zurück.

Auch Abrufe und Berechnungen der obersten Ebene werden bei jeder Ausführung aktualisiert. Gewöhnliche Variablen werden jedes Mal neu initialisiert und $sessionStorage wird für den Span-Status verwendet.

Änderungen an der aktuellen Eingabe, Eingabedefinition oder Anzeigeumgebung lösen die Ausführung aus, und es gibt keine einheitlich festgelegte Häufigkeit. Identische Eingaben werden übersprungen und nur die letzten ausstehenden Eingaben bleiben in der Verarbeitung. Das Anwachsen des Verlaufsfensters, die Bereinigung und interne Änderungen der Abtastzeit lösen nicht die individuelle Ausführung aus; explizit definierte Zeiteingabeänderungen werden weiterhin ausgelöst. Die Animation wird von der Zeichenseite unabhängig durchgeführt.

Beispiel: Mit aktuellen Messwerten zeichnen

Wählen Sie die Geschwindigkeit in den Messgeräteinstellungen aus. Jeder Anruf liest die aktuelle Geschwindigkeit, generiert Zahlen und Einheiten; Zeigt eine horizontale Linie an, wenn keine Geschwindigkeit verfügbar ist.

function main() {
  const speed = $data.current.speed;
  return (
    <VStack spacing={8}>
      <Text fontSize={64} color={$env.foreground}>
        {speed?.value == null ? '—' : Math.round(speed.value)}
      </Text>
      <Text fontSize={16} color={$env.accent}>
        {speed?.unit ?? $env.speedUnit}
      </Text>
    </VStack>
  );
}

Zustand zwischen Funktionsaufrufen

Gewöhnliche lokale Variablen werden nur für diesen Funktionsaufruf verwendet. Verwenden Sie $sessionStorage, wenn Sie den Status von Spitzenwerten, Zählungen usw. innerhalb der aktuellen Fahrt beibehalten müssen. Es ist je nach Auslösung und Instrumenteninstanz isoliert und wird gelöscht, wenn die Auslösung endet oder das Instrument neu geladen wird.

Wenn eine Liste benötigt wird, kann View aus dem Array map generiert werden. Stellt einen stabilen key für Elemente bereit, die aktualisiert oder umgeformt werden, sodass Zeichnungsaktualisierungen und Animationen weiterhin demselben Element entsprechen.

Betriebsvoraussetzungen und Fehler

main() sollte innerhalb eines synchronen Aufrufs abgeschlossen werden. Vermeiden Sie Endlosschleifen, blockierende Wartezeiten und Datenstrukturen, die unbegrenzt wachsen. Die Laufzeit begrenzt die Ausführungszeit, die Schritte und die Größe des Zeichnungsinhalts. Die Werte in den Zeichnungsattributen müssen endliche Zahlen sein, und die Berechnungsergebnisse sollten sich zunächst mit fehlenden Tests, Division durch Null usw. befassen.

Skriptfehler werden im Gerätefehlerstatus und den entsprechenden Protokollen angezeigt. Die Vorschau wird verwendet, um den Anzeigecode zu überprüfen. Die tatsächlichen Zählerstände hängen von den ausgewählten Daten und der aktuellen Datenquelle ab.