$data · Данные о вождении
$data предоставляет данные в соответствии с входным идентификатором этого прибора: current — текущий вход, а history — входные выборки за последние 30 секунд текущей поездки.
читаемые данные
Щелкните имя инструмента в верхней части редактора, чтобы открыть Настройки прибора → Привязки входных данных. Перейдите в Настройка параметров для определения имени, идентификатора и типа ввода; верните привязку ввода и заполните собственные значения или выберите собственные параметры автомобиля для ввода OBD. Основные данные предоставляются приложением автоматически.
Скрипт получает доступ к вводу через $data.current.<identifier>. Например, вход базовой скорости speed использует $data.current.speed, а вход OBD coolant использует $data.current.coolant. Имя поля не зависит от UUID параметра автомобиля и имени устройства. Изменение параметров автомобиля требует только перепривязки; изменение входного идентификатора требует изменения кода.
| тип | Конфигурация и что читает скрипт |
|---|---|
| Число | Установите значение по умолчанию и дополнительные верхние и нижние пределы; сценарий считывает номер напрямую, например $data.current.limit. |
| Текст | Установить текст по умолчанию; сценарий читает строку напрямую, например $data.current.label. |
| Переключатель | Установите состояние переключателя по умолчанию; сценарий напрямую считывает логическое значение, например $data.current.showUnit. |
| Выбор | Определите дополнительный текст и значения по умолчанию; сценарий читает выбранную строку, например $data.current.style. |
| Основные данные | Выберите источник, например скорость, значение G, положение или время; структура считывания зависит от источника. |
| Данные OBD | Определите тип ожидаемого значения и выберите параметры устройства и автомобиля во входной привязке; значение { value, unit } или null. |
В приведенной ниже таблице полей используются примеры идентификаторов, что не означает, что эти поля автоматически имеются у каждого счетчика. Фактические подсказки интерфейса и типа генерируются на основе определения входа текущего инструмента.
Структура показаний и отсутствующие значения
Базовое значение величины и чтение OBD обычно равны { value, unit }; основные данные, такие как положение, значение G, положение и т. д., имеют свои собственные компоненты, а статус записи представляет собой логическое значение. Значения, текст, переключатели и выборки напрямую возвращают свои настроенные значения.
Если OBD не привязан или конфигурация не существует, весь входной файл — null; когда привязка существует, но временно отсутствует, { value: null, unit } сохраняется. Используйте reading?.value == null для проверки отсутствия тестов, сохраняя действительный 0. value из OBD может быть литералом сопоставления; объявление типа не выполняет преобразование во время выполнения, и тип следует проверить перед вызовом числовых методов.
Окно истории и единица измерения времени
$data.history — это выбранные данные Текущая поездка длилась 30 секунд., упорядоченные от самых старых к самым новым. Хост сохраняет все собранные данные в унифицированном виде, а затем компилирует их по мере необходимости согласно входным параметрам прибора; существующее окно можно прочитать, открыв прибор. Приостановка рисования, пропуск рендеринга или воссоздание работающего экземпляра не приводит к потере окна. Сброс при завершении или переключении отключений или переключении режимов работы; окно истории пусто, если нет активной поездки.
История дискретизируется с частотой максимум 5 Гц, соседние выборки разделены минимум 200 мс, сохраняется максимум 151 элемент. Повторные выборки и перерисовки, вызванные только изменениями в среде отображения, не приводят к увеличению выборок; после остановки передачи данных хост по-прежнему будет удалять просроченные образцы за монотонное время без выполнения сценария. Этот верхний предел не ограничивает current чтение этих последних входных данных и не инициирует дополнительные запросы OBD.
Каждый образец имеет структуру полей, соответствующую current, и может содержать отсутствующие тесты. Изменение определений ввода или привязок приводит к повторной сборке окна; фиксированные параметры, такие как значения, переключатели, текст и параметры, используют текущую конфигурацию. Обновление данных сравнивает только фактическое содержимое $data.current, чтобы решить, следует ли выполнять JS. В сравнении участвуют значения, единицы измерения и подполя групп; новые ответы с тем же значением, историческим ростом или отсечением, внутренним временем сбора и невыбранными обновлениями источника не будут запускать выполнение отдельно. Хост продолжает поддерживать полное окно, и при следующем изменении current сценарий получит самую последнюю историю. Явно выбранные временные метки или записанная длительность принадлежат current, и изменения значений все равно будут запускать выполнение. OBD Показание сохраняет значение, единицу измерения и статус отсутствующего измерения на момент отбора проб и не будет заполняться последующими показаниями; базовая скорость будет преобразована в соответствии с текущими единицами отображения. elapsed.value — количество секунд, прошедших во время текущей поездки, timestamp.value — временная метка в миллисекундах, а movingTime.value — время в пути в секундах. Используйте фактическое время при построении временных кривых и сохраняйте точки останова, вызванные отсутствием измерений.
Пример: одновременное отображение скорости и параметров OBD.
Определите два входа: вход базовой скорости с идентификатором speed и вход OBD с идентификатором coolant. Привяжите к последнему родные параметры автомобиля. В следующем примере показания и единицы измерения отображаются по соответствующим входным идентификаторам; при перепривязке устройства никаких изменений в примере кода не требуется.
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>
);
}
Обновления и источники данных
При каждом выполнении сценария используются последние входные данные; фактическая частота определяется источником данных, изменениями входных данных и временем обработки. current и history возвращают копии данных, их изменение не приведет к изменению показаний датчиков или конфигурации автомобиля.
К таким полям, как базовая скорость, будут применены действительные настройки замены данных о поездке. Чтение параметра OBD напрямую использует собственное показание и единицу измерения параметра. Интервалы запросов, ответы транспортных средств и другие запросы будут влиять на фактическое обновление. На доступность данных также влияют расположение, статус распознавания и возможность подключения устройства; предварительный просмотр редактора использует отдельные имитированные входные данные.
Поле
current{ [identifier: string]: number | string | boolean | object | null }Последние выбранные данные
history{ [identifier: string]: number | string | boolean | object | null }[]Выбранные данные за последние 30 секунд, от старых к новым
current.speed{ value: number | null; unit: "km/h" | "mph" }Скорость
current.gForce{ longitudinal: number | null; lateral: number | null; combined: number | null; unit: string }Перегрузка
current.heading{ direction: number | null; accuracy: number | null; unit: string }Курс
current.location{ latitude: number | null; longitude: number | null; unit: string }Геопозиция
current.vehicleAttitude{ roll: number | null; pitch: number | null; unit: string }Положение автомобиля
current.locationAccuracy{ value: number | null; unit: "m" }Точность местоположения
current.altitude{ value: number | null; unit: "m" }Высота
current.distance{ value: number | null; unit: "m" }Расстояние
current.movingTime{ value: number | null; unit: "s" }Время в движении
current.timestamp{ value: number | null; unit: "ms" }Время измерения
current.elapsed{ value: number | null; unit: "s" }Длительность записи
current.recordingbooleanИдёт запись
current.coolant{ value: number | string | null; unit: string | null } | nullДанные OBD
current.limitnumberЧисло
current.labelstringТекст
current.showUnitbooleanПереключатель
current.stylestringВыбор