$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

Выбор