Gerätedaten

Lesen Sie aktuelle Fahrdaten und historische Beispiele über $data und nutzen Sie die Ergebnisse für Texte, Grafiken und Kurven. In diesem Artikel werden die Datenkonfiguration, die Lesestruktur, die OBD-Parameter und Aktualisierungsregeln erläutert.

Datenschnittstelle

Das Gerät nutzt einen definierten Eingang über $data. $data.current liefert den aktuellen Eingang und $data.history liefert die Abtastsequenz der letzten 30 Sekunden der aktuellen Fahrt. Der Feldname stammt aus der Eingabekennung des Instruments; Benennen Sie beispielsweise den Basisgeschwindigkeitseingang speed, lesen Sie ihn durch $data.current.speed; Benennen Sie den OBD-Eingang coolant und lesen Sie $data.current.coolant durch.

Äquivalente Werte für Geschwindigkeit, Distanz, Zeit und OBD umfassen value und unit. Beispielsweise enthält { value: 42.3, unit: 'km/h' } numerische Werte und Einheiten; Felder wie Position und G-Wert liefern ihre jeweiligen Komponenten. Numerische Werte, Text, Schalter und Auswahlelemente geben Zahlen, Zeichenfolgen oder boolesche Werte direkt zurück, ohne eine Schicht von value einzuschließen. Vollständige Regeln finden Sie in der $data-API.

Definieren Sie die Eingabe und die native Bindung

Klicken Sie oben im Editor auf den Instrumentennamen, um Instrumenteneinstellungen → Eingabezuordnungen zu öffnen. Wechseln Sie zu Parameterkonfiguration, um den Namen, die Kennung und den Typ der Eingabe zu definieren. Geben Sie die Eingabebindung zurück und geben Sie native Werte ein oder wählen Sie Ihre eigenen Fahrzeugparameter für die Eingabe OBD aus. Die Grunddaten werden automatisch von der App bereitgestellt.

Typ Konfiguration und was das Skript liest
Zahl Legen Sie den Standardwert und optionale Ober- und Untergrenzen fest; Das Skript liest die Nummer direkt, z. B. $data.current.limit.
Text Legen Sie den Standardtext fest. Das Skript liest die Zeichenfolge direkt, z. B. $data.current.label.
Schalter Legen Sie den Standardschalterzustand fest. Das Skript liest den booleschen Wert direkt, z. B. $data.current.showUnit.
Auswahl Definieren Sie optionalen Text und Standardwerte. Das Skript liest die ausgewählte Zeichenfolge, z. B. $data.current.style.
Basisdaten Wählen Sie eine Quelle wie Geschwindigkeit, G-Wert, Position oder Zeit; Die Auslesestruktur hängt von der Quelle ab.
OBD-Daten Definieren Sie den erwarteten Werttyp und wählen Sie die Geräte- und Fahrzeugparameter in der Eingabebindung aus. Die Anzeige lautet { value, unit } oder null.

Die Eingabekennung besteht aus 1-100 englischen Buchstaben und Zahlen, beginnend mit einem Buchstaben, und kann nicht im selben Instrument wiederholt werden; Jedes Instrument verfügt über maximal 256 Eingänge. Der Name wird für die Schnittstellenanzeige und die Kennung für den Code verwendet. Durch die Änderung des Anzeigenamens ändert sich nicht der Zugriffspfad, die Änderung der Kennung erfordert jedoch gleichzeitig eine Änderung des Codes.

Nachdem beispielsweise coolant zur Darstellung der Kühlmitteltemperatur verwendet und die entsprechenden Parameter verschiedener Geräte gebunden wurden, lautet der Code immer noch $data.current.coolant. Der Editor stellt Ausdrucks- und Typhinweise basierend auf der Eingabedefinition bereit. Der numerische Standardwert muss innerhalb der Ober- und Untergrenzen liegen und die Auswahlelemente dürfen nicht duplizierte, nicht leere Optionen und gültige Standardelemente aufweisen. Korrigieren Sie beim Speichern von Eingabeaufforderungen bei Fehlern zunächst die entsprechenden Felder.

aktuelle Lektüre

Das neue Instrument enthält bereits die Basisdateneingabe mit der Kennung speed und der Quelle Geschwindigkeit; Bestehende Werke können diese Definition in Parameterkonfiguration überprüfen. Erhalten Sie $data.current.speed in main(), und Sie können den Wert und die Einheit dieser Geschwindigkeit verwenden. Das folgende Beispiel zeigt oben den gerundeten Wert und unten die Einheit; Wenn keine Geschwindigkeit verfügbar ist, wird — angezeigt.

Korrekt konfigurierte Basisgeschwindigkeitseingänge behalten immer das Objekt bei, value ist null, wenn es fehlt, und unit bleibt km/h oder mph aus dem Setup. == null Prüfen Sie, ob der Wert fehlt. Wenn die Geschwindigkeit Null ist, wird immer noch 0 angezeigt. Der Feldname wird durch die Eingabekennung bestimmt; Wenn es in vehicleSpeed geändert wird, sollte der Code auch in $data.current.vehicleSpeed geändert werden.

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>
  );
}

OBD-Parameter

Schließen Sie zunächst das OBD-Gerät an und überprüfen Sie, ob die Zielparameter gültige Messwerte liefern. Gehen Sie zu Parameterkonfiguration und fügen Sie die Eingabe OBD-Daten hinzu, z. B. Name „Kühlmitteltemperatur“, Kennung coolant, erwarteter Typ, wählen Sie Numerisch aus. Kehren Sie zu Eingabezuordnungen zurück und wählen Sie unter Geräte den Kühlmitteltemperaturparameter aus. Das folgende Beispiel liest über $data.current.coolant, ohne den Fahrzeugparameter UUID als Skriptfeldnamen zu verwenden.

Lesevorgänge, die gebunden und konfiguriert sind, enthalten immer value und unit. Wenn das Gerät nicht angeschlossen ist, der Lesevorgang abläuft oder die Abfrage fehlschlägt, ist value null und unit übernimmt weiterhin die vom ausgewählten Gerät gespeicherte Parameterkonfiguration; Einheitenlose Parameter verwenden unit: null. Wenn es nicht gebunden ist oder die Geräte- und Parameterkonfiguration nicht mehr vorhanden ist, ist die gesamte Eingabe null.

value kann eine Zahl oder eine textzugeordnete Zeichenfolge sein. Der erwartete Typ wird zum Bearbeiten von Eingabeaufforderungen verwendet. Eine Bindung kann zur Eingabe von Argumenten auffordern, die unterschiedliche Typen zurückgeben, aber dennoch bindbar sind und der tatsächliche Wert als Ergebnis nicht umgewandelt wird. Vor der Zahlenformatierung sollte der Typ überprüft werden. Nachdem Sie den Adapter geändert oder die Werke anderer Leute importiert haben, binden Sie die entsprechende Eingabe erneut, um den ursprünglichen Code beizubehalten.

function main() {
  const reading = $data.current.coolant;
  const value = reading?.value;
  const text =
    value == null
      ? '—'
      : typeof value === 'number'
        ? value.toFixed(1)
        : value.toString();
  return (
    <VStack spacing={8}>
      <Text fontSize={48} color={$env.foreground}>
        {text}
      </Text>
      <Text fontSize={16} color={$env.accent}>
        {reading?.unit ?? ''}
      </Text>
    </VStack>
  );
}

Aktualisierungen und historische Stichproben

Benutzerdefinierte Messgeräte haben keine einheitlich feste Bildwiederholfrequenz. Wenn sich die aktuelle Eingabe, Eingabedefinition oder Anzeigeumgebung ändert, führt CapDrive das Skript erneut aus und ruft main() auf; identische Eingaben werden übersprungen. Das Skript wird seriell ausgeführt und nur die letzte ausstehende Eingabe bleibt während der Verarbeitung erhalten. Die Animation wird unabhängig von der Zeichenseite durchgeführt, ohne dass Skripte Bild für Bild ausgeführt werden müssen und ohne die Abtastfrequenz des Sensors oder OBD zu erhöhen.

Die App verwaltet einheitlich die gesammelten Daten der letzten 30 Sekunden der aktuellen Fahrt und erfasst und speichert bis zu 151 Elemente bei 5 Hz. Öffnen Sie das Instrument, um das vorhandene Fenster abzulesen. Unterbrechen Sie die Zeichnung oder erstellen Sie die laufende Instanz neu, ohne das Fenster zu verlieren, und setzen Sie sie zurück, wenn die Fahrt endet, Fahrten wechselt oder den Betriebsmodus wechselt. Die Bereinigung des historischen Wachstums oder Ablaufs löst das Skript nicht separat aus; Wenn Sie möchten, dass die Kurve im Laufe der Zeit voranschreitet, können Sie eine Basiseingabe mit der Kennung elapsed und der Quelle der aufgezeichneten Dauer definieren.

Nach der Definition der Eingaben speed und elapsed kann elapsed.value jeder historischen Stichprobe als Abszisse und speed.value als Ordinate verwendet werden; Der Zeitstempel verwendet Millisekunden und die aufgezeichnete Dauer verwendet Sekunden. Behalten Sie fehlende Testintervalle bei, ohne den Verlauf mit nachfolgenden OBD-Werten aufzufüllen. Vorschauen verwenden simulierte Eingaben und Dashboards verwenden echte Daten.

Datengültigkeit

null bedeutet, dass derzeit keine Messwerte verfügbar sind und 0 ein gültiger Wert ist. Durch die Beibehaltung dieser beiden Zustände kann das Instrument tatsächlich Parken, Verbindungsunterbrechung oder vorübergehende Abwesenheit von Tests anzeigen. Sie können value == null ? '—' : value verwenden, um Werte zu verarbeiten, um zu vermeiden, dass alle fehlenden Messungen über value || 0 als Null angezeigt werden.

Textzuordnungen können je nach Parameterkonfiguration eine leere Zeichenfolge erzeugen oder eine Zahl oder null zurückgeben, wenn keine Übereinstimmung vorliegt. View, das Literale akzeptiert, kann Zeichenfolgen anzeigen; Werte, die an Berechnungen und Zahlenformatierungen beteiligt sind, sollten zunächst den Typ überprüfen.

Überprüfen Sie bei der Fehlerbehebung fehlender Tests anhand der Datenquelle, die dem Feld entspricht: Grundgeschwindigkeit, um den Positionierungsstatus anzuzeigen; Parameter OBD zum Anzeigen des aktuellen Geräts, der Testleseergebnisse und der Parameterkonfiguration. Nachdem die Datenquelle normal ist, überprüfen Sie die vom Instrument ausgewählten Felder und Codeausdrücke.

Weiter mit