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:

แป้น

การดำเนินการ

P

วนรูปแบบการซ้อนทับ profiler: ปิด, ประสิทธิภาพ, เหตุการณ์

M

สลับโหมด profiler ระหว่าง inclusive และ exclusive การวัดเวลาแบบ inclusive นับเวลา callee ให้ caller; การวัดเวลาแบบ exclusive ไม่นับ

R

รีเซ็ตตัวนับ 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