13.3.1.1. CLI openmv¶
การติดตั้งแพ็กเกจจะเพิ่มไฟล์ปฏิบัติการ openmv ที่เปิดตัวดู pygame เชื่อมต่อกับกล้องผ่าน USB เมื่อไม่มีอาร์กิวเมนต์นอกจากพอร์ตซีเรียล จะรันสคริปต์ทดสอบในตัวขนาดเล็ก สตรีมบัฟเฟอร์เฟรมที่ได้กลับมา และแสดงผลพร้อมสเกลและอัตราเฟรมปัจจุบัน:
openmv --port /dev/ttyACM0
เส้นทางพอร์ตขึ้นอยู่กับแพลตฟอร์มโฮสต์ บน Linux คือ /dev/ttyACMx สำหรับ USB CDC และ /dev/ttyUSBx สำหรับบริดจ์ USB-to-UART บน macOS คือ /dev/tty.usbmodem... หรือ /dev/cu.usbmodem... บน Windows คือ COMx
ตัวดูเป็นวิธีที่เร็วที่สุดในการยืนยันว่าแพ็กเกจได้รับการติดตั้งแล้ว กล้องเข้าถึงได้ และโปรโตคอลทำงานได้ นอกจากนี้ยังเป็นตัวช่วยสาธิตที่มีประโยชน์ระหว่างการพัฒนาสคริปต์ -- สลับสคริปต์ทดสอบในตัวด้วยไฟล์ MicroPython ใดก็ได้ด้วย --script และดูผลลัพธ์โดยไม่ต้องออกจากเทอร์มินัล
Esc, Ctrl+C ในเทอร์มินัล หรือปิดหน้าต่างตัวดูล้วนออกจากโปรแกรมได้อย่างสะอาด
13.3.1.1.1. การรันสคริปต์กำหนดเอง¶
--script ชี้ CLI ไปยังไฟล์ซอร์ส MicroPython บนดิสก์ ไฟล์จะถูกอัปโหลดไปยังกล้อง รันแทนสคริปต์ทดสอบในตัว และเฟรมที่สคริปต์สร้างออกมาจะสตรีมกลับไปยังตัวดู:
openmv --port /dev/ttyACM0 --script my_script.py
ทุกสิ่งที่สคริปต์พิมพ์ไปยัง stdout จะถูกมิเรอร์ไปยังเทอร์มินัลโฮสต์แบบเรียลไทม์ ส่ง --quiet เพื่อปิดการใช้งานนั้น หรือ --debug สำหรับการบันทึกโปรโตคอลแบบละเอียด
13.3.1.1.2. การดูตัวอย่างช่องสัญญาณกำหนดเอง¶
--channel NAME โพลช่องสัญญาณข้อมูลกำหนดเองที่ลงทะเบียนโดยสคริปต์ฝั่งกล้องที่กำลังทำงานอยู่ และพิมพ์สิบไบต์แรกของแต่ละการอัปเดตไปยังเทอร์มินัล:
openmv --port /dev/ttyACM0 --channel ticks
สคริปต์ทดสอบในตัวที่รันเมื่อไม่มี --script จะลงทะเบียนช่องสัญญาณ ticks ที่ส่งคืนเวลาทำงานมิลลิวินาทีของกล้อง ดังนั้น --channel ticks แสดงให้เห็นพื้นผิวช่องสัญญาณสองทิศทาง ช่องสัญญาณกำหนดเอง ครอบคลุมในรายละเอียด -- โดยไม่ต้องเขียนโค้ดใดๆ บนโฮสต์หรือกล้องเอง
13.3.1.1.3. โหมด Benchmark¶
--bench สลับสคริปต์ทดสอบมาตรฐานด้วยการทดสอบปริมาณงานที่ผ่านได้ของการบีบอัด JPEG:
openmv --port /dev/ttyACM0 --bench
กล้องจับภาพเฟรม RGB565 QVGA หนึ่งเฟรม บีบอัดเป็น JPEG จากนั้นล้างบัฟเฟอร์ที่บีบอัดเดิมซ้ำในลูปที่แน่น ตัวดูรายงานอัตราข้อมูล USB ดิบแทนที่จะเป็นเฟรมที่ถอดรหัสสด ดังนั้นตัวเลขบนหน้าจอคือขีดบนที่ลิงก์สามารถรักษากับโฮสต์นั้น มีประโยชน์สำหรับการเปรียบเทียบกล้องหรือโฮสต์โดยไม่มีความแปรปรวนของการเปลี่ยนแปลงสิ่งที่กำลังถ่ายภาพจริงๆ
13.3.1.1.4. การทำ Profiling¶
CLI สามารถซ้อนทับข้อมูล profiler สดบนเฟรมที่สตรีม การซ้อนทับมีประโยชน์เฉพาะเมื่อกล้องรันบิลด์เฟิร์มแวร์ PROFILE_ENABLE=1 ที่มีช่องสัญญาณ profile ลงทะเบียน; บนเฟิร์มแวร์ปกติการควบคุม profiling ไม่มีผล
--firmware PATH-- โหลดเฟิร์มแวร์ ELF ที่กล้องกำลังรันเพื่อให้การซ้อนทับสามารถแก้ไขที่อยู่ฟังก์ชันในระเบียน profile เป็นชื่อที่อ่านได้ หากไม่มีก็จะแสดงที่อยู่ดิบ
ทางลัดแป้นพิมพ์สามแบบในตัวดูขับ profiler:
แป้น |
การดำเนินการ |
|---|---|
|
วนรูปแบบการซ้อนทับ profiler: ปิด, ประสิทธิภาพ, เหตุการณ์ |
|
สลับโหมด profiler ระหว่าง inclusive และ exclusive การวัดเวลาแบบ inclusive นับเวลา callee ให้ caller; การวัดเวลาแบบ exclusive ไม่นับ |
|
รีเซ็ตตัวนับ profiler |
13.3.1.1.5. แฟล็กปรับแต่งโปรโตคอล¶
แฟล็กด้านล่างสะท้อนพารามิเตอร์ constructor บน openmv.Camera ค่าเริ่มต้นทำงานได้กับกล้องทุกรุ่นที่จัดส่ง; แทนที่เฉพาะเมื่อดีบักการบิลด์เฟิร์มแวร์กำหนดเองหรือจำลองสภาวะลิงก์ที่ไม่เอื้ออำนวย
--baudrate N-- ค่าเริ่มต้นคือ921600(ค่าพิเศษที่สลับ USB ไปยังโปรโตคอล OpenMV) แทนที่เฉพาะบนลิงก์ UART เท่านั้น--timeout SEC-- ระยะหมดเวลาต่อการดำเนินการในหน่วยวินาที (ค่าเริ่มต้น1.0)--max-retry N-- จำนวนการลองใหม่ก่อนที่จะประกาศว่าลิงก์ขาด (ค่าเริ่มต้น3)--max-payload N-- ขนาดเพย์โหลดสูงสุดในไบต์ (ค่าเริ่มต้น4096) กล้องจะเจรจาลดลงหากไม่สามารถรองรับได้มากขนาดนั้น--crc BOOL-- เปิดใช้งานการตรวจสอบ CRC บนทุกแพ็กเก็ต (ค่าเริ่มต้นtrue)--seq BOOL-- เปิดใช้งานการตรวจสอบหมายเลขลำดับ (ค่าเริ่มต้นtrue)--ack BOOL-- เปิดใช้งานการรับทราบต่อแพ็กเก็ต (ค่าเริ่มต้นtrue)--events BOOL-- เปิดใช้งานการแจ้งเตือนเหตุการณ์จากกล้อง (ค่าเริ่มต้นtrue)--drop-rate FLOAT-- อัตราการจำลองการทิ้งแพ็กเก็ตใน[0.0, 1.0](ค่าเริ่มต้น0.0) สำหรับการทดสอบเท่านั้น
การปรับแต่งเฉพาะ CLI หนึ่งแบบ:
--poll MS-- อัตราโพลสำหรับลูปหลักของตัวดูในหน่วยมิลลิวินาที (ค่าเริ่มต้น4)
13.3.1.1.6. แฟล็กเบ็ดเตล็ด¶
แฟล็กสองแบบปรับวิธีที่ตัวดูนำเสนอสตรีมโดยไม่เปลี่ยนพฤติกรรมฝั่งกล้อง:
--scale N-- ตัวคูณการซูมแสดงผล (ค่าเริ่มต้น4) มีประโยชน์เมื่อเฟรม QVGA เล็กเกินไปที่จะอ่านบนจอแสดงผล 4K--raw-- ขอให้กล้องส่งบัฟเฟอร์พิกเซลโดยไม่บีบอัดแทน JPEG ที่บีบอัด มีประโยชน์กับกล้องที่ไม่มีการสนับสนุน JPEG ของฮาร์ดแวร์; การสตรีมเฟรม ครอบคลุมการแลกเปลี่ยน
13.3.1.1.7. สิ่งที่ตัวดูกำลังทำ¶
CLI นั้นเองเป็นโปรแกรม openmv.Camera มันเชื่อมต่อ เรียก stop() เพื่อล้างสคริปต์ที่กำลังรัน อัปโหลดสคริปต์ด้วย exec() เปิดใช้งานการสตรีมด้วย streaming() จากนั้นวนซ้ำโดยเรียก read_frame() (เพื่ออัปเดตการแสดงผล), read_stdout() (เพื่อมิเรอร์การพิมพ์ของสคริปต์), และ read_status() (เพื่อดูทุกช่องสัญญาณที่ลงทะเบียนอื่นๆ สำหรับกิจกรรม) ซอร์สอยู่ที่ cli.py และเป็นข้อมูลอ้างอิงที่ใช้งานได้สำหรับแอปพลิเคชันที่ขับกล้องแบบ end-to-end