Данные прибора
Считайте текущие данные о вождении и исторические образцы через $data и используйте результаты для текста, графики и кривых. В этой статье объясняется конфигурация данных, структура чтения, параметры OBD и правила обновления.
Интерфейс данных
Прибор использует определенный вход через $data. $data.current предоставляет текущий вход, а $data.history обеспечивает последовательность выборки последних 30 секунд текущей поездки. Имя поля берется из входного идентификатора прибора; например, назовите вход базовой скорости speed, прочитайте $data.current.speed; назовите вход OBD coolant, прочитайте $data.current.coolant.
Эквивалентные значения скорости, расстояния, времени и OBD включают value и unit. Например, { value: 42.3, unit: 'km/h' } содержит числовые значения и единицы измерения; такие поля, как положение и значение G, содержат соответствующие компоненты. Числовые значения, текст, переключатели и элементы выбора напрямую возвращают числа, строки или логические значения без переноса слоя value. Полные правила см. в API $data.
Определить входные данные и собственную привязку
Щелкните имя инструмента в верхней части редактора, чтобы открыть Настройки прибора → Привязки входных данных. Перейдите в Настройка параметров для определения имени, идентификатора и типа ввода; верните привязку ввода и заполните собственные значения или выберите собственные параметры автомобиля для ввода OBD. Основные данные предоставляются приложением автоматически.
| тип | Конфигурация и что читает скрипт |
|---|---|
| Число | Установите значение по умолчанию и дополнительные верхние и нижние пределы; сценарий считывает номер напрямую, например $data.current.limit. |
| Текст | Установить текст по умолчанию; сценарий читает строку напрямую, например $data.current.label. |
| Переключатель | Установите состояние переключателя по умолчанию; сценарий напрямую считывает логическое значение, например $data.current.showUnit. |
| Выбор | Определите дополнительный текст и значения по умолчанию; сценарий читает выбранную строку, например $data.current.style. |
| Основные данные | Выберите источник, например скорость, значение G, положение или время; структура считывания зависит от источника. |
| Данные OBD | Определите тип ожидаемого значения и выберите параметры устройства и автомобиля во входной привязке; значение { value, unit } или null. |
Идентификатор входа — от 1 до 100 английских букв и цифр, начинающихся с буквы, и не может повторяться в одном и том же приборе; каждый инструмент имеет максимум 256 входов. Имя используется для отображения интерфейса, а идентификатор — для кода. Изменение отображаемого имени не меняет путь доступа, но изменение идентификатора требует одновременного изменения кода.
Например, после использования coolant для представления температуры охлаждающей жидкости и связывания соответствующих параметров различных устройств код по-прежнему читается как $data.current.coolant. Редактор предоставляет подсказки по выражениям и типам на основе входного определения. Числовое значение по умолчанию должно находиться в пределах верхнего и нижнего пределов, а элементы выбора должны иметь неповторяющиеся непустые параметры и допустимые элементы по умолчанию; сначала исправьте соответствующие поля при сохранении подсказок об ошибках.
текущее чтение
Новый инструмент уже содержит ввод основных данных с идентификатором speed и источником Скорость; существующие работы могут проверить это определение в Настройка параметров. Получите $data.current.speed в main(), и вы сможете использовать значение и единицу этой скорости. В следующем примере показано округленное значение вверху и единица измерения внизу; когда скорость недоступна, отображается —.
Правильно настроенные входы базовой скорости всегда сохраняют объект, value становится null при его отсутствии, а unit остается km/h или mph из настройки. == null Проверьте, отсутствует ли значение. Когда скорость равна нулю, все равно отображается 0. Имя поля определяется входным идентификатором; если он изменен на vehicleSpeed, код также следует изменить на $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>
);
}
OBD параметр
Сначала подключите устройство OBD и убедитесь, что целевые параметры дают действительные показания. Перейдите к Настройка параметров и добавьте вход Данные OBD, например. имя «Температура охлаждающей жидкости», идентификатор coolant, ожидаемый тип выберите числовой. Вернитесь к Привязки входных данных и выберите для него параметр температуры охлаждающей жидкости в разделе «Устройства». Следующий пример читается через $data.current.coolant без использования UUID параметра транспортного средства в качестве имени поля сценария.
Связанные и настроенные операции чтения всегда содержат value и unit. Когда устройство не подключено, срок чтения истекает или запрос завершается неудачей, value становится null, а unit по-прежнему принимает конфигурацию параметров, сохраненную выбранным устройством; безразмерные параметры используют unit: null. Если он не привязан или конфигурация устройства и параметров больше не существует, весь ввод имеет вид null.
value может быть числом или текстовой строкой. Ожидаемый тип используется для приглашений на редактирование; привязка может запрашивать аргументы, которые возвращают разные типы, но все равно будет привязываться, и фактическое значение в результате не будет приведено. Тип следует проверить перед форматированием числа. После смены адаптера или импорта чужих работ перепривяжите соответствующий ввод, чтобы сохранить исходный код.
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>
);
}
Обновления и историческая выборка
Пользовательские счетчики не имеют единой фиксированной частоты обновления. Когда текущий ввод, определение ввода или среда отображения изменяются, CapDrive повторно выполняет сценарий и вызывает main(); идентичные входные данные пропускаются. Сценарий выполняется последовательно, и во время обработки сохраняется только последний ожидающий ввод. Анимация выполняется самостоятельно отрисовочной стороной, без покадрового запуска скриптов и без увеличения частоты дискретизации сенсора или OBD.
Приложение единообразно сохраняет собранные данные за последние 30 секунд текущей поездки, отбирая и сохраняя до 151 элемента с частотой 5 Гц. Откройте прибор, чтобы прочитать существующее окно; приостановить отрисовку или перестроить работающий экземпляр, не теряя окна, и сбросить его, когда поездка закончится, переключить поездки или режимы работы. Очистка исторического роста или истечения срока действия не запускает сценарий отдельно; если вы хотите, чтобы кривая изменялась с течением времени, вы можете определить базовый вход с идентификатором elapsed и источником, являющимся записанной продолжительностью.
После определения входных данных speed и elapsed, elapsed.value каждой исторической выборки можно использовать в качестве оси абсцисс, а speed.value — в качестве ординаты; временная метка использует миллисекунды, а записанная продолжительность — секунды. Сохраняйте пропущенные интервалы тестирования без заполнения истории последующими значениями OBD. В предварительном просмотре используются смоделированные входные данные, а в информационных панелях используются реальные данные.
достоверность данных
null означает, что в настоящее время нет доступных показаний, а 0 является допустимым значением. Сохраняя эти два состояния, прибор может действительно отображать парковку, прерывание соединения или временное отсутствие тестирования. Вы можете использовать value == null ? '—' : value для обработки значений, чтобы избежать отображения всех отсутствующих измерений как нуля через value || 0.
Текстовые сопоставления могут создавать пустую строку или могут возвращать число или null, если совпадений нет, в зависимости от конфигурации параметра. View, который принимает литералы, может отображать строки; значения, участвующие в вычислениях и форматировании чисел, должны сначала проверить тип.
При устранении неполадок при отсутствии тестов проверьте источник данных, соответствующий полю: базовая скорость для просмотра состояния позиционирования; Параметр OBD для просмотра текущего устройства, результатов тестового считывания и конфигурации параметров. После того, как источник данных станет нормальным, проверьте поля и выражения кода, выбранные прибором.