Cihaz verileri

$data aracılığıyla mevcut sürüş verilerini ve geçmiş örnekleri okuyun ve sonuçları metin, grafik ve eğriler için kullanın. Bu makalede veri yapılandırması, okuma yapısı, OBD parametreleri ve güncelleme kuralları açıklanmaktadır.

Veri arayüzü

Enstrüman $data aracılığıyla tanımlanmış bir girişi kullanır. $data.current mevcut girişi sağlar ve $data.history mevcut yolculuğun son 30 saniyesinin örnekleme sırasını sağlar. Alan adı cihazın giriş tanımlayıcısından gelir; örneğin, temel hız girişini speed olarak adlandırın, $data.current.speed yoluyla okuyun; OBD girişini coolant olarak adlandırın, $data.current.coolant üzerinden okuyun.

Hız, mesafe, zaman ve OBD için eşdeğer değerler arasında value ve unit bulunur. Örneğin { value: 42.3, unit: 'km/h' } sayısal değerleri ve birimleri içerir; konum ve G değeri gibi alanlar ilgili bileşenlerini sağlar. Sayısal değerler, metin, anahtarlar ve seçim öğeleri, value katmanını sarmalamadan doğrudan sayıları, dizeleri veya Boolean değerlerini döndürür. Kuralların tamamı için $data API'sine bakın.

Girişi ve yerel bağlamayı tanımlayın

Gösterge ayarları → Giriş bağlantıları'yi açmak için düzenleyicinin üst kısmındaki enstrüman adına tıklayın. Girişin adını, tanımlayıcısını ve türünü tanımlamak için Parametre yapılandırması'e geçin; giriş bağlamayı döndürün ve yerel değerleri girin veya OBD girişi için kendi araç parametrelerinizi seçin. Temel veriler uygulama tarafından otomatik olarak sağlanır.

tip Yapılandırma ve betiğin ne okuduğu
Sayı Varsayılan değeri ve isteğe bağlı üst ve alt limitleri ayarlayın; komut dosyası sayıyı doğrudan okur; örneğin $data.current.limit.
Metin Varsayılan metni ayarlayın; komut dosyası dizeyi doğrudan okur; örneğin $data.current.label.
Anahtar Varsayılan anahtar durumunu ayarlayın; komut dosyası, $data.current.showUnit gibi Boolean değerini doğrudan okur.
Seçim İsteğe bağlı metni ve varsayılanları tanımlayın; komut dosyası, $data.current.style gibi seçilen dizeyi okur.
Temel veriler Hız, G değeri, konum veya zaman gibi bir kaynak seçin; okuma yapısı kaynağa bağlıdır.
OBD verileri Beklenen değer türünü tanımlayın ve giriş bağlamada cihaz ve araç parametrelerini seçin; okuma { value, unit } veya null şeklindedir.

Giriş tanımlayıcısı, bir harfle başlayan 1-100 İngilizce harf ve rakamdan oluşur ve aynı enstrümanda tekrarlanamaz; Her enstrümanın maksimum 256 girişi vardır. Ad, arayüz ekranı için kullanılır ve tanımlayıcı, kod için kullanılır. Görünen adın değiştirilmesi erişim yolunu değiştirmez ancak tanımlayıcının değiştirilmesi, kodun da aynı anda değiştirilmesini gerektirir.

Örneğin, soğutucu sıcaklığını temsil etmek için coolant kullanıldıktan ve farklı cihazların karşılık gelen parametreleri bağlandıktan sonra kod hala $data.current.coolant şeklinde okunur. Düzenleyici, giriş tanımına dayalı olarak ifade ve tür ipuçları sağlar. Sayısal varsayılan değer, üst ve alt sınırlar dahilinde kalmalı ve seçim öğelerinde yinelenmeyen, boş olmayan seçenekler ve geçerli varsayılan öğeler bulunmalıdır; Hata istemlerini kaydederken öncelikle ilgili alanları düzeltin.

mevcut okuma

Yeni cihaz halihazırda speed tanımlayıcısına ve Hız kaynağına sahip temel veri girişini içermektedir; mevcut çalışmalar bu tanımı Parametre yapılandırması'de kontrol edebilir. main() içinde $data.current.speed elde edin ve bu hızın değerini ve birimini kullanabilirsiniz. Aşağıdaki örnekte üstte yuvarlatılmış değer ve altta birim gösterilmektedir; hız mevcut olmadığında — görüntülenir.

Doğru yapılandırılmış temel hız girişleri her zaman nesneyi korur, value eksik olduğunda null olur ve unit kurulumdan km/h veya mph olarak kalır. == null Değerin eksik olup olmadığını kontrol edin. Hız sıfır olduğunda hala 0 görüntüleniyor. Alan adı giriş tanımlayıcısına göre belirlenir; vehicleSpeed olarak değiştirilirse kodun da $data.current.vehicleSpeed olarak değiştirilmesi gerekir.

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 parametresi

Öncelikle OBD cihazını bağlayın ve hedef parametrelerin geçerli okumalar ürettiğini doğrulayın. Parametre yapılandırması'ye gidin ve OBD verileri girişini ekleyin, ör. adı "Soğutma Suyu Sıcaklığı", tanımlayıcı coolant, beklenen tip Sayısal'ı seçin. Giriş bağlantıları'e dönün ve bunun için Cihazlar altında soğutma suyu sıcaklığı parametresini seçin. Aşağıdaki örnek, araç parametresi UUID'yi komut dosyası alanı adı olarak kullanmadan $data.current.coolant aracılığıyla okur.

Bağlı ve yapılandırılmış okumalar her zaman value ve unit içerir. Cihaz bağlanmadığında, okumanın süresi dolduğunda veya sorgu başarısız olduğunda, value null olur ve unit hala seçilen cihaz tarafından kaydedilen parametre konfigürasyonunu alır; Birimsiz parametreler unit: null kullanır. Bağlı olmadığında veya cihaz ve parametre konfigürasyonu artık mevcut olmadığında girişin tamamı null olur.

value bir sayı veya metin eşlemeli bir dize olabilir. Beklenen tür istemleri düzenlemek için kullanılır; bir bağlama, farklı türler döndüren bağımsız değişkenler isteyebilir, ancak yine de bağlanabilir olacak ve sonuç olarak gerçek değer aktarılmayacaktır. Sayı biçimlendirmesinden önce türün kontrol edilmesi gerekir. Bağdaştırıcıyı değiştirdikten veya başkalarının çalışmalarını içe aktardıktan sonra, orijinal kodu korumak için ilgili girişi yeniden bağlayın.

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

Güncellemeler ve geçmiş örnekleme

Özel ölçüm cihazlarının tek tip sabit bir yenileme hızı yoktur. Geçerli giriş, giriş tanımı veya görüntüleme ortamı değiştiğinde, CapDrive betiği yeniden çalıştırır ve main(); aynı girişler atlanır. Komut dosyası seri olarak yürütülür ve işlem sırasında yalnızca bekleyen en son giriş korunur. Animasyon, çizim tarafı tarafından bağımsız olarak, komut dosyalarını kare kare çalıştırmadan ve sensörün veya OBD'nin örnekleme frekansını artırmadan gerçekleştirilir.

Uygulama, mevcut yolculuğun son 30 saniyesine ait toplanan verileri, örnekleyerek ve 5 Hz'de 151 öğeye kadar saklayarak eşit şekilde tutar. Mevcut pencereyi okumak için cihazı açın; Pencereyi kaybetmeden çizimi duraklatın veya çalışan örneği yeniden oluşturun ve yolculuk sona erdiğinde pencereyi sıfırlayın, gezileri veya çalışma modlarını değiştirin. Geçmiş büyüme veya süre sonu temizliği, betiği ayrı olarak tetiklemez; Eğrinin zaman içinde ilerlemesini istediğinizde, elapsed tanımlayıcısıyla ve kaynağın kaydedilen süre olduğu temel bir giriş tanımlayabilirsiniz.

speed ve elapsed girişi tanımlandıktan sonra, her geçmiş örneğin elapsed.value'si apsis olarak ve speed.value ordinat olarak kullanılabilir; zaman damgası milisaniyeyi, kaydedilen süre ise saniyeleri kullanır. Geçmişi sonraki OBD değerleriyle doldurmadan test aralıklarını kaçırmaya devam edin. Önizlemeler simüle edilmiş girdileri kullanır ve kontrol panelleri gerçek verileri kullanır.

veri geçerliliği

null şu anda mevcut okuma olmadığı anlamına gelir ve 0 geçerli bir değerdir. Bu iki durumu koruyarak cihaz, park etme, bağlantı kesintisi veya geçici test yokluğunu gerçek anlamda görüntüleyebilir. Tüm eksik ölçümlerin value || 0 aracılığıyla sıfır olarak görüntülenmesini önlemek amacıyla değerleri işlemek için value == null ? '—' : value öğesini kullanabilirsiniz.

Metin eşlemeleri boş bir dize üretebilir veya parametre yapılandırmasına bağlı olarak bir sayı veya eşleşme yoksa null döndürebilir. Değişmez değerleri kabul eden View dizeleri görüntüleyebilir; Hesaplamalarda yer alan değerler ve sayı biçimlendirmesi öncelikle türünü kontrol etmelidir.

Eksik testleri giderirken, alana karşılık gelen veri kaynağına göre kontrol edin: konumlandırma durumunu görüntülemek için temel hız; Geçerli cihazı, test okuma sonuçlarını ve parametre yapılandırmasını görüntülemek için OBD parametresi. Veri kaynağı normale döndükten sonra cihaz tarafından seçilen alanları ve kod ifadelerini kontrol edin.

Devam edin