Data instrumen

Baca data mengemudi terkini dan sampel historis melalui $data dan gunakan hasilnya untuk teks, grafik, dan kurva. Artikel ini menjelaskan konfigurasi data, struktur pembacaan, parameter OBD, dan aturan pembaruan.

Antarmuka data

Instrumen menggunakan input yang ditentukan melalui $data. $data.current memberikan masukan saat ini dan $data.history memberikan urutan pengambilan sampel 30 detik terakhir perjalanan saat ini. Nama bidang berasal dari pengidentifikasi masukan instrumen; misalnya, beri nama input kecepatan dasar speed, baca $data.current.speed; beri nama OBD masukan coolant, baca $data.current.coolant.

Nilai ekuivalen untuk kecepatan, jarak, waktu, dan OBD meliputi value dan unit. Misalnya, { value: 42.3, unit: 'km/h' } berisi nilai dan satuan numerik; bidang seperti posisi dan nilai G menyediakan komponennya masing-masing. Nilai numerik, teks, sakelar, dan item pilihan secara langsung mengembalikan angka, string, atau nilai Boolean tanpa membungkus lapisan value. Lihat API $data untuk aturan selengkapnya.

Tentukan input dan pengikatan asli

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.

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.

Pengidentifikasi masukan adalah 1-100 huruf dan angka bahasa Inggris, dimulai dengan huruf, dan tidak dapat diulang dalam instrumen yang sama; setiap instrumen memiliki maksimal 256 input. Nama digunakan untuk tampilan antarmuka dan pengenal digunakan untuk kode. Memodifikasi nama tampilan tidak mengubah jalur akses, namun memodifikasi pengidentifikasi memerlukan modifikasi kode secara bersamaan.

Misalnya, setelah menggunakan coolant untuk mewakili suhu cairan pendingin dan mengikat parameter terkait dari perangkat yang berbeda, kodenya masih terbaca $data.current.coolant. Editor memberikan petunjuk ekspresi dan tipe berdasarkan definisi input. Nilai default numerik harus berada dalam batas atas dan bawah, dan item pilihan harus memiliki opsi non-kosong non-duplikat dan item default yang valid; perbaiki bidang terkait terlebih dahulu saat menyimpan petunjuk kesalahan.

bacaan saat ini

Instrumen baru sudah berisi input data dasar dengan pengenal speed dan sumber Kecepatan; karya yang ada dapat memeriksa definisi ini di Konfigurasi parameter. Dapatkan $data.current.speed di main(), dan Anda dapat menggunakan nilai dan satuan kecepatan ini. Contoh berikut menunjukkan nilai yang dibulatkan di bagian atas dan satuan di bagian bawah; ketika tidak ada kecepatan yang tersedia, — ditampilkan.

Input kecepatan dasar yang dikonfigurasi dengan benar selalu mempertahankan objek, value adalah null jika hilang, dan unit tetap km/h atau mph dari pengaturan. == null Periksa apakah nilainya hilang. Ketika kecepatannya nol, ia masih menampilkan 0. Nama bidang ditentukan oleh pengidentifikasi masukan; jika diubah menjadi vehicleSpeed, kodenya juga harus diubah menjadi $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>
  );
}

parameter OBD

Pertama-tama sambungkan perangkat OBD dan verifikasi bahwa parameter target menghasilkan pembacaan yang valid. Buka Konfigurasi parameter dan tambahkan input Data OBD, mis. nama "Suhu Pendingin", pengenal coolant, tipe yang diharapkan pilih Numerik. Kembali ke Pengikatan masukan dan pilih parameter suhu cairan pendingin di bawah Perangkat untuk itu. Contoh berikut dibaca melalui $data.current.coolant tanpa menggunakan parameter kendaraan UUID sebagai nama kolom skrip.

Bacaan yang terikat dan dikonfigurasi selalu berisi value dan unit. Ketika perangkat tidak terhubung, pembacaan berakhir, atau kueri gagal, value adalah null, dan unit masih menggunakan konfigurasi parameter yang disimpan oleh perangkat yang dipilih; parameter tanpa unit menggunakan unit: null. Jika tidak terikat atau konfigurasi perangkat dan parameter tidak ada lagi, seluruh inputnya adalah null.

value dapat berupa angka atau string yang dipetakan teks. Tipe yang diharapkan digunakan untuk mengedit perintah; pengikatan mungkin meminta argumen yang mengembalikan tipe berbeda, namun tetap dapat diikat, dan sebagai hasilnya, nilai sebenarnya tidak akan diberikan. Jenisnya harus diperiksa sebelum memformat angka. Setelah mengganti adaptor atau mengimpor karya orang lain, rebind input yang sesuai untuk mempertahankan kode aslinya.

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

Pembaruan dan pengambilan sampel historis

Pengukur khusus tidak memiliki kecepatan penyegaran yang tetap dan seragam. Ketika masukan saat ini, definisi masukan, atau lingkungan tampilan berubah, CapDrive mengeksekusi ulang skrip dan memanggil main(); input yang identik dilewati. Skrip dijalankan secara serial, dan hanya masukan terakhir yang tertunda yang disimpan selama pemrosesan. Animasi dilakukan secara independen di sisi gambar, tanpa menjalankan skrip frame demi frame, dan tanpa meningkatkan frekuensi sampling sensor atau OBD.

Aplikasi ini secara seragam menyimpan data yang dikumpulkan dari 30 detik terakhir perjalanan saat ini, mengambil sampel dan menyimpan hingga 151 item pada 5 Hz. Buka instrumen untuk membaca jendela yang ada; jeda menggambar atau membangun kembali instance yang sedang berjalan tanpa kehilangan jendela, dan mengatur ulang ketika perjalanan berakhir, mengganti mode perjalanan atau berjalan. Pertumbuhan historis atau pembersihan kedaluwarsa tidak akan memicu skrip secara terpisah; bila Anda ingin kurvanya maju seiring waktu, Anda dapat menentukan input dasar dengan pengidentifikasi elapsed dan sumbernya adalah durasi yang direkam.

Setelah menentukan masukan speed dan elapsed, elapsed.value dari setiap sampel sejarah dapat digunakan sebagai absis dan speed.value sebagai ordinat; stempel waktunya menggunakan milidetik dan durasi yang direkam menggunakan detik. Pertahankan interval pengujian yang hilang tanpa mengisi ulang riwayat dengan nilai OBD berikutnya. Pratinjau menggunakan masukan simulasi dan dasbor menggunakan data nyata.

validitas data

null berarti saat ini tidak ada bacaan yang tersedia dan 0 adalah nilai yang valid. Dengan mempertahankan kedua status ini, instrumen dapat benar-benar menampilkan parkir, gangguan koneksi, atau tidak adanya pengujian untuk sementara. Anda dapat menggunakan value == null ? '—' : value untuk menangani nilai agar tidak menampilkan semua pengukuran yang hilang sebagai nol melalui value || 0.

Pemetaan teks dapat menghasilkan string kosong, atau dapat mengembalikan nomor atau null jika tidak ada kecocokan, bergantung pada konfigurasi parameter. View yang menerima literal dapat menampilkan string; nilai-nilai yang terlibat dalam perhitungan dan pemformatan angka harus terlebih dahulu memeriksa jenisnya.

Saat memecahkan masalah tes yang hilang, periksa menurut sumber data yang sesuai dengan bidang: kecepatan dasar untuk melihat status posisi; Parameter OBD untuk melihat perangkat saat ini, hasil pembacaan tes dan konfigurasi parameter. Setelah sumber data normal, periksa kolom dan ekspresi kode yang dipilih oleh instrumen.

Lanjutkan ke