13.3.1.1. Công cụ dòng lệnh openmv¶
Sau khi cài đặt gói, một tệp thực thi openmv sẽ được thêm vào hệ thống. Tệp này mở một trình xem pygame kết nối với camera qua USB. Khi không có tham số nào ngoài cổng serial, nó sẽ chạy một tập lệnh kiểm tra nhỏ được tích hợp sẵn, truyền phát bộ đệm khung hình kết quả trở lại và hiển thị nó được thu phóng cùng với chú thích tốc độ khung hình hiện tại:
openmv --port /dev/ttyACM0
Đường dẫn cổng phụ thuộc vào nền tảng máy chủ. Trên Linux, /dev/ttyACMx dành cho USB CDC và /dev/ttyUSBx dành cho cầu nối USB-to-UART. Trên macOS, /dev/tty.usbmodem... hoặc /dev/cu.usbmodem.... Trên Windows, COMx.
Trình xem là cách nhanh nhất để xác nhận rằng gói đã được cài đặt, camera có thể truy cập được và giao thức đang hoạt động. Đây cũng là một công cụ demo hữu ích trong quá trình phát triển tập lệnh -- thay thế tập lệnh kiểm tra tích hợp sẵn bằng bất kỳ tệp MicroPython nào bằng --script và xem kết quả mà không cần rời khỏi terminal.
Esc, Ctrl+C trong terminal hoặc đóng cửa sổ trình xem đều thoát sạch.
13.3.1.1.1. Chạy tập lệnh tùy chỉnh¶
--script trỏ CLI đến một tệp nguồn MicroPython trên đĩa. Tệp được tải lên camera, thực thi thay thế cho tập lệnh kiểm tra tích hợp sẵn, và bất kỳ khung hình nào nó tạo ra đều được truyền phát trở lại trình xem:
openmv --port /dev/ttyACM0 --script my_script.py
Bất cứ thứ gì tập lệnh in ra stdout đều được phản chiếu tới terminal máy chủ theo thời gian thực. Truyền --quiet để tắt chức năng đó, hoặc --debug để ghi nhật ký giao thức chi tiết.
13.3.1.1.2. Xem trước kênh tùy chỉnh¶
--channel NAME thăm dò một kênh dữ liệu tùy chỉnh được đăng ký bởi tập lệnh đang chạy trên camera và in mười byte đầu tiên của mỗi lần cập nhật ra terminal:
openmv --port /dev/ttyACM0 --channel ticks
Tập lệnh kiểm tra tích hợp sẵn chạy khi không có --script nào được cung cấp sẽ đăng ký một kênh ticks trả về thời gian hoạt động tính bằng mili giây của camera, vì vậy --channel ticks minh họa giao diện kênh hai chiều mà Kênh tùy chỉnh đề cập chi tiết -- mà không cần viết bất kỳ mã nào trên máy chủ hoặc camera.
13.3.1.1.3. Chế độ benchmark¶
--bench thay thế tập lệnh kiểm tra tiêu chuẩn bằng một benchmark đo thông lượng nén JPEG:
openmv --port /dev/ttyACM0 --bench
Camera chụp một khung hình RGB565 QVGA, nén nó thành JPEG, sau đó xả cùng bộ đệm đã nén trong một vòng lặp chặt chẽ. Trình xem báo cáo tốc độ dữ liệu USB thô thay vì một khung hình được giải mã trực tiếp, vì vậy con số hiển thị trên màn hình là giới hạn trên mà kết nối có thể duy trì đến máy chủ đó. Hữu ích để so sánh các camera hoặc máy chủ mà không có sự biến đổi của việc thay đổi những gì thực sự đang được chụp.
13.3.1.1.4. Lập hồ sơ hiệu suất¶
CLI có thể phủ lớp dữ liệu profiler trực tiếp lên các khung hình được truyền phát. Lớp phủ chỉ hữu ích khi camera đang chạy firmware được biên dịch với PROFILE_ENABLE=1 và có kênh profile được đăng ký; trên firmware gốc, các điều khiển lập hồ sơ không có tác dụng.
--firmware PATH-- tải tệp ELF firmware mà camera đang chạy để lớp phủ có thể phân giải địa chỉ hàm trong các bản ghi hồ sơ thành tên có thể đọc được. Nếu không có nó, lớp phủ hiển thị địa chỉ thô.
Ba phím tắt trong trình xem điều khiển profiler:
Phím |
Hành động |
|---|---|
|
Chuyển đổi lớp phủ profiler: tắt, hiệu suất, sự kiện. |
|
Chuyển đổi chế độ profiler giữa inclusive và exclusive. Tính thời gian inclusive tính thời gian callee vào caller; tính thời gian exclusive thì không. |
|
Đặt lại bộ đếm profiler. |
13.3.1.1.5. Cờ điều chỉnh giao thức¶
Các cờ bên dưới phản chiếu các tham số constructor trên openmv.Camera. Các giá trị mặc định hoạt động trên mọi camera được vận chuyển; chỉ ghi đè chúng khi gỡ lỗi firmware tùy chỉnh hoặc mô phỏng điều kiện kết nối không thuận lợi.
--baudrate N-- mặc định là921600(giá trị đặc biệt chuyển USB sang giao thức OpenMV). Chỉ ghi đè trên các kết nối UART.--timeout SEC-- thời gian chờ cho mỗi thao tác tính bằng giây (mặc định1.0).--max-retry N-- số lần thử lại trước khi kết nối được tuyên bố là bị hỏng (mặc định3).--max-payload N-- kích thước payload tối đa tính bằng byte (mặc định4096). Camera sẽ đàm phán giảm xuống nếu không thể xử lý nhiều như vậy.--crc BOOL-- bật xác thực CRC trên mỗi gói tin (mặc địnhtrue).--seq BOOL-- bật xác thực số thứ tự (mặc địnhtrue).--ack BOOL-- bật xác nhận cho từng gói tin (mặc địnhtrue).--events BOOL-- bật thông báo sự kiện từ camera (mặc địnhtrue).--drop-rate FLOAT-- tỷ lệ mô phỏng mất gói tin trong[0.0, 1.0](mặc định0.0). Chỉ để kiểm thử.
Một tùy chọn điều chỉnh dành riêng cho CLI:
--poll MS-- tốc độ thăm dò cho vòng lặp chính của trình xem, tính bằng mili giây (mặc định4).
13.3.1.1.6. Các cờ khác¶
Hai cờ điều chỉnh cách trình xem hiển thị luồng mà không thay đổi hành vi phía camera:
--scale N-- hệ số thu phóng hiển thị (mặc định4). Hữu ích khi các khung hình QVGA quá nhỏ để đọc trên màn hình 4K.--raw-- yêu cầu camera gửi bộ đệm điểm ảnh không nén thay vì nén JPEG. Hữu ích trên các camera không có hỗ trợ JPEG phần cứng; Truyền phát khung hình đề cập đến các đánh đổi.
13.3.1.1.7. Trình xem đang làm gì¶
CLI thực chất là một chương trình openmv.Camera. Nó kết nối, gọi stop() để xóa bất kỳ tập lệnh đang chạy nào, tải lên tập lệnh bằng exec(), bật truyền phát bằng streaming(), sau đó lặp lại gọi read_frame() (để cập nhật màn hình hiển thị), read_stdout() (để phản chiếu các lần in của tập lệnh), và read_status() (để theo dõi mọi kênh đã đăng ký khác cho hoạt động). Mã nguồn tại cli.py và là tài liệu tham khảo hoạt động cho một ứng dụng điều khiển camera từ đầu đến cuối.