$data · ข้อมูลการขับขี่
$data ให้ข้อมูลตามตัวระบุอินพุตของเครื่องมือนี้: current คืออินพุตปัจจุบัน และ history คือตัวอย่างอินพุตของ 30 วินาทีสุดท้ายของการเดินทางปัจจุบัน
ข้อมูลที่อ่านได้
คลิกชื่อเครื่องดนตรีที่ด้านบนของโปรแกรมแก้ไขเพื่อเปิด การตั้งค่ามาตรวัด → การผูกอินพุต เข้าสู่ การกำหนดค่าพารามิเตอร์ เพื่อกำหนดชื่อ ตัวระบุ และประเภทของอินพุต ส่งคืนการเชื่อมโยงอินพุตและกรอกค่าดั้งเดิมหรือเลือกพารามิเตอร์ยานพาหนะของคุณเองสำหรับอินพุต OBD แอปจะให้ข้อมูลพื้นฐานโดยอัตโนมัติ
สคริปต์เข้าถึงอินพุตผ่าน $data.current.<identifier> ตัวอย่างเช่น อินพุตความเร็วพื้นฐาน speed ใช้ $data.current.speed และอินพุต OBD coolant ใช้ $data.current.coolant ชื่อฟิลด์ไม่ขึ้นอยู่กับ UUID พารามิเตอร์ของยานพาหนะและชื่ออุปกรณ์ การเปลี่ยนพารามิเตอร์ของยานพาหนะจำเป็นต้องมีการเชื่อมโยงใหม่เท่านั้น การแก้ไขตัวระบุอินพุตจำเป็นต้องแก้ไขโค้ด
| พิมพ์ | การกำหนดค่าและสิ่งที่สคริปต์อ่าน |
|---|---|
| ตัวเลข | ตั้งค่าเริ่มต้นและขีดจำกัดบนและล่างที่เป็นตัวเลือก สคริปต์อ่านตัวเลขโดยตรง เช่น $data.current.limit |
| ข้อความ | ตั้งค่าข้อความเริ่มต้น สคริปต์อ่านสตริงโดยตรง เช่น $data.current.label |
| สวิตช์ | ตั้งค่าสถานะสวิตช์เริ่มต้น สคริปต์อ่านค่าบูลีนโดยตรง เช่น $data.current.showUnit |
| ตัวเลือก | กำหนดข้อความเสริมและค่าเริ่มต้น สคริปต์อ่านสตริงที่เลือก เช่น $data.current.style |
| ข้อมูลพื้นฐาน | เลือกแหล่งที่มา เช่น ความเร็ว ค่า G ตำแหน่ง หรือเวลา โครงสร้างการอ่านข้อมูลขึ้นอยู่กับแหล่งที่มา |
| ข้อมูล OBD | กำหนดประเภทค่าที่คาดหวังและเลือกพารามิเตอร์ของอุปกรณ์และยานพาหนะในการรวมอินพุต การอ่านค่าคือ { value, unit } หรือ null |
ตารางช่องด้านล่างใช้ตัวระบุตัวอย่างและไม่ได้หมายความว่าทุกมิเตอร์จะมีช่องเหล่านี้โดยอัตโนมัติ พรอมต์อินเทอร์เฟซและประเภทจริงจะถูกสร้างขึ้นตามคำจำกัดความอินพุตของอุปกรณ์ปัจจุบัน
โครงสร้างค่าที่อ่านได้และค่าที่ขาดหาย
ค่าปริมาณพื้นฐานและการอ่าน OBD โดยปกติจะเป็น { value, unit }; ข้อมูลพื้นฐาน เช่น ตำแหน่ง ค่า G ทัศนคติ ฯลฯ มีส่วนประกอบของตัวเอง และสถานะการบันทึกจะเป็นค่าบูลีน ค่า ข้อความ สวิตช์ และการเลือกจะส่งกลับค่าที่กำหนดค่าไว้โดยตรง
เมื่อ OBD ไม่ได้ผูกไว้หรือไม่มีการกำหนดค่า อินพุตทั้งหมดจะเป็น null; เมื่อการเชื่อมโยงมีอยู่แต่หายไปชั่วคราว { value: null, unit } จะถูกเก็บไว้ ใช้ reading?.value == null เพื่อตรวจสอบการทดสอบที่ขาดหายไป โดยคง 0 ที่ถูกต้องไว้ value จาก OBD อาจเป็นตัวอักษรการแมป การประกาศประเภทไม่ได้ทำการแปลงรันไทม์ และควรตรวจสอบประเภทก่อนที่จะเรียกใช้เมธอดตัวเลข
หน้าต่างประวัติและหน่วยเวลา
$data.history คือข้อมูลที่เลือกของ การเดินทางปัจจุบันใช้เวลา 30 วินาที โดยจัดเรียงจากเก่าที่สุดไปหาใหม่ที่สุด โฮสต์จะบันทึกข้อมูลที่รวบรวมไว้ทั้งหมดในลักษณะที่เป็นหนึ่งเดียว จากนั้นจึงประกอบเข้าด้วยกันตามความจำเป็นตามพารามิเตอร์อินพุตของอุปกรณ์ หน้าต่างที่มีอยู่สามารถอ่านได้โดยการเปิดเครื่องมือ การหยุดการวาดภาพ การข้ามการเรนเดอร์ หรือการสร้างอินสแตนซ์ที่ทำงานอยู่ใหม่ จะไม่ทำให้หน้าต่างหายไป รีเซ็ตเมื่อสิ้นสุดหรือเปลี่ยนการเดินทางหรือเปลี่ยนโหมดการทำงาน หน้าต่างประวัติว่างเปล่าเมื่อไม่มีการเดินทางที่ใช้งานอยู่
ประวัติจะถูกสุ่มตัวอย่างที่ความถี่สูงสุด 5 Hz โดยตัวอย่างที่อยู่ติดกันคั่นด้วยอย่างน้อย 200 มิลลิวินาที และจะคงรายการไว้สูงสุด 151 รายการ เวลาสุ่มตัวอย่างซ้ำและวาดใหม่ที่เกิดจากการเปลี่ยนแปลงสภาพแวดล้อมการแสดงผลเท่านั้นจะไม่เพิ่มตัวอย่าง หลังจากที่ข้อมูลหยุดลง โฮสต์จะยังคงล้างตัวอย่างที่หมดอายุในเวลาที่ซ้ำซากจำเจ โดยไม่ต้องเรียกใช้สคริปต์ ขีดจำกัดบนนี้ไม่ได้จำกัด current จากการอ่านอินพุตล่าสุดนี้ และไม่ได้เริ่มต้นการสืบค้น OBD เพิ่มเติม
แต่ละตัวอย่างมีโครงสร้างฟิลด์ที่สอดคล้องกับ current และอาจมีการทดสอบที่ขาดหายไป การแก้ไขคำจำกัดความอินพุตหรือการผูกจะประกอบหน้าต่างอีกครั้ง พารามิเตอร์คงที่ เช่น ค่า สวิตช์ ข้อความ และตัวเลือกใช้การกำหนดค่าปัจจุบัน การอัปเดตข้อมูลจะเปรียบเทียบเนื้อหาจริงของ $data.current เท่านั้น เพื่อตัดสินใจว่าจะดำเนินการ JS หรือไม่ ค่า หน่วย และฟิลด์ย่อยของกลุ่มทั้งหมดเกี่ยวข้องกับการเปรียบเทียบ การตอบสนองใหม่ที่มีค่าเท่ากัน การเติบโตหรือการตัดในอดีต เวลารวบรวมภายใน และการอัปเดตแหล่งที่มาที่ไม่ได้เลือกจะไม่ทริกเกอร์การดำเนินการแยกกัน โฮสต์ยังคงรักษาหน้าต่างทั้งหมดไว้ และในครั้งถัดไปที่ current เปลี่ยนแปลง สคริปต์จะได้รับประวัติล่าสุด การประทับเวลาที่เลือกอย่างชัดเจนหรือระยะเวลาที่บันทึกไว้เป็นของ current และการเปลี่ยนแปลงค่าจะยังคงทริกเกอร์การดำเนินการ OBD ค่าที่อ่านได้จะคงค่า หน่วย และสถานะการวัดที่ขาดหายไป ณ เวลาที่สุ่มตัวอย่าง และจะไม่ถูกเติมกลับด้วยค่าที่อ่านได้ในภายหลัง ความเร็วพื้นฐานจะถูกแปลงตามหน่วยแสดงผลปัจจุบัน elapsed.value คือจำนวนวินาทีที่ผ่านไประหว่างการเดินทางปัจจุบัน timestamp.value คือการประทับเวลามิลลิวินาที และ movingTime.value คือเวลาการเดินทางในหน่วยวินาที ใช้เวลาจริงเมื่อวาดเส้นโค้งเวลา และรักษาจุดพักที่เกิดจากการวัดที่ขาดหายไป
ตัวอย่าง: แสดงความเร็วและพารามิเตอร์ OBD พร้อมกัน
กำหนดอินพุต 2 ตัว: อินพุตความเร็วพื้นฐานพร้อมตัวระบุ speed และอินพุต OBD พร้อมตัวระบุ coolant ผูกพารามิเตอร์ยานพาหนะดั้งเดิมเข้ากับค่าหลัง ตัวอย่างต่อไปนี้แสดงการอ่านและหน่วยตามตัวระบุอินพุตที่เกี่ยวข้อง ไม่จำเป็นต้องแก้ไขโค้ดตัวอย่างเมื่อทำการผูกอุปกรณ์อีกครั้ง
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>
);
}
การอัปเดตและแหล่งข้อมูล
การเรียกใช้สคริปต์แต่ละครั้งจะใช้อินพุตล่าสุด ความถี่ที่แท้จริงจะถูกกำหนดโดยแหล่งข้อมูล การเปลี่ยนแปลงอินพุต และเวลาประมวลผล current และ history ส่งคืนสำเนาของข้อมูล การแก้ไขจะไม่เปลี่ยนการอ่านเซ็นเซอร์หรือการกำหนดค่าของยานพาหนะ
ช่องต่างๆ เช่น ความเร็วพื้นฐาน จะมีการใช้การตั้งค่าการแทนที่ข้อมูลการเดินทางที่ถูกต้อง การอ่านพารามิเตอร์ OBD จะใช้การอ่านและหน่วยของพารามิเตอร์โดยตรง ระยะเวลาการสืบค้น การตอบกลับของยานพาหนะ และคำขออื่นๆ จะส่งผลต่อการอัปเดตจริง ความพร้อมใช้งานของข้อมูลยังได้รับผลกระทบจากตำแหน่ง สถานะการจดจำ และการเชื่อมต่ออุปกรณ์ การแสดงตัวอย่างตัวแก้ไขใช้อินพุตจำลองแยกต่างหาก
สนาม
current{ [identifier: string]: number | string | boolean | object | null }ข้อมูลที่เลือกล่าสุด
history{ [identifier: string]: number | string | boolean | object | null }[]ข้อมูลที่เลือกในช่วง 30 วินาทีล่าสุด เรียงจากเก่าไปใหม่
current.speed{ value: number | null; unit: "km/h" | "mph" }ความเร็ว
current.gForce{ longitudinal: number | null; lateral: number | null; combined: number | null; unit: string }แรง G
current.heading{ direction: number | null; accuracy: number | null; unit: string }ทิศหัวรถ
current.location{ latitude: number | null; longitude: number | null; unit: string }ตำแหน่ง
current.vehicleAttitude{ roll: number | null; pitch: number | null; unit: string }ท่าทางรถ
current.locationAccuracy{ value: number | null; unit: "m" }ความแม่นยำของตำแหน่ง
current.altitude{ value: number | null; unit: "m" }ระดับความสูง
current.distance{ value: number | null; unit: "m" }ระยะทาง
current.movingTime{ value: number | null; unit: "s" }เวลาขับ
current.timestamp{ value: number | null; unit: "ms" }เวลาที่วัด
current.elapsed{ value: number | null; unit: "s" }ระยะเวลาบันทึก
current.recordingbooleanกำลังบันทึก
current.coolant{ value: number | string | null; unit: string | null } | nullข้อมูล OBD
current.limitnumberตัวเลข
current.labelstringข้อความ
current.showUnitbooleanสวิตช์
current.stylestringตัวเลือก