MicroPython การควบคุมระยะไกล: mpremote¶
เครื่องมือบรรทัดคำสั่ง mpremote มีชุดยูทิลิตีแบบบูรณาการสำหรับโต้ตอบกับอุปกรณ์ MicroPython จากระยะไกล จัดการระบบไฟล์ และทำงานอัตโนมัติผ่านการเชื่อมต่อแบบอนุกรม ใช้งานได้กับ OpenMV Cam ทุกรุ่นผ่านการเชื่อมต่อ USB serial และเป็นทางเลือกบรรทัดคำสั่งแทน OpenMV IDE สำหรับเวิร์กโฟลว์สคริปต์และการทำงานอัตโนมัติ
หากต้องการใช้ mpremote ให้ติดตั้งผ่าน pip ก่อน:
$ pip install --user mpremote
หรือผ่าน pipx:
$ pipx install mpremote
วิธีที่ง่ายที่สุดในการใช้เครื่องมือนี้คือเรียกใช้งานโดยไม่ต้องระบุอาร์กิวเมนต์:
$ mpremote
คำสั่งนี้จะตรวจหาและเชื่อมต่อกับอุปกรณ์ USB serial ตัวแรกที่พบโดยอัตโนมัติ และเปิดเทอร์มินัลแบบโต้ตอบที่ใช้เข้าถึง REPL และผลลัพธ์จากโปรแกรมได้ พอร์ต serial จะถูกเปิดในโหมดเอกสิทธิ์ ดังนั้นการเรียก mpremote ครั้งที่สอง (หรือสาม เป็นต้น) จะเชื่อมต่อกับอุปกรณ์ serial ถัดไปหากมี
นอกจากนี้ pipx ยังช่วยให้รัน mpremote ได้โดยตรงโดยไม่ต้องติดตั้งก่อน:
$ pipx run mpremote ...args
คำสั่ง¶
mpremote รองรับการรับคำสั่งหลายชุดที่ให้ไว้ในบรรทัดคำสั่ง ซึ่งจะดำเนินการต่าง ๆ ตามลำดับบนอุปกรณ์ MicroPython ระยะไกล ดู ส่วนตัวอย่าง ด้านล่างเพื่อทำความเข้าใจวิธีการทำงานและรูปแบบการรวมคำสั่งที่ใช้บ่อย
คำสั่งแต่ละรายการมีรูปแบบ <command name> [--options] [args...] สำหรับคำสั่งที่รองรับอาร์กิวเมนต์หลายรายการ (เช่น รายการไฟล์) สามารถสิ้นสุดรายการอาร์กิวเมนต์ด้วย +
หากไม่ได้ระบุคำสั่ง คำสั่งเริ่มต้นจะเป็น repl นอกจากนี้หากคำสั่งใดต้องการเข้าถึงอุปกรณ์และยังไม่มีการระบุ connect ก่อนหน้า ระบบจะเพิ่ม connect auto โดยปริยาย
เพื่อทำให้อุปกรณ์อยู่ในสถานะที่รู้จักสำหรับคำสั่งปฏิบัติการใด ๆ (ยกเว้น repl) เมื่อเชื่อมต่อแล้ว mpremote จะหยุดโปรแกรมที่กำลังทำงานและ soft-reset อุปกรณ์ก่อนรันคำสั่งแรก คุณสามารถควบคุมพฤติกรรมนี้ด้วยคำสั่ง resume และ soft-reset ดู การเชื่อมต่ออัตโนมัติและ auto-soft-reset สำหรับรายละเอียดเพิ่มเติม
สามารถระบุหลายคำสั่งพร้อมกันและจะรันตามลำดับ
รายการคำสั่งที่รองรับทั้งหมดได้แก่:
connect¶
เชื่อมต่อกับอุปกรณ์ที่ระบุตามชื่อ:
$ mpremote connect <device>
<device> อาจเป็นหนึ่งในค่าต่อไปนี้:
list: แสดงรายการอุปกรณ์ที่พร้อมใช้งานauto: เชื่อมต่อกับพอร์ต USB serial ตัวแรกที่พร้อมใช้งานid:<serial>: เชื่อมต่อกับอุปกรณ์ที่มีหมายเลข USB serial<serial>(คอลัมน์ที่สองจากผลลัพธ์คำสั่งconnect list)port:<path>: เชื่อมต่อกับอุปกรณ์ที่มีพาธที่กำหนด (คอลัมน์แรกจากผลลัพธ์คำสั่งconnect listrfc2217://<host>:<port>: เชื่อมต่อกับอุปกรณ์โดยใช้ serial ผ่าน TCP (เช่น พอร์ต serial ผ่านเครือข่ายตามมาตรฐาน RFC2217)ชื่อ/พาธของอุปกรณ์ที่ถูกต้อง เพื่อเชื่อมต่อกับอุปกรณ์นั้น
หมายเหตุ: แทนที่จะใช้คำสั่ง connect มี ทางลัดที่กำหนดไว้ล่วงหน้า หลายรายการสำหรับพาธอุปกรณ์ทั่วไป ตัวอย่างเช่น ทางลัด a0 เทียบเท่ากับ connect /dev/ttyACM0 (Linux) หรือ c1 สำหรับ COM1 (Windows)
หมายเหตุ: ตัวเลือก auto จะตรวจหาเฉพาะพอร์ต USB serial เท่านั้น กล่าวคือ พอร์ต serial ที่มี USB VID/PID ที่เกี่ยวข้อง (อุปกรณ์แบบ CDC/ACM หรือ FTDI) พอร์ต serial ประเภทอื่นจะไม่ถูกตรวจหาโดยอัตโนมัติ
disconnect¶
ตัดการเชื่อมต่อกับอุปกรณ์ปัจจุบัน:
$ mpremote disconnect
หลังจากตัดการเชื่อมต่อ auto-soft-reset จะถูกเปิดใช้งาน
resume¶
คงสถานะตัวแปลภาษาที่มีอยู่สำหรับคำสั่งถัดไป:
$ mpremote resume
การดำเนินการนี้จะปิดใช้งาน auto-soft-reset ซึ่งมีประโยชน์เมื่อต้องการรันคำสั่งถัดไปบนบอร์ดโดยไม่ต้องทำ soft-reset ก่อน
soft-reset¶
ดำเนินการ soft-reset ของอุปกรณ์:
$ mpremote soft-reset
การดำเนินการนี้จะล้าง Python heap และรีสตาร์ทตัวแปลภาษา และยังป้องกันไม่ให้คำสั่งถัดไปทริกเกอร์ auto-soft-reset
repl¶
เข้าสู่ REPL บนอุปกรณ์ที่เชื่อมต่อ:
$ mpremote repl [--options]
ตัวเลือกที่รองรับ:
--escape-non-printableเพื่อแสดงไบต์/อักขระที่พิมพ์ไม่ได้เป็นรหัส hex--capture <file>เพื่อบันทึกผลลัพธ์ของเซสชัน REPL ลงในไฟล์ที่ระบุ--inject-code <string>เพื่อระบุอักขระที่จะฉีดเข้า REPL เมื่อกดCtrl-Jซึ่งช่วยให้ทำงานคำสั่งที่ใช้บ่อยได้โดยอัตโนมัติ--inject-file <file>เพื่อระบุไฟล์ที่จะฉีดเข้า REPL เมื่อกดCtrl-Kซึ่งช่วยให้รันไฟล์ได้ (เช่น ไฟล์ที่มีโค้ดการตั้งค่าที่มีประโยชน์ หรือแม้แต่โปรแกรมที่กำลังพัฒนาอยู่)
ขณะที่คำสั่ง repl กำลังทำงาน สามารถใช้ Ctrl-] หรือ Ctrl-x เพื่อออกได้
หมายเหตุ: ชื่อ "REPL" ที่นี่สะท้อนการใช้งานทั่วไปของคำสั่งนี้เพื่อเข้าถึง Read Eval Print Loop ที่ทำงานอยู่บนอุปกรณ์ MicroPython โดยเคร่งครัดแล้ว คำสั่ง repl ทำหน้าที่เป็นเทอร์มินัล (หรือ "serial monitor") เพื่อเข้าถึงอุปกรณ์ เนื่องจากคำสั่งนี้ไม่ทริกเกอร์ พฤติกรรม auto-reset ซึ่งหมายความว่าหากโปรแกรมกำลังทำงานอยู่ คุณจะต้องหยุดการทำงานด้วย Ctrl-C ก่อนเพื่อเข้าสู่ REPL แล้วจึงจะเข้าถึงสถานะโปรแกรมได้ นอกจากนี้ยังใช้ mpremote soft-reset repl เพื่อได้ REPL "สะอาด" ที่ล้างสถานะโปรแกรมทั้งหมดได้
eval¶
ประเมินค่าและพิมพ์ผลลัพธ์ของนิพจน์ Python:
$ mpremote eval <string>
exec¶
รันโค้ด Python ที่ระบุ:
$ mpremote exec <string>
โดยค่าเริ่มต้น mpremote exec จะแสดงผลลัพธ์จากนิพจน์จนกว่าจะสิ้นสุด สามารถระบุแฟล็ก --no-follow เพื่อให้คืนค่าทันทีและปล่อยให้อุปกรณ์รันนิพจน์ในเบื้องหลัง
run¶
รันสคริปต์จากระบบไฟล์ภายในเครื่อง:
$ mpremote run <file.py>
การดำเนินการนี้จะรันไฟล์โดยตรงจาก RAM บนอุปกรณ์โดยไม่ต้องคัดลอกไปยังระบบไฟล์ ซึ่งเป็นวิธีที่มีประโยชน์มากในการพัฒนาโค้ดซ้ำ ๆ โดยไม่ต้องกังวลเรื่องการ deploy ไปยังระบบไฟล์
โดยค่าเริ่มต้น mpremote run จะแสดงผลลัพธ์จากสคริปต์จนกว่าจะสิ้นสุด สามารถระบุแฟล็ก --no-follow เพื่อให้คืนค่าทันทีและปล่อยให้อุปกรณ์รันสคริปต์ในเบื้องหลัง
fs¶
รันคำสั่งระบบไฟล์บนอุปกรณ์:
$ mpremote fs <sub-command>
<sub-command> อาจเป็น:
cat <file..>เพื่อแสดงเนื้อหาของไฟล์หนึ่งหรือหลายไฟล์บนอุปกรณ์lsเพื่อแสดงรายการในไดเรกทอรีปัจจุบันls <dirs...>เพื่อแสดงรายการในไดเรกทอรีที่ระบุcp [-rf] <src...> <dest>เพื่อคัดลอกไฟล์rm [-r] <src...>เพื่อลบไฟล์หรือโฟลเดอร์บนอุปกรณ์mkdir <dirs...>เพื่อสร้างไดเรกทอรีบนอุปกรณ์rmdir <dirs...>เพื่อลบไดเรกทอรีบนอุปกรณ์touch <file..>เพื่อสร้างไฟล์ (หากยังไม่มีอยู่)sha256sum <file..>เพื่อคำนวณค่า SHA256 sum ของไฟล์tree [-vsh] <dirs...>เพื่อแสดงโครงสร้างต้นไม้ของไดเรกทอรีที่ระบุ
คำสั่ง cp ใช้รูปแบบที่ : นำหน้าหมายถึงพาธระยะไกล หากไม่มี : นำหน้าหมายถึงพาธในเครื่อง ซึ่งอิงตามรูปแบบที่ใช้ใน Secure Copy Protocol (scp) client
ตัวอย่างเช่น mpremote fs cp main.py :main.py คัดลอก main.py จากไดเรกทอรีในเครื่องปัจจุบันไปยังระบบไฟล์ระยะไกล ในขณะที่ mpremote fs cp :main.py main.py คัดลอก main.py จากอุปกรณ์กลับมายังไดเรกทอรีปัจจุบัน
คำสั่ง mpremote rm -r รองรับทั้งพาธสัมพัทธ์และพาธสัมบูรณ์ ใช้ : เพื่ออ้างถึงไดเรกทอรีทำงานระยะไกลปัจจุบัน (cwd) เพื่อลบโครงสร้างไดเรกทอรีออกจากพาธเริ่มต้นของอุปกรณ์ (เช่น /flash, /) ใช้ -v/--verbose เพื่อดูไฟล์ที่กำลังถูกลบ
ตัวอย่างเช่น:
mpremote rm -r :libsจะลบไดเรกทอรีlibsและรายการย่อยทั้งหมดออกจากอุปกรณ์mpremote rm -rv :/sdจะลบไฟล์ทั้งหมดออกจาก SDCard ที่ mount อยู่และแสดงคำเตือนแบบไม่ blocking โดยการ mount จะยังคงอยู่mpremote rm -rv :/จะลบไฟล์ทั้งหมดบนอุปกรณ์ รวมถึงไฟล์ใน vfs ที่ mount อยู่เช่น/sdหรือ/flashหลังจากลบโฟลเดอร์และไฟล์ทั้งหมดแล้ว จะคืนค่า error เพื่อเลียนแบบพฤติกรรมของ unixrm -rf /
Warning
ไม่มีวิธีที่รองรับในการกู้คืนไฟล์ที่ถูกลบด้วย mpremote rm -r : โปรดใช้ด้วยความระมัดระวัง
คำสั่ง tree จะแสดงโครงสร้างต้นไม้ของไดเรกทอรีที่ระบุ การใช้ตัวเลือก --size/-s จะแสดงขนาดของแต่ละไฟล์ หรือใช้ --human/-h เพื่อแสดงในรูปแบบที่อ่านง่ายขึ้น หมายเหตุ: ขนาดไดเรกทอรีจะแสดงเฉพาะเมื่อระบบไฟล์ของอุปกรณ์รายงานขนาดที่ไม่ใช่ศูนย์ ตัวเลือก -v ใช้เพื่อแสดงชื่ออุปกรณ์ serial ในผลลัพธ์
คำสั่งอื่น ๆ ทั้งหมดถือว่าพาธเป็นพาธระยะไกลโดยปริยาย แต่สามารถใช้ : ได้โดยเลือกเพื่อความชัดเจน
คำสั่งย่อยของระบบไฟล์ทั้งหมดรับอาร์กิวเมนต์พาธหลายรายการ ดังนั้นหากมีคำสั่งอื่นในลำดับ คุณต้องใช้ + เพื่อสิ้นสุดอาร์กิวเมนต์ เช่น
$ mpremote fs cp main.py :main.py + repl
การดำเนินการนี้จะคัดลอกไฟล์ไปยังอุปกรณ์แล้วเข้าสู่ REPL โดย + ป้องกันไม่ให้ "repl" ถูกตีความว่าเป็นพาธ
คำสั่ง cp รองรับตัวเลือก -r สำหรับการคัดลอกแบบ recursive โดยค่าเริ่มต้น cp จะข้ามการคัดลอกไฟล์ไปยังอุปกรณ์ระยะไกลหากค่า SHA256 hash ของไฟล์ต้นทางและปลายทางตรงกัน หากต้องการบังคับคัดลอกไม่ว่า hash จะเป็นอย่างไร ให้ใช้ตัวเลือก -f
หมายเหตุ: เพื่อความสะดวก คำสั่งย่อยระบบไฟล์ทั้งหมดยังมี ชื่อย่อเป็นคำสั่งปกติ กล่าวคือ คุณสามารถเขียน mpremote cp ... แทน mpremote fs cp ... ได้
df¶
ตรวจสอบพื้นที่ว่าง/ที่ใช้ไปของอุปกรณ์:
$ mpremote df
คำสั่ง df จะแสดงสถิติขนาด/ที่ใช้/ที่ว่างของระบบไฟล์อุปกรณ์ คล้ายกับคำสั่ง df ของ Unix
edit¶
แก้ไขไฟล์บนอุปกรณ์:
$ mpremote edit <files...>
คำสั่ง edit จะคัดลอกแต่ละไฟล์จากอุปกรณ์ไปยังไดเรกทอรีชั่วคราวในเครื่องแล้วเปิด editor สำหรับแต่ละไฟล์ (กำหนดโดยตัวแปรสภาพแวดล้อม $EDITOR) หาก editor ออกโดยสำเร็จ ไฟล์ที่อัปเดตแล้วจะถูกคัดลอกกลับไปยังอุปกรณ์
mip¶
ติดตั้งแพ็กเกจจาก micropython-lib (หรือ GitHub) โดยใช้เครื่องมือ mip:
$ mpremote mip install <packages...>
ดู การจัดการแพ็กเกจ สำหรับข้อมูลเพิ่มเติม
mount¶
Mount ไดเรกทอรีในเครื่องบนอุปกรณ์ระยะไกล:
$ mpremote mount [options] <local-dir>
ซึ่งช่วยให้อุปกรณ์ระยะไกลมองเห็นไดเรกทอรีของ host เสมือนเป็นระบบไฟล์ของตัวเอง ซึ่งมีประโยชน์สำหรับการพัฒนาและหลีกเลี่ยงการคัดลอกไฟล์ไปยังอุปกรณ์ขณะทำงาน
อุปกรณ์จะติดตั้งไดรเวอร์ระบบไฟล์ ซึ่งจะถูก mount ใน VFS ของอุปกรณ์ เป็น /remote โดยใช้การเชื่อมต่อ serial กับ mpremote เป็นช่องทางรองสำหรับเข้าถึงไฟล์ อุปกรณ์จะตั้งค่าไดเรกทอรีทำงานปัจจุบัน (ผ่าน os.chdir) เป็น /remote เพื่อให้การ import และการเข้าถึงไฟล์เกิดขึ้นที่นั่นแทนพาธระบบไฟล์เริ่มต้นขณะที่ mount ทำงาน
หมายเหตุ: หากคำสั่ง mount ไม่ตามด้วยการดำเนินการอื่นในลำดับ ระบบจะเพิ่มคำสั่ง repl โดยปริยายที่ท้ายลำดับ
ระหว่างการใช้งาน Ctrl-D จะทริกเกอร์ soft-reset ตามปกติ แต่ mount จะเชื่อมต่อใหม่โดยอัตโนมัติ อย่างไรก็ตาม หากหน่วยมี main.py ทำงานเมื่อเริ่มต้น การ remount จะไม่สามารถเกิดขึ้นได้ ในกรณีนี้สามารถใช้การ soft reboot แบบ raw mode ได้: Ctrl-A Ctrl-D เพื่อ reboot จากนั้น Ctrl-B เพื่อกลับสู่ repl ปกติ ซึ่ง mount จะพร้อมใช้งาน
ตัวเลือกที่รองรับ:
-l,--unsafe-links: โดยค่าเริ่มต้นจะเกิด error หากอุปกรณ์เข้าถึงไฟล์หรือไดเรกทอรีที่อยู่นอก (ขึ้นไปหนึ่งหรือหลายระดับไดเรกทอรี) ไดเรกทอรีในเครื่องที่ mount อยู่ ตัวเลือกนี้จะปิดใช้งานการตรวจสอบนี้สำหรับ symbolic link ช่วยให้อุปกรณ์ติดตาม symbolic link นอกไดเรกทอรีในเครื่องได้
unmount¶
Unmount ไดเรกทอรีในเครื่องออกจากอุปกรณ์ระยะไกล:
$ mpremote umount
การดำเนินการนี้จะเกิดขึ้นโดยอัตโนมัติเมื่อ mpremote สิ้นสุด แต่สามารถใช้ในลำดับเพื่อ unmount mount ก่อนหน้าก่อนที่จะรันคำสั่งถัดไป
romfs¶
จัดการ ROMFS partitions บนอุปกรณ์:
$ mpremote romfs <sub-command>
<sub-command> อาจเป็น:
romfs queryเพื่อแสดงรายการ ROMFS partitions ทั้งหมดที่มีและขนาดของแต่ละรายการromfs [-o <output>] build <source>เพื่อสร้าง ROMFS image จากไดเรกทอรีต้นทางที่ระบุ โดยไฟล์ output เริ่มต้นคือชื่อต้นทางต่อท้ายด้วย.romfsromfs [-p <partition>] deploy <source>เพื่อ deploy ROMFS image ไปยังอุปกรณ์ และยังสามารถสร้าง ROMFS image ชั่วคราวได้หากต้นทางเป็นไดเรกทอรี
คำสั่งย่อย build และ deploy ทั้งคู่รองรับตัวเลือก -m/--mpy เพื่อคอมไพล์ไฟล์ .py เป็น .mpy โดยอัตโนมัติเมื่อสร้าง ROMFS image ตัวเลือกนี้เปิดใช้งานโดยค่าเริ่มต้น แต่ใช้งานได้เฉพาะเมื่อติดตั้งแพ็กเกจ Python mpy_cross แล้ว (เช่น ผ่าน pip install mpy_cross) หากไม่ได้ติดตั้งแพ็กเกจ ระบบจะแสดงคำเตือนและไฟล์ .py จะคงอยู่ตามเดิม การคอมไพล์ไฟล์ .py สามารถปิดใช้งานด้วยตัวเลือก --no-mpy
rtc¶
ตั้งค่า/อ่านนาฬิกาของอุปกรณ์ (RTC):
$ mpremote rtc
การดำเนินการนี้จะสอบถาม RTC ของอุปกรณ์สำหรับเวลาปัจจุบันและแสดงผลเป็น tuple datetime
$ mpremote rtc --set
การดำเนินการนี้จะตั้งค่า RTC ของอุปกรณ์ให้ตรงกับเวลาปัจจุบันของ host PC
sleep¶
หยุดพัก (หน่วงเวลา) ก่อนรันคำสั่งถัดไป:
$ mpremote sleep 0.5
การดำเนินการนี้จะหยุดการรันลำดับคำสั่งชั่วคราวตามระยะเวลาที่ระบุเป็นวินาที เช่น เพื่อรอให้อุปกรณ์ดำเนินการบางอย่าง
reset¶
Hard reset อุปกรณ์:
$ mpremote reset
หมายเหตุ: hard reset เทียบเท่ากับ machine.reset()
bootloader¶
เข้าสู่ bootloader:
$ mpremote bootloader
การดำเนินการนี้จะทำให้อุปกรณ์เข้าสู่ bootloader โดย bootloader ขึ้นอยู่กับบอร์ด ดูส่วน Recovery and debug pins ในเอกสาร quick reference ของบอร์ดของคุณสำหรับรายละเอียด
การเชื่อมต่ออัตโนมัติและ soft-reset¶
การเชื่อมต่อและตัดการเชื่อมต่อจะดำเนินการโดยอัตโนมัติที่จุดเริ่มต้นและสิ้นสุดการทำงานของเครื่องมือ หากไม่ได้ระบุคำสั่งเหล่านี้อย่างชัดเจน การเชื่อมต่ออัตโนมัติจะค้นหาอุปกรณ์ USB serial ตัวแรกที่พร้อมใช้งาน
เมื่อเชื่อมต่อกับอุปกรณ์แล้ว mpremote จะทำ soft-reset อุปกรณ์โดยอัตโนมัติหากจำเป็น ซึ่งจะล้าง Python heap และรีสตาร์ทตัวแปลภาษา เพื่อให้แน่ใจว่าโค้ด Python ที่ตามมาทำงานในสภาพแวดล้อมใหม่ Auto soft-reset จะดำเนินการครั้งแรกเมื่อรันคำสั่งต่อไปนี้: mount, eval, exec, run, fs หลังจากทำ soft-reset ครั้งแรกแล้ว จะไม่ทำซ้ำโดยอัตโนมัติจนกว่าจะมีการออกคำสั่ง disconnect
พฤติกรรม Auto-soft-reset สามารถควบคุมได้ด้วยคำสั่ง resume ซึ่งอาจมีประโยชน์สำหรับใช้คำสั่ง eval เพื่อตรวจสอบสถานะของอุปกรณ์ คำสั่ง soft-reset สามารถใช้ดำเนินการ soft reset อย่างชัดเจนในระหว่างลำดับคำสั่ง
ทางลัด¶
สามารถกำหนดทางลัดโดยใช้ระบบ macro ทางลัดที่มีอยู่แล้ว ได้แก่:
devs: ชื่อย่อสำหรับconnect lista0,a1,a2,a3: ชื่อย่อสำหรับconnect /dev/ttyACMnu0,u1,u2,u3: ชื่อย่อสำหรับconnect /dev/ttyUSBnc0,c1,c2,c3: ชื่อย่อสำหรับconnect COMncat,edit,ls,cp,rm,mkdir,rmdir,touch: ชื่อย่อสำหรับfs <sub-command>
สามารถกำหนดทางลัดเพิ่มเติมได้ในไฟล์ user configuration mpremote/config.py ซึ่งอยู่ใน User Configuration Directory โดยตำแหน่งที่ถูกต้องสำหรับแต่ละ OS จะถูกกำหนดโดยใช้โมดูล platformdirs
โดยทั่วไปคือ: - $XDG_CONFIG_HOME/mpremote/config.py - $HOME/.config/mpremote/config.py - $env:LOCALAPPDATA/mpremote/config.py
ไฟล์ config.py ควรกำหนด dictionary ชื่อ commands โดย key ของ dictionary นี้คือทางลัดและ value เป็น string หรือ list-of-strings:
"c33": "connect id:334D335C3138",
คำสั่ง c33 จะถูกแทนที่ด้วย connect id:334D335C3138
"test": ["mount", ".", "exec", "import test"],
คำสั่ง test จะถูกแทนที่ด้วย mount . exec "import test"
ทางลัดยังรับอาร์กิวเมนต์ได้ด้วย ตัวอย่างเช่น:
"multiply x=4 y=7": "eval x*y",
การรัน mpremote multiply 3 7 จะตั้งค่า x และ y เป็นตัวแปรบนอุปกรณ์ แล้วประเมินนิพจน์ x*y
ตัวอย่าง config.py อาจมีลักษณะดังนี้:
commands = {
"c33": "connect id:334D335C3138", # Connect to a specific device by ID.
"bl": "bootloader", # Shorter alias for bootloader.
"double x=4": "eval x*2", # x is an argument, with default 4
"wl_scan": ["exec", """
import network
wl = network.WLAN()
wl.active(1)
for ap in wl.scan():
print(ap)
""",], # Print out nearby WiFi networks.
"wl_ipconfig": [
"exec",
"import network; sta_if = network.WLAN(network.WLAN.IF_STA); print(sta_if.ipconfig('addr4'))",
], # Print ip address of station interface.
"test": ["mount", ".", "exec", "import test"], # Mount current directory and run test.py.
"demo": ["run", "path/to/demo.py"], # Execute demo.py on the device.
}
ตัวอย่าง¶
mpremote
เชื่อมต่อกับอุปกรณ์ตัวแรกที่พร้อมใช้งานและรันคำสั่ง repl โดยปริยาย
mpremote a1
เชื่อมต่อกับอุปกรณ์ที่ /dev/ttyACM1 (Linux) และรันคำสั่ง repl โดยปริยาย ดู shortcuts ด้านบน
mpremote c1
เชื่อมต่อกับอุปกรณ์ที่ COM1 (Windows) และรันคำสั่ง repl โดยปริยาย ดู shortcuts ด้านบน
mpremote connect /dev/ttyUSB0
ระบุอุปกรณ์ที่ต้องการเชื่อมต่ออย่างชัดเจน และเช่นเดิม รันคำสั่ง repl โดยปริยาย
mpremote a1 ls
เชื่อมต่อกับอุปกรณ์ที่ /dev/ttyACM1 แล้วรันคำสั่ง ls
เทียบเท่ากับ mpremote connect /dev/ttyACM1 fs ls
mpremote exec "import micropython; micropython.mem_info()"
รันคำสั่ง Python ที่ระบุและแสดงผลลัพธ์ ซึ่งเทียบเท่ากับการพิมพ์คำสั่งที่พรอมต์ REPL
mpremote eval 1/2 eval 3/4
ประเมินค่าแต่ละนิพจน์ตามลำดับและพิมพ์ผลลัพธ์
mpremote a0 eval 1/2 a1 eval 3/4
ประเมินค่า 1/2 บนอุปกรณ์ที่ /dev/ttyACM0 จากนั้น 3/4 บนอุปกรณ์ที่ /dev/ttyACM1 โดยพิมพ์ผลลัพธ์แต่ละรายการ
mpremote resume exec "print_state_info()" soft-reset
เชื่อมต่อกับอุปกรณ์โดยไม่ทริกเกอร์ soft reset และรันฟังก์ชัน print_state_info() (เช่น เพื่อดูข้อมูลเกี่ยวกับสถานะโปรแกรมปัจจุบัน) จากนั้นทริกเกอร์ soft reset
mpremote reset sleep 0.5 bootloader
Hard-reset อุปกรณ์ รอ 500ms ให้พร้อม จากนั้นเข้าสู่ bootloader
mpremote cp utils/driver.py :utils/driver.py + run test.py
อัปเดตสำเนา utils/driver.py บนอุปกรณ์ จากนั้นรันสคริปต์ test.py บนอุปกรณ์จากเครื่องในเครื่อง โดย test.py จะไม่ถูกคัดลอกไปยังระบบไฟล์ของอุปกรณ์ แต่รันจาก RAM
mpremote cp utils/driver.py :utils/driver.py + exec "import app"
อัปเดตสำเนา utils/driver.py บนอุปกรณ์ จากนั้นรัน app.py บนอุปกรณ์
นี่คือเวิร์กโฟลว์การพัฒนาที่ใช้บ่อยในการอัปเดตไฟล์เดียวแล้วรีสตาร์ทโปรแกรม ในสถานการณ์นี้ main.py บนอุปกรณ์ของคุณควรมี import app ด้วย
mpremote cp utils/driver.py :utils/driver.py + soft-reset repl
อัปเดตสำเนา utils/driver.py บนอุปกรณ์ จากนั้นทริกเกอร์ soft-reset เพื่อรีสตาร์ทโปรแกรม แล้วติดตามผลลัพธ์ผ่านคำสั่ง repl
mpremote cp -r utils/ :utils/ + soft-reset repl
เช่นเดียวกับข้างต้น แต่อัปเดตทั้งไดเรกทอรี utils ก่อน
mpremote mount .
Mount ไดเรกทอรีในเครื่องปัจจุบันที่ /remote บนอุปกรณ์และเริ่มเซสชัน repl ซึ่งจะใช้ /remote เป็นไดเรกทอรีทำงาน
mpremote mount . exec "import demo"
หลังจาก mount ไดเรกทอรีในเครื่องปัจจุบันแล้ว รัน demo.py จากไดเรกทอรีที่ mount
mpremote mount app run test.py
หลังจาก mount ไดเรกทอรีในเครื่อง app เป็น /remote บนอุปกรณ์แล้ว รัน test.py จากไดเรกทอรีปัจจุบันของ host โดยไม่คัดลอกไปยังระบบไฟล์
mpremote mount . repl --inject-code "import demo"
หลังจาก mount ไดเรกทอรีในเครื่องปัจจุบัน รัน demo.py จากไดเรกทอรีที่ mount ทุกครั้งที่กด Ctrl-J
คุณจะต้องกด Ctrl-D ก่อนเพื่อรีเซ็ตสถานะตัวแปลภาษา (ซึ่งจะคง mount ไว้) ก่อนกด Ctrl-J เพื่อ re-import demo.py
mpremote mount app repl --inject-file demo.py
เช่นเดียวกับข้างต้น แต่รันเนื้อหาของไฟล์ demo.py ในเครื่องที่ REPL ทุกครั้งที่กด Ctrl-K เช่นเดียวกับข้างต้น ให้ใช้ Ctrl-D เพื่อรีเซ็ตสถานะตัวแปลภาษาก่อน
mpremote cat boot.py
แสดงเนื้อหาของ boot.py บนอุปกรณ์
mpremote edit utils/driver.py
แก้ไข utils/driver.py บนอุปกรณ์โดยใช้ $EDITOR ในเครื่องของคุณ
mpremote cp :main.py .
คัดลอก main.py จากอุปกรณ์ไปยังไดเรกทอรีในเครื่อง
mpremote cp main.py :
คัดลอก main.py จากไดเรกทอรีในเครื่องไปยังอุปกรณ์
mpremote cp :a.py :b.py
คัดลอก a.py บนอุปกรณ์ไปเป็น b.py บนอุปกรณ์
mpremote cp -r dir/ :
คัดลอกไดเรกทอรีในเครื่อง dir ไปยังอุปกรณ์ระยะไกลแบบ recursive
mpremote cp a.py b.py : + repl
คัดลอก a.py และ b.py จากไดเรกทอรีในเครื่องไปยังอุปกรณ์ จากนั้นรันคำสั่ง repl
mpremote mip install aioble
ติดตั้งแพ็กเกจ aioble จาก micropython-lib ไปยังอุปกรณ์ ดู การจัดการแพ็กเกจ
mpremote mip install github:org/repo@branch
ติดตั้งแพ็กเกจจาก branch ที่ระบุที่ org/repo บน GitHub ไปยังอุปกรณ์ ดู การจัดการแพ็กเกจ
mpremote mip install gitlab:org/repo@branch
ติดตั้งแพ็กเกจจาก branch ที่ระบุที่ org/repo บน GitLab ไปยังอุปกรณ์ ดู การจัดการแพ็กเกจ
mpremote mip install --target /flash/third-party functools
ติดตั้งแพ็กเกจ functools จาก micropython-lib ไปยังไดเรกทอรี /flash/third-party บนอุปกรณ์ ดู การจัดการแพ็กเกจ