13.3.1.1. כלי שורת הפקודה openmv¶
התקנת החבילה מוסיפה קובץ הרצה openmv הפותח מציג pygame המחובר למצלמה דרך USB. ללא ארגומנטים נוספים מעבר ליציאה הטורית הוא מריץ סקריפט בדיקה מובנה קטן, מזרים בחזרה את חוצץ הפריימים (frame buffer) שנוצר, ומציג אותו מוקטן או מוגדל ומלווה בקצב הפריימים הנוכחי:
openmv --port /dev/ttyACM0
נתיב היציאה תלוי בפלטפורמת המארח. ב-Linux, /dev/ttyACMx עבור USB CDC ו-/dev/ttyUSBx עבור גשר USB-ל-UART. ב-macOS, /dev/tty.usbmodem... או /dev/cu.usbmodem.... ב-Windows, COMx.
המציג הוא הדרך המהירה ביותר לאשר שהחבילה מותקנת, שהמצלמה נגישה, ושהפרוטוקול עובד. הוא גם מסגרת הדגמה שימושית במהלך פיתוח סקריפט – החלף את סקריפט הבדיקה המובנה בכל קובץ MicroPython באמצעות --script וצפה בתוצאה מבלי לעזוב את הטרמינל.
Esc, Ctrl+C בטרמינל, או סגירת חלון המציג – כולם יוצאים בצורה נקייה.
13.3.1.1.1. הרצת סקריפט מותאם אישית¶
--script מפנה את כלי שורת הפקודה לקובץ מקור 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. מצב בנצ’מרק¶
--bench מחליף את סקריפט הבדיקה הסטנדרטי בבנצ’מרק תפוקת דחיסת JPEG:
openmv --port /dev/ttyACM0 --bench
המצלמה לוכדת פריים RGB565 QVGA אחד, דוחסת אותו ל-JPEG, ואז מרוקנת את אותו חוצץ דחוס בלולאה הדוקה. המציג מדווח על קצב נתוני ה-USB הגולמי ולא על פריים מפוענח חי, כך שהמספר על המסך הוא הגבול העליון שהקישור יכול לקיים מול אותו מארח. שימושי להשוואת מצלמות או מארחים ללא השונות של שינוי מה שנלכד בפועל.
13.3.1.1.4. פרופיילינג¶
כלי שורת הפקודה יכול להציג נתוני פרופיילר חיים כשכבת על על הפריימים המוזרמים. שכבת העל שימושית רק כאשר המצלמה מריצה בניית קושחה PROFILE_ENABLE=1 עם ערוץ ה-profile רשום; בקושחה סטנדרטית לפקדי הפרופיילינג אין השפעה.
--firmware PATH– טוען את קובץ ELF של הקושחה שהמצלמה מריצה כדי ששכבת העל תוכל לפענח כתובות פונקציה ברשומות הפרופיל לשמות קריאים לבני אדם. בלעדיו שכבת העל מציגה כתובות גולמיות.
שלושה קיצורי מקלדת במציג מפעילים את הפרופיילר:
מקש |
פעולה |
|---|---|
|
מחזר את שכבת העל של הפרופיילר: כבוי, ביצועים, אירועים. |
|
מחליף את מצב הפרופיילר בין מכליל ל-בלעדי. תזמון מכליל מחייב את זמן הנקרא לקורא; תזמון בלעדי אינו עושה זאת. |
|
מאפס את מוני הפרופיילר. |
13.3.1.1.5. דגלי כוונון פרוטוקול¶
הדגלים שלהלן משקפים את פרמטרי הבנאי של 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). לבדיקה בלבד.
כפתור כוונון אחד ייחודי לכלי שורת הפקודה:
--poll MS– קצב התשאול עבור הלולאה הראשית של המציג, באלפיות שנייה (ברירת מחדל4).
13.3.1.1.6. דגלים שונים¶
שני דגלים מתאימים את אופן הצגת הזרם על ידי המציג מבלי לשנות את ההתנהגות בצד המצלמה:
--scale N– גורם הזום של התצוגה (ברירת מחדל4). שימושי כאשר פריימים בגודל QVGA קטנים מכדי לקרוא אותם בתצוגת 4K.--raw– מבקש שהמצלמה תשלח חוצצי פיקסלים ללא דחיסה במקום דחוסים ב-JPEG. שימושי במצלמות ללא תמיכת JPEG חומרתית; הזרמת פריימים מכסה את התמורות.
13.3.1.1.7. מה שהמציג עושה¶
כלי שורת הפקודה הוא בעצמו תוכנית openmv.Camera. הוא מתחבר, קורא ל-stop() כדי לנקות כל סקריפט רץ, מעלה את הסקריפט עם exec(), מאפשר הזרמה עם streaming(), ואז עובר בלולאה הקוראת ל-read_frame() (כדי לעדכן את התצוגה), read_stdout() (כדי לשקף את ההדפסות של הסקריפט), ו-read_status() (כדי לעקוב אחר כל ערוץ רשום אחר לפעילות). המקור נמצא ב-cli.py והוא סימוכין עובד עבור יישום המפעיל מצלמה מקצה לקצה.