ข้อมูลเครื่องมือ

อ่านข้อมูลการขับขี่ปัจจุบันและตัวอย่างประวัติผ่าน $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 ดู $data API สำหรับกฎที่สมบูรณ์

กำหนดอินพุตและการผูกเนทิฟ

คลิกชื่อเครื่องดนตรีที่ด้านบนของโปรแกรมแก้ไขเพื่อเปิด การตั้งค่ามาตรวัด → การผูกอินพุต เข้าสู่ การกำหนดค่าพารามิเตอร์ เพื่อกำหนดชื่อ ตัวระบุ และประเภทของอินพุต ส่งคืนการเชื่อมโยงอินพุตและกรอกค่าดั้งเดิมหรือเลือกพารามิเตอร์ยานพาหนะของคุณเองสำหรับอินพุต 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 Hz เปิดเครื่องมือเพื่ออ่านหน้าต่างที่มีอยู่ หยุดการวาดชั่วคราวหรือสร้างอินสแตนซ์ที่กำลังทำงานอยู่ใหม่โดยไม่สูญเสียหน้าต่าง และรีเซ็ตเมื่อการเดินทางสิ้นสุดลง สลับการเดินทางหรือโหมดการทำงาน การล้างข้อมูลการเติบโตหรือการหมดอายุในอดีตจะไม่ทริกเกอร์สคริปต์แยกกัน เมื่อคุณต้องการให้เส้นโค้งก้าวหน้าเมื่อเวลาผ่านไป คุณสามารถกำหนดอินพุตพื้นฐานด้วยตัวระบุ elapsed และแหล่งที่มาคือระยะเวลาที่บันทึกไว้

หลังจากกำหนดอินพุต speed และ elapsed แล้ว elapsed.value ของแต่ละตัวอย่างเชิงประวัติจะสามารถใช้เป็น abscissa และ speed.value เป็นตัวกำหนด; การประทับเวลาใช้มิลลิวินาทีและระยะเวลาที่บันทึกใช้วินาที เก็บช่วงการทดสอบที่ขาดหายไปโดยไม่ต้องเติมประวัติด้วยค่า OBD ที่ตามมา การแสดงตัวอย่างใช้อินพุตจำลองและแดชบอร์ดใช้ข้อมูลจริง

ความถูกต้องของข้อมูล

null หมายความว่าขณะนี้ไม่มีค่าที่อ่านได้ และ 0 เป็นค่าที่ถูกต้อง ด้วยการคงสถานะทั้งสองนี้ไว้ เครื่องมือนี้สามารถแสดงการจอดรถ การหยุดชะงักของการเชื่อมต่อ หรือการขาดการทดสอบชั่วคราวได้อย่างแท้จริง คุณสามารถใช้ value == null ? '—' : value เพื่อจัดการค่าเพื่อหลีกเลี่ยงการแสดงการวัดที่หายไปทั้งหมดเป็นศูนย์ผ่าน value || 0

การแมปข้อความอาจสร้างสตริงว่าง หรืออาจส่งคืนตัวเลขหรือ null หากไม่มีค่าที่ตรงกัน ขึ้นอยู่กับการกำหนดค่าพารามิเตอร์ View ที่ยอมรับตัวอักษรสามารถแสดงสตริงได้ ค่าที่เกี่ยวข้องกับการคำนวณและการจัดรูปแบบตัวเลขควรตรวจสอบประเภทก่อน

เมื่อแก้ไขปัญหาค่าที่อ่านไม่ได้ ให้ตรวจสอบตามแหล่งข้อมูลที่สอดคล้องกับฟิลด์: ความเร็วพื้นฐานเพื่อดูสถานะตำแหน่ง พารามิเตอร์ OBD เพื่อดูอุปกรณ์ปัจจุบัน ทดสอบผลการอ่าน และการกำหนดค่าพารามิเตอร์ หลังจากที่แหล่งข้อมูลเป็นปกติแล้ว ให้ตรวจสอบฟิลด์และนิพจน์โค้ดที่เลือกโดยเครื่องมือ

อ่านต่อ