$data · Datos de conducción
$data proporciona datos según el identificador de entrada de este instrumento: current es la entrada actual y history son las muestras de entrada de los últimos 30 segundos del viaje actual.
datos legibles
Haga clic en el nombre del instrumento en la parte superior del editor para abrir Ajustes del instrumento → Vinculaciones de entrada. Utilice Configuración de parámetros para definir el nombre, identificador y tipo de entrada; devuelva el enlace de entrada y complete los valores nativos, o seleccione los parámetros de su propio vehículo para la entrada OBD. La aplicación proporciona los datos básicos automáticamente.
El script accede a la entrada a través de $data.current.<identifier>. Por ejemplo, la entrada de velocidad base speed usa $data.current.speed y la entrada OBD coolant usa $data.current.coolant. El nombre del campo es independiente del UUID del parámetro del vehículo y del nombre del dispositivo. Cambiar los parámetros del vehículo solo requiere volver a vincularlo; modificar el identificador de entrada requiere modificar el código.
| tipo | Configuración y lo que lee el script |
|---|---|
| Número | Establezca el valor predeterminado y los límites superior e inferior opcionales; el script lee el número directamente, como $data.current.limit. |
| Texto | Establecer el texto predeterminado; el script lee la cadena directamente, como $data.current.label. |
| Interruptor | Establezca el estado del interruptor predeterminado; el script lee el valor booleano directamente, como $data.current.showUnit. |
| Selección | Definir texto opcional y valores predeterminados; el script lee la cadena seleccionada, como $data.current.style. |
| Datos básicos | Seleccione una fuente como velocidad, valor G, posición o tiempo; la estructura de lectura depende de la fuente. |
| Datos OBD | Defina el tipo de valor esperado y seleccione los parámetros del dispositivo y del vehículo en el enlace de entrada; la lectura es { value, unit } o null. |
La siguiente tabla de campos utiliza identificadores de ejemplo y no significa que cada medidor tenga automáticamente estos campos. La interfaz real y los mensajes de tipo se generan en función de la definición de entrada del instrumento actual.
Estructura de las lecturas y valores ausentes
El valor de la cantidad básica y la lectura OBD suelen ser { value, unit }; Los datos básicos como posición, valor G, actitud, etc. tienen sus propios componentes y el estado de grabación es un valor booleano. Los valores, texto, modificadores y selecciones devuelven sus valores configurados directamente.
Cuando OBD no está vinculado o la configuración no existe, la entrada completa es null; cuando el enlace existe pero falta temporalmente, se conserva { value: null, unit }. Utilice reading?.value == null para comprobar si faltan pruebas y conserva el 0 válido. value de OBD puede ser un literal de mapeo; la declaración de tipo no realiza conversión en tiempo de ejecución y el tipo debe verificarse antes de llamar a métodos numéricos.
Ventana de historial y unidad de tiempo
$data.history son los datos seleccionados de El viaje actual dura 30 segundos., ordenados del más antiguo al más nuevo. El host guarda todos los datos recopilados de manera unificada y luego los ensambla según sea necesario de acuerdo con los parámetros de entrada del instrumento; La ventana existente se puede leer abriendo el instrumento. Pausar el dibujo, omitir el renderizado o recrear una instancia en ejecución no pierde la ventana. Reiniciar al finalizar o cambiar viajes o cambiar modos de operación; la ventana del historial está vacía cuando no hay ningún viaje activo.
El historial se muestrea a un máximo de 5 Hz, con muestras adyacentes separadas por al menos 200 ms y se retienen un máximo de 151 elementos. Los tiempos de muestreo repetidos y los redibujados causados únicamente por cambios en el entorno de visualización no aumentarán las muestras; Después de que se detengan los datos, el host seguirá eliminando las muestras caducadas en un tiempo monótono, sin ejecución del script. Este límite superior no impide que current lea esta última entrada, ni inicia consultas OBD adicionales.
Cada muestra tiene una estructura de campos consistente con current y puede contener pruebas faltantes. La modificación de definiciones de entrada o enlaces vuelve a ensamblar la ventana; Los parámetros fijos como valores, interruptores, texto y opciones utilizan la configuración actual. La actualización de datos solo compara el contenido real de $data.current para decidir si ejecutar JS. Los valores, las unidades y los subcampos de grupo participan en la comparación; Las nuevas respuestas con el mismo valor, crecimiento o recorte histórico, tiempo de recopilación interna y actualizaciones de fuentes no seleccionadas no activarán la ejecución por separado. El host continúa manteniendo la ventana completa y la próxima vez que cambie current, el script obtiene el historial más reciente. Las marcas de tiempo seleccionadas explícitamente o las duraciones registradas pertenecen a current y los cambios de valores seguirán activando la ejecución. OBD La lectura conserva el valor, la unidad y el estado de medición faltante en el momento del muestreo y no se completará con lecturas posteriores; la velocidad básica se convertirá según la unidad de visualización actual. elapsed.value es el número de segundos transcurridos durante el viaje actual, timestamp.value es la marca de tiempo en milisegundos y movingTime.value es el tiempo de viaje en segundos. Utilice el tiempo real al dibujar curvas de tiempo y conserve los puntos de interrupción causados por mediciones faltantes.
Ejemplo: Mostrar los parámetros de velocidad y OBD simultáneamente
Defina dos entradas: la entrada de velocidad base con identificador speed y la entrada OBD con identificador coolant. Vincular los parámetros nativos del vehículo a este último. El siguiente ejemplo muestra lecturas y unidades por sus respectivos identificadores de entrada; no se requieren modificaciones en el código de ejemplo al volver a vincular el dispositivo.
function main() {
const speed = $data.current.speed;
const parameter = $data.current.coolant;
return (
<VStack spacing={8}>
<Text fontSize={40}>
{speed?.value == null ? '—' : speed.value.toFixed(0)}
</Text>
<Text>{speed?.unit ?? $env.speedUnit}</Text>
<Text>
{parameter?.value == null ? '—' : parameter.value.toString()}
</Text>
<Text>{parameter?.unit ?? ''}</Text>
</VStack>
);
}
Actualizaciones y fuentes de datos
Cada ejecución de script utiliza la última entrada; la frecuencia real está determinada por la fuente de datos, los cambios de entrada y el tiempo de procesamiento. current y history devuelven copias de los datos; modificarlas no cambiará las lecturas del sensor ni la configuración del vehículo.
A campos como la velocidad base se les aplicarán configuraciones válidas de reemplazo de datos del viaje. La lectura del parámetro OBD utiliza directamente la propia lectura y unidad del parámetro. Los intervalos de consulta, las respuestas de los vehículos y otras solicitudes afectarán la actualización real. La disponibilidad de datos también se ve afectada por el posicionamiento, el estado de reconocimiento y la conectividad del dispositivo; Las vistas previas del editor utilizan entradas simuladas independientes.
Campo
current{ [identifier: string]: number | string | boolean | object | null }Datos seleccionados más recientes
history{ [identifier: string]: number | string | boolean | object | null }[]Datos seleccionados de los últimos 30 segundos, del más antiguo al más reciente
current.speed{ value: number | null; unit: "km/h" | "mph" }Velocidad
current.gForce{ longitudinal: number | null; lateral: number | null; combined: number | null; unit: string }Fuerza G
current.heading{ direction: number | null; accuracy: number | null; unit: string }Rumbo
current.location{ latitude: number | null; longitude: number | null; unit: string }Ubicación
current.vehicleAttitude{ roll: number | null; pitch: number | null; unit: string }Actitud del vehículo
current.locationAccuracy{ value: number | null; unit: "m" }Precisión de ubicación
current.altitude{ value: number | null; unit: "m" }Altitud
current.distance{ value: number | null; unit: "m" }Distancia
current.movingTime{ value: number | null; unit: "s" }Tiempo en movimiento
current.timestamp{ value: number | null; unit: "ms" }Hora de captura
current.elapsed{ value: number | null; unit: "s" }Tiempo de grabación
current.recordingbooleanGrabando
current.coolant{ value: number | string | null; unit: string | null } | nullDatos OBD
current.limitnumberNúmero
current.labelstringTexto
current.showUnitbooleanInterruptor
current.stylestringSelección