13.1.4. การรันสคริปต์#
ปุ่มเริ่มต้น -- ลูกศรสีเขียวด้านล่างปุ่มเชื่อมต่อ หรือ Ctrl+R -- ส่งสคริปต์ในแท็บตัวแก้ไขปัจจุบันไปยังกล้องที่เชื่อมต่อแล้วรัน ขณะที่สคริปต์รันอยู่ ปุ่มเริ่มต้นจะเปลี่ยนเป็นปุ่มหยุดที่ใช้หยุดการทำงาน ปุ่มทั้งสองนี้คือวงจรหลักของการพัฒนาบนกล้อง: แก้ไข เริ่ม ดูผล หยุด แล้วแก้ไขใหม่
รายละเอียดสองอย่างของลูปนั้นมีความสำคัญ อย่างแรก สคริปต์ถูกส่งไปยัง RAM ของกล้องและรันที่นั่น -- การเริ่มสคริปต์ไม่เขียนอะไรลงในที่เก็บข้อมูลของกล้อง และสคริปต์จะหายไปหลังรีเซ็ต อย่างที่สอง สิ่งที่รันคือ แท็บตัวแก้ไขปัจจุบัน ตามที่แสดงเป๊ะ ๆ ไม่ว่าจะบันทึกแล้วหรือไม่ ไม่มีขั้นตอนอัปโหลดแยกต่างหาก และไม่มีสำเนาค้างบนกล้องที่จะหลุดจากการซิงก์กับตัวแก้ไขของคุณ สิ่งเดียวที่ IDE ทำเพิ่มคือการตัดคอมเมนต์ออกจากสำเนาที่ส่ง: ซอร์สของสคริปต์อยู่ใน RAM ของกล้องขณะคอมไพล์ และตัวอย่างที่มีคอมเมนต์มากจะเล็กลงเมื่อไม่มีคอมเมนต์ บรรทัดไม่เคยถูกลบ เพียงถูกทำให้ว่าง หมายเลขบรรทัดใน traceback จึงยังตรงกับตัวแก้ไขของคุณ
ขณะที่สคริปต์รัน เอาต์พุต print() ของมันจะสตรีมเข้าเทอร์มินัลอนุกรม ทุกเฟรมที่มันจับภาพจะปรากฏในโปรแกรมดูเฟรมบัฟเฟอร์ และสิ่งใดก็ตามที่มันเผยแพร่เป็นแชนเนลจะปรากฏใน มุมมอง Channels เมื่อสคริปต์เกิดข้อยกเว้นที่ไม่ได้จัดการ traceback จะพิมพ์ลงในเทอร์มินัลอนุกรม IDE จะกระโดดตัวแก้ไขไปยังบรรทัดที่มีปัญหาและทำเครื่องหมายเป็นสีแดงพร้อมข้อผิดพลาดข้าง ๆ -- สำหรับแอปพลิเคชันหลายไฟล์ มันจะเปิดไฟล์ที่ระบุชื่อจากไดรฟ์ของกล้องก่อน เครื่องหมายจะหายไปเมื่อคุณแก้ไขไฟล์ รันอีกครั้ง หรือยกเลิกการเชื่อมต่อ เมื่อสคริปต์หยุด ไม่ว่าด้วย Stop หรือด้วยการล่ม มุมมอง Channels จะคงค่าล่าสุดที่มันเผยแพร่ไว้บนหน้าจอจนกว่าสคริปต์ถัดไปจะเริ่ม
13.1.4.1. การทำให้สคริปต์ถาวร#
หากต้องการให้กล้องรันสคริปต์โดยไม่ต้องใช้ IDE -- เมื่อเปิดเครื่อง แบบสแตนด์อโลน หรือในภาคสนาม -- ให้จัดเก็บสคริปต์บนกล้องในชื่อ main.py Tools → Save open script to OpenMV Cam (as main.py) จะเขียนแท็บตัวแก้ไขปัจจุบันไปยังไดรฟ์ของกล้องภายใต้ชื่อนั้น โดยมีตัวเลือกระหว่างทางให้ตัดความคิดเห็นและบีบอัดช่องว่าง -- ซึ่งจะย่อขนาดไฟล์แต่ส่งสำเนาที่อ่านไม่ออก -- และ Tools → Reset OpenMV Cam จะรีสตาร์ทกล้องเพื่อให้บูตเข้าสู่สคริปต์ที่จัดเก็บไว้ ทั้งสองขั้นตอนนี้รวมกันเป็นขั้นตอนการ deploy: หลังจากนั้นกล้องจะรันสคริปต์ของคุณทุกครั้งที่มีไฟ ไม่ว่าจะมี IDE หรือไม่
ขณะที่กล้องที่รีเซ็ตแล้วกำลังรัน main.py ที่จัดเก็บไว้ IDE ยังคงเชื่อมต่อได้ -- เมื่อเปิดใช้งาน Stop Script on Connect/Disconnect (ค่าเริ่มต้น) การเชื่อมต่อจะหยุดสคริปต์ที่จัดเก็บไว้และคืนการควบคุมกลับไปยังตัวแก้ไข
See also
การแช่แข็งสคริปต์ลงในเฟิร์มแวร์ สำหรับความหมายของ main.py ในลำดับการบูตของกล้อง และสำหรับการย้ายแอปพลิเคชันที่เสร็จสมบูรณ์ออกจากพื้นที่จัดเก็บที่แก้ไขได้ทั้งหมด
13.1.4.2. ไดรฟ์ของกล้อง#
ระบบไฟล์ flash ของกล้อง (และการ์ด SD เมื่อใส่ไว้) จะเมาท์บนโฮสต์เป็น USB flash drive Tools → Open OpenMV Cam Drive folder จะเปิดในตัวจัดการไฟล์ของคุณ นี่คือที่ที่คุณคัดลอกโมดูลไลบรารี ไฟล์โมเดล และไฟล์สินทรัพย์ที่สคริปต์นำเข้าหรือโหลด และที่ที่คุณดึงภาพและบันทึกที่บันทึกไว้ เส้นทางไดรฟ์ยังปรากฏในแถบสถานะด้วย
ไฟล์ที่สคริปต์สร้างขึ้นจะไม่ปรากฏบนโฮสต์ทันที: โฮสต์จะแคชระบบไฟล์ตั้งแต่ตอนที่ไดรฟ์เมาท์ ดังนั้นสแนปช็อตที่บันทึกโดยสคริปต์ที่รันอยู่จะมองไม่เห็นจนกว่าไดรฟ์จะเมาท์ใหม่ Tools → Reset OpenMV Cam จะเมาท์ใหม่ -- วิธีที่รวดเร็วในการเข้าถึงสิ่งที่สคริปต์เพิ่งเขียน
ข้อควรระวังหนึ่งประการ: กล้องและโฮสต์ใช้ระบบไฟล์นั้นร่วมกัน และการเขียนพร้อมกันจากทั้งสองฝั่งอาจทำให้เสียหาย คัดลอกไฟล์ขณะที่ไม่มีสคริปต์กำลังเขียนไปยังพื้นที่จัดเก็บ และนำออกอย่างถูกต้องก่อนถอดการ์ด