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 list

  • rfc2217://<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 เพื่อเลียนแบบพฤติกรรมของ unix rm -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 เริ่มต้นคือชื่อต้นทางต่อท้ายด้วย .romfs

  • romfs [-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 list

  • a0, a1, a2, a3: ชื่อย่อสำหรับ connect /dev/ttyACMn

  • u0, u1, u2, u3: ชื่อย่อสำหรับ connect /dev/ttyUSBn

  • c0, c1, c2, c3: ชื่อย่อสำหรับ connect COMn

  • cat, 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 บนอุปกรณ์ ดู การจัดการแพ็กเกจ