$data · Data mengemudi

$data menyediakan data sesuai dengan pengidentifikasi masukan instrumen ini: current adalah masukan saat ini, dan history adalah sampel masukan 30 detik terakhir perjalanan saat ini.

data yang dapat dibaca

Klik nama instrumen di bagian atas editor untuk membuka Pengaturan instrumen → Pengikatan masukan. Masukkan Konfigurasi parameter untuk menentukan nama, pengidentifikasi, dan jenis input; kembalikan pengikatan masukan dan isi nilai asli, atau pilih parameter kendaraan Anda sendiri untuk masukan OBD. Data dasar disediakan secara otomatis oleh aplikasi.

Skrip mengakses input melalui $data.current.<identifier>. Misalnya, masukan kecepatan dasar speed menggunakan $data.current.speed, dan masukan OBD coolant menggunakan $data.current.coolant. Nama bidang tidak bergantung pada UUID parameter kendaraan dan nama perangkat. Mengubah parameter kendaraan hanya memerlukan rebinding; memodifikasi pengidentifikasi input memerlukan modifikasi kode.

jenis Konfigurasi dan apa yang dibaca skrip
Angka Tetapkan nilai default dan batas atas dan bawah opsional; skrip membaca nomor secara langsung, seperti $data.current.limit.
Teks Atur teks default; skrip membaca string secara langsung, seperti $data.current.label.
Sakelar Atur status sakelar default; skrip membaca nilai Boolean secara langsung, seperti $data.current.showUnit.
Pilihan Tentukan teks opsional dan default; skrip membaca string yang dipilih, seperti $data.current.style.
Data dasar Pilih sumber seperti kecepatan, nilai G, posisi, atau waktu; struktur pembacaan tergantung pada sumbernya.
Data OBD Tentukan jenis nilai yang diharapkan dan pilih parameter perangkat dan kendaraan di pengikatan input; pembacaannya adalah { value, unit } atau null.

Tabel bidang di bawah ini menggunakan contoh pengidentifikasi dan tidak berarti bahwa setiap meter secara otomatis memiliki bidang ini. Antarmuka aktual dan petunjuk tipe dihasilkan berdasarkan definisi input instrumen saat ini.

Struktur pembacaan dan nilai yang hilang

Nilai kuantitas dasar dan pembacaan OBD biasanya { value, unit }; data dasar seperti posisi, nilai G, sikap, dll memiliki komponennya masing-masing, dan status pencatatannya adalah nilai Boolean. Nilai, teks, sakelar, dan pilihan mengembalikan nilai yang dikonfigurasi secara langsung.

Ketika OBD tidak terikat atau konfigurasi tidak ada, seluruh inputnya adalah null; ketika pengikatan ada tetapi untuk sementara hilang, { value: null, unit } dipertahankan. Gunakan reading?.value == null untuk memeriksa tes yang hilang, dengan tetap mempertahankan 0 yang valid. value dari OBD mungkin merupakan pemetaan literal; deklarasi tipe tidak melakukan konversi runtime, dan tipe harus diperiksa sebelum memanggil metode numerik.

Jendela riwayat dan satuan waktu

$data.history adalah data terpilih dari Perjalanan saat ini berlangsung 30 detik, diurutkan dari terlama hingga terbaru. Tuan rumah menyimpan semua data yang dikumpulkan secara terpadu, dan kemudian merakitnya sesuai kebutuhan sesuai dengan parameter masukan instrumen; jendela yang ada dapat dibaca dengan membuka instrumen. Menjeda gambar, melewatkan rendering, atau membuat ulang instance yang sedang berjalan tidak akan menghilangkan jendela. Reset saat mengakhiri atau mengganti perjalanan atau mengganti mode pengoperasian; jendela riwayat kosong bila tidak ada perjalanan aktif.

Riwayat diambil sampelnya pada maksimum 5 Hz, dengan sampel yang berdekatan dipisahkan setidaknya 200 ms, dan maksimum 151 item dipertahankan. Waktu pengambilan sampel berulang dan penggambaran ulang yang hanya disebabkan oleh perubahan lingkungan tampilan tidak akan menambah sampel; setelah data berhenti, host akan tetap menghapus sampel yang kedaluwarsa dalam waktu yang monoton, tanpa eksekusi skrip. Batas atas ini tidak membatasi current membaca masukan terbaru ini, juga tidak memulai kueri OBD tambahan.

Setiap sampel memiliki struktur bidang yang konsisten dengan current dan mungkin berisi pengujian yang hilang. Memodifikasi definisi masukan atau pengikatan akan menyusun kembali jendela; parameter tetap seperti nilai, sakelar, teks, dan opsi menggunakan konfigurasi saat ini. Pembaruan data hanya membandingkan konten sebenarnya dari $data.current untuk memutuskan apakah akan mengeksekusi JS. Nilai, unit, dan subbidang grup semuanya terlibat dalam perbandingan; respons baru dengan nilai yang sama, riwayat pertumbuhan atau kliping, waktu pengumpulan internal, dan pembaruan sumber yang tidak dipilih tidak akan memicu eksekusi secara terpisah. Tuan rumah terus mempertahankan jendela lengkap, dan saat berikutnya current berubah, skrip mendapatkan riwayat terbaru. Stempel waktu yang dipilih secara eksplisit atau durasi yang direkam adalah milik current, dan perubahan nilai akan tetap memicu eksekusi. OBD Pembacaan mempertahankan nilai, satuan, dan status pengukuran yang hilang pada saat pengambilan sampel, dan tidak akan diisi ulang dengan pembacaan berikutnya; kecepatan dasar akan dikonversi sesuai dengan unit tampilan saat ini. elapsed.value adalah jumlah detik yang berlalu selama perjalanan saat ini, timestamp.value adalah stempel waktu milidetik, dan movingTime.value adalah waktu perjalanan dalam hitungan detik. Gunakan waktu sebenarnya saat menggambar kurva waktu, dan pertahankan titik henti sementara yang disebabkan oleh pengukuran yang hilang.

Contoh: Menampilkan parameter kecepatan dan OBD secara bersamaan

Tentukan dua masukan: masukan kecepatan dasar dengan pengidentifikasi speed, dan masukan OBD dengan pengidentifikasi coolant. Ikat parameter kendaraan asli ke yang terakhir. Contoh berikut menampilkan pembacaan dan satuan berdasarkan pengidentifikasi masukannya masing-masing; tidak diperlukan modifikasi pada kode contoh saat melakukan rebinding perangkat.

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

Pembaruan dan sumber data

Setiap eksekusi skrip menggunakan masukan terbaru; frekuensi sebenarnya ditentukan oleh sumber data, perubahan input, dan waktu pemrosesan. current dan history mengembalikan salinan data, memodifikasinya tidak akan mengubah pembacaan sensor atau konfigurasi kendaraan.

Bidang seperti kecepatan dasar akan menerapkan pengaturan penggantian data perjalanan yang valid. Membaca parameter OBD secara langsung menggunakan pembacaan dan satuan parameter itu sendiri. Interval kueri, respons kendaraan, dan permintaan lainnya akan memengaruhi pembaruan sebenarnya. Ketersediaan data juga dipengaruhi oleh penentuan posisi, status pengenalan, dan konektivitas perangkat; pratinjau editor menggunakan input simulasi terpisah.

Bidang

current{ [identifier: string]: number | string | boolean | object | null }

Data terpilih terbaru

history{ [identifier: string]: number | string | boolean | object | null }[]

Data yang dipilih dari 30 detik terakhir, terlama lebih dulu

current.speed{ value: number | null; unit: "km/h" | "mph" }

Kecepatan

current.gForce{ longitudinal: number | null; lateral: number | null; combined: number | null; unit: string }

Gaya G

current.heading{ direction: number | null; accuracy: number | null; unit: string }

Arah hadap

current.location{ latitude: number | null; longitude: number | null; unit: string }

Lokasi

current.vehicleAttitude{ roll: number | null; pitch: number | null; unit: string }

Sikap kendaraan

current.locationAccuracy{ value: number | null; unit: "m" }

Akurasi lokasi

current.altitude{ value: number | null; unit: "m" }

Ketinggian

current.distance{ value: number | null; unit: "m" }

Jarak

current.movingTime{ value: number | null; unit: "s" }

Waktu bergerak

current.timestamp{ value: number | null; unit: "ms" }

Waktu pengukuran

current.elapsed{ value: number | null; unit: "s" }

Durasi perekaman

current.recordingboolean

Merekam

current.coolant{ value: number | string | null; unit: string | null } | null

Data OBD

current.limitnumber

Angka

current.labelstring

Teks

current.showUnitboolean

Sakelar

current.stylestring

Pilihan