Dati dello strumento

Leggi i dati di guida attuali e i campioni storici tramite $data e utilizza i risultati per testo, grafica e curve. Questo articolo spiega la configurazione dei dati, la struttura di lettura, i parametri OBD e le regole di aggiornamento.

Interfaccia dati

Lo strumento utilizza un ingresso definito tramite $data. $data.current fornisce l'ingresso corrente e $data.history fornisce la sequenza di campionamento degli ultimi 30 secondi del viaggio corrente. Il nome del campo deriva dall'identificativo di input dello strumento; ad esempio, denominare l'ingresso della velocità di base speed, leggere $data.current.speed; denominare l'ingresso OBD coolant, leggere $data.current.coolant.

I valori equivalenti per velocità, distanza, tempo e OBD includono value e unit. Ad esempio, { value: 42.3, unit: 'km/h' } contiene valori numerici e unità; campi come posizione e valore G forniscono i rispettivi componenti. Valori numerici, testo, opzioni ed elementi di selezione restituiscono direttamente numeri, stringhe o valori booleani senza avvolgere uno strato di value. Consulta l'API $data per le regole complete.

Definire input e associazione nativa

Fai clic sul nome dello strumento nella parte superiore dell'editor per aprire Impostazioni strumento → Associazioni di ingresso. Inserimento in Configurazione dei parametri per la definizione del nome, identificatore e tipologia dell'input; restituisci l'associazione dell'input e inserisci i valori nativi oppure seleziona i parametri del tuo veicolo per l'input OBD. I dati di base vengono forniti automaticamente dall'app.

tipo Configurazione e cosa legge lo script
Numero Imposta il valore predefinito e i limiti superiore e inferiore opzionali; lo script legge direttamente il numero, ad esempio $data.current.limit.
Testo Imposta il testo predefinito; lo script legge direttamente la stringa, ad esempio $data.current.label.
Interruttore Imposta lo stato dell'interruttore predefinito; lo script legge direttamente il valore booleano, ad esempio $data.current.showUnit.
Selezione Definire testo opzionale e valori predefiniti; lo script legge la stringa selezionata, ad esempio $data.current.style.
Dati di base Seleziona una sorgente come velocità, valore G, posizione o tempo; la struttura della lettura dipende dalla sorgente.
Dati OBD Definire il tipo di valore atteso e selezionare i parametri del dispositivo e del veicolo nell'associazione di input; la lettura è { value, unit } o null.

L'identificatore di input è composto da 1-100 lettere e numeri inglesi, che iniziano con una lettera, e non può essere ripetuto nello stesso strumento; ogni strumento ha un massimo di 256 ingressi. Il nome viene utilizzato per la visualizzazione dell'interfaccia e l'identificatore viene utilizzato per il codice. La modifica del nome visualizzato non modifica il percorso di accesso, ma la modifica dell'identificatore richiede la contemporanea modifica del codice.

Ad esempio, dopo aver utilizzato coolant per rappresentare la temperatura del liquido di raffreddamento e aver associato i parametri corrispondenti di diversi dispositivi, il codice continua a leggere $data.current.coolant. L'editor fornisce suggerimenti sull'espressione e sul tipo in base alla definizione di input. Il valore numerico predefinito deve rientrare nei limiti superiore e inferiore e gli elementi di selezione devono avere opzioni non duplicate e non vuote ed elementi predefiniti validi; correggere prima i campi corrispondenti quando si salvano i prompt per gli errori.

lettura attuale

Il nuovo strumento contiene già i dati base in ingresso con identificatore speed e sorgente Velocità; le opere esistenti possono verificare questa definizione nel Configurazione dei parametri. Ottieni $data.current.speed in main() e puoi utilizzare il valore e l'unità di questa velocità. L'esempio seguente mostra il valore arrotondato in alto e l'unità in basso; quando non è disponibile alcuna velocità, viene visualizzato —.

Gli ingressi di velocità base configurati correttamente mantengono sempre l'oggetto, value è null quando manca e unit rimane km/h o mph dalla configurazione. == null Controlla se manca il valore. Quando la velocità è zero, viene ancora visualizzato 0. Il nome del campo è determinato dall'identificatore di input; se viene modificato in vehicleSpeed, anche il codice deve essere modificato in $data.current.vehicleSpeed.

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

parametro OBD

Collegare innanzitutto il dispositivo OBD e verificare che i parametri target producano letture valide. Vai a Configurazione dei parametri e aggiungi l'input Dati OBD, ad es. nome "Temperatura refrigerante", identificatore coolant, tipo previsto selezionare Numerico. Torna a Associazioni di ingresso e seleziona il parametro della temperatura del liquido di raffreddamento in Dispositivi. L'esempio seguente legge tramite $data.current.coolant senza utilizzare il parametro del veicolo UUID come nome del campo dello script.

Le letture associate e configurate contengono sempre value e unit. Quando il dispositivo non è connesso, la lettura scade, o la query fallisce, value è null, e unit mantiene la configurazione dei parametri salvata dal dispositivo selezionato; i parametri senza unità utilizzano unit: null. Quando non è associato o la configurazione del dispositivo e dei parametri non esiste più, l'intero input è null.

value può essere un numero o una stringa con mappatura testo. Il tipo previsto viene utilizzato per modificare i prompt; un'associazione può richiedere argomenti che restituiscono tipi diversi, ma sarà comunque associabile e di conseguenza il valore effettivo non verrà castato. Il tipo deve essere controllato prima della formattazione del numero. Dopo aver cambiato l'adattatore o importato i lavori di altre persone, riassociare l'input corrispondente per mantenere il codice originale.

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

Aggiornamenti e campionamento storico

I misuratori personalizzati non hanno una frequenza di aggiornamento fissa in modo uniforme. Quando l'input corrente, la definizione di input o l'ambiente di visualizzazione cambia, CapDrive riesegue lo script e chiama main(); gli input identici vengono saltati. Lo script viene eseguito in serie e durante l'elaborazione viene mantenuto solo l'ultimo input in sospeso. L'animazione viene eseguita indipendentemente dal lato del disegno, senza eseguire script fotogramma per fotogramma e senza aumentare la frequenza di campionamento del sensore o OBD.

L'App mantiene uniformemente i dati raccolti negli ultimi 30 secondi del viaggio in corso, campionando e conservando fino a 151 elementi a 5 Hz. Aprire lo strumento per leggere la finestra esistente; metti in pausa il disegno o ricostruisci l'istanza in esecuzione senza perdere la finestra e ripristinala quando il viaggio termina, cambia viaggio o modalità di esecuzione. La crescita storica o la pulizia della scadenza non attiveranno lo script separatamente; quando si desidera che la curva avanzi nel tempo, è possibile definire un input di base con l'identificatore elapsed e la sorgente essendo la durata registrata.

Dopo aver definito l'input speed e elapsed, è possibile utilizzare elapsed.value di ciascun campione storico come ascissa e speed.value come ordinata; il timestamp utilizza i millisecondi e la durata registrata utilizza i secondi. Mantieni gli intervalli di test mancanti senza riempire la cronologia con i successivi valori OBD. Le anteprime utilizzano input simulati e i dashboard utilizzano dati reali.

validità dei dati

null significa che al momento non ci sono letture disponibili e 0 è un valore valido. Mantenendo questi due stati lo strumento può realmente visualizzare il parcheggio, l'interruzione della connessione o l'assenza temporanea di test. È possibile utilizzare value == null ? '—' : value per gestire i valori per evitare di visualizzare tutte le misurazioni mancanti come zero tramite value || 0.

Le mappature del testo possono produrre una stringa vuota o restituire un numero o null se non esiste corrispondenza, a seconda della configurazione del parametro. View che accetta valori letterali può visualizzare stringhe; i valori coinvolti nei calcoli e nella formattazione dei numeri dovrebbero prima controllare il tipo.

Quando si risolvono i misurazioni mancanti, verificare in base alla fonte dati corrispondente al campo: velocità di base per visualizzare lo stato del posizionamento; Parametro OBD per visualizzare il dispositivo corrente, testare i risultati della lettura e la configurazione dei parametri. Una volta che l'origine dati è normale, controllare i campi e le espressioni del codice selezionati dallo strumento.

Prosegui con