ข้อมูลเครื่องมือ
อ่านข้อมูลการขับขี่ปัจจุบันและตัวอย่างประวัติผ่าน $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 เพื่อดูอุปกรณ์ปัจจุบัน ทดสอบผลการอ่าน และการกำหนดค่าพารามิเตอร์ หลังจากที่แหล่งข้อมูลเป็นปกติแล้ว ให้ตรวจสอบฟิลด์และนิพจน์โค้ดที่เลือกโดยเครื่องมือ