Dữ liệu nhạc cụ
Đọc dữ liệu lái xe hiện tại và các mẫu lịch sử qua $data và sử dụng kết quả cho văn bản, đồ họa và đường cong. Bài viết này giải thích cấu hình dữ liệu, cấu trúc đọc, tham số OBD và quy tắc cập nhật.
Giao diện dữ liệu
Nhạc cụ sử dụng đầu vào được xác định thông qua $data. $data.current cung cấp đầu vào hiện tại và $data.history cung cấp trình tự lấy mẫu trong 30 giây cuối cùng của chuyến đi hiện tại. Tên trường xuất phát từ mã định danh đầu vào của công cụ; ví dụ: đặt tên đầu vào tốc độ cơ bản speed, đọc qua $data.current.speed; đặt tên đầu vào OBD coolant, đọc qua $data.current.coolant.
Các giá trị tương đương về tốc độ, khoảng cách, thời gian và OBD bao gồm value và unit. Ví dụ: { value: 42.3, unit: 'km/h' } chứa các giá trị số và đơn vị; các trường như vị trí và giá trị G cung cấp các thành phần tương ứng của chúng. Các giá trị số, văn bản, công tắc và mục lựa chọn trực tiếp trả về số, chuỗi hoặc giá trị Boolean mà không bao bọc một lớp value. Xem API $data để biết các quy tắc đầy đủ.
Xác định ràng buộc đầu vào và gốc
Nhấp vào tên đồng hồ ở đầu trình chỉnh sửa để mở Cài đặt đồng hồ → Liên kết đầu vào. Chuyển sang Cấu hình tham số để xác định tên, mã nhận dạng và loại đầu vào; trả về ràng buộc đầu vào và điền vào các giá trị gốc hoặc chọn thông số xe của riêng bạn cho đầu vào OBD. Dữ liệu cơ bản được ứng dụng cung cấp tự động.
| kiểu | Cấu hình và nội dung tập lệnh đọc |
|---|---|
| Số | Đặt giá trị mặc định và giới hạn trên và dưới tùy chọn; tập lệnh đọc số trực tiếp, chẳng hạn như $data.current.limit. |
| Văn bản | Đặt văn bản mặc định; tập lệnh đọc chuỗi trực tiếp, chẳng hạn như $data.current.label. |
| Công tắc | Đặt trạng thái chuyển đổi mặc định; tập lệnh đọc trực tiếp giá trị Boolean, chẳng hạn như $data.current.showUnit. |
| Lựa chọn | Xác định văn bản tùy chọn và mặc định; tập lệnh đọc chuỗi đã chọn, chẳng hạn như $data.current.style. |
| Dữ liệu cơ bản | Chọn một nguồn như vận tốc, giá trị G, vị trí hoặc thời gian; cấu trúc đọc phụ thuộc vào nguồn. |
| Dữ liệu OBD | Xác định loại giá trị mong đợi và chọn thông số thiết bị và phương tiện trong liên kết đầu vào; kết quả là { value, unit } hoặc null. |
Mã định danh đầu vào là 1-100 chữ cái và số tiếng Anh, bắt đầu bằng một chữ cái và không thể lặp lại trong cùng một công cụ; mỗi đồng hồ có tối đa 256 đầu vào. Tên được sử dụng để hiển thị giao diện và mã định danh được sử dụng cho mã. Sửa đổi tên hiển thị không thay đổi đường dẫn truy cập, nhưng sửa đổi mã định danh yêu cầu sửa đổi mã đồng thời.
Ví dụ: sau khi sử dụng coolant để biểu thị nhiệt độ chất làm mát và ràng buộc các thông số tương ứng của các thiết bị khác nhau, mã vẫn ghi $data.current.coolant. Trình soạn thảo cung cấp các gợi ý về biểu thức và kiểu dựa trên định nghĩa đầu vào. Giá trị mặc định bằng số phải nằm trong giới hạn trên và dưới và các mục được chọn phải có các tùy chọn không trống không trùng lặp và các mục mặc định hợp lệ; trước tiên hãy sửa các trường tương ứng khi lưu lời nhắc lỗi.
đọc hiện tại
Công cụ mới đã chứa dữ liệu đầu vào cơ bản với mã định danh speed và nguồn Tốc độ; các tác phẩm hiện có có thể kiểm tra định nghĩa này trong Cấu hình tham số. Lấy $data.current.speed trong main() và bạn có thể sử dụng giá trị và đơn vị của tốc độ này. Ví dụ sau đây hiển thị giá trị làm tròn ở trên cùng và đơn vị ở dưới cùng; khi không có tốc độ, — được hiển thị.
Đầu vào vận tốc cơ sở được định cấu hình chính xác luôn giữ lại đối tượng, value là null khi bị thiếu và unit vẫn là km/h hoặc mph trong quá trình thiết lập. == null Kiểm tra xem giá trị có bị thiếu hay không. Khi tốc độ bằng 0, nó vẫn hiển thị 0. Tên trường được xác định bởi mã định danh đầu vào; nếu nó được đổi thành vehicleSpeed thì mã cũng phải được đổi thành $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>
);
}
tham số OBD
Trước tiên, hãy kết nối thiết bị OBD và xác minh rằng các tham số mục tiêu cho kết quả đọc hợp lệ. Đi tới Cấu hình tham số và thêm đầu vào Dữ liệu OBD, ví dụ: tên "Nhiệt độ nước làm mát", mã định danh coolant, loại dự kiến chọn Số. Quay lại Liên kết đầu vào và chọn thông số nhiệt độ nước làm mát trong Thiết bị cho nó. Ví dụ sau đọc qua $data.current.coolant mà không sử dụng tham số phương tiện UUID làm tên trường tập lệnh.
Các lần đọc được giới hạn và định cấu hình luôn chứa value và unit. Khi thiết bị không được kết nối, quá trình đọc hết hạn hoặc truy vấn không thành công, value là null và unit vẫn lấy cấu hình tham số được lưu bởi thiết bị đã chọn; tham số không có đơn vị sử dụng unit: null. Khi nó không bị ràng buộc hoặc cấu hình thiết bị và tham số không còn tồn tại, toàn bộ đầu vào là null.
value có thể là số hoặc chuỗi được ánh xạ văn bản. Loại dự kiến được sử dụng để chỉnh sửa lời nhắc; một liên kết có thể nhắc nhở các đối số trả về các loại khác nhau, nhưng vẫn có thể liên kết được và kết quả là giá trị thực sẽ không được truyền. Loại này phải được kiểm tra trước khi định dạng số. Sau khi thay đổi bộ điều hợp hoặc nhập tác phẩm của người khác, hãy buộc lại đầu vào tương ứng để giữ nguyên mã gốc.
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>
);
}
Cập nhật và lấy mẫu lịch sử
Đồng hồ đo tùy chỉnh không có tốc độ làm mới cố định thống nhất. Khi đầu vào hiện tại, định nghĩa đầu vào hoặc môi trường hiển thị thay đổi, CapDrive sẽ thực thi lại tập lệnh và gọi main(); đầu vào giống hệt nhau được bỏ qua. Tập lệnh được thực thi tuần tự và chỉ dữ liệu đầu vào đang chờ xử lý mới nhất được giữ lại trong quá trình xử lý. Hoạt ảnh được thực hiện độc lập bởi phía vẽ, không chạy tập lệnh theo từng khung hình và không tăng tần số lấy mẫu của cảm biến hoặc OBD.
Ứng dụng duy trì thống nhất dữ liệu đã thu thập trong 30 giây cuối cùng của chuyến đi hiện tại, lấy mẫu và lưu giữ tới 151 mục ở tần số 5 Hz. Mở công cụ để đọc cửa sổ hiện có; tạm dừng vẽ hoặc xây dựng lại phiên bản đang chạy mà không làm mất cửa sổ và đặt lại khi chuyến đi kết thúc, chuyển chuyến đi hoặc chế độ chạy. Việc dọn dẹp lịch sử tăng trưởng hoặc hết hạn sẽ không kích hoạt tập lệnh riêng biệt; khi bạn muốn đường cong tăng dần theo thời gian, bạn có thể xác định đầu vào cơ bản với mã định danh elapsed và nguồn là khoảng thời gian được ghi.
Sau khi xác định đầu vào speed và elapsed, elapsed.value của mỗi mẫu lịch sử có thể được sử dụng làm biểu đồ và speed.value làm tọa độ; dấu thời gian sử dụng mili giây và thời lượng được ghi sử dụng giây. Giữ lại các khoảng thời gian kiểm tra bị thiếu mà không lấp đầy lịch sử bằng các giá trị OBD tiếp theo. Bản xem trước sử dụng đầu vào mô phỏng và trang tổng quan sử dụng dữ liệu thực.
tính hợp lệ của dữ liệu
null có nghĩa là hiện tại không có số liệu đọc nào và 0 là giá trị hợp lệ. Bằng cách giữ lại hai trạng thái này, thiết bị có thể thực sự hiển thị trạng thái đỗ xe, gián đoạn kết nối hoặc tạm thời không kiểm tra. Bạn có thể sử dụng value == null ? '—' : value để xử lý các giá trị nhằm tránh hiển thị tất cả số đo bị thiếu bằng 0 thông qua value || 0.
Ánh xạ văn bản có thể tạo ra một chuỗi trống hoặc có thể trả về một số hoặc null nếu không khớp, tùy thuộc vào cấu hình tham số. View chấp nhận chữ có thể hiển thị chuỗi; các giá trị liên quan đến tính toán và định dạng số trước tiên phải kiểm tra loại.
Khi khắc phục sự cố thiếu kiểm tra, hãy kiểm tra theo nguồn dữ liệu tương ứng với trường: tốc độ cơ bản để xem trạng thái định vị; OBD tham số để xem thiết bị hiện tại, kết quả đọc kiểm tra và cấu hình tham số. Sau khi nguồn dữ liệu bình thường, hãy kiểm tra các trường và biểu thức mã được công cụ chọn.