def cli(**kwargs): """peliCAN is a simple tool for CAN communication via micropython board. The tool is being utilized for sending and receiving CAN frames. """ global _board _board = pyboard.Pyboard(kwargs['port'], baudrate=kwargs['baud'])
def do_restore(self, bak_name): self.enable_gui(False) self.progressBar.setMaximum(0) # indefinite biusy self.text.clear() self.text_out("Restoring backup {} ...\n".format(bak_name)) self.statusBar().showMessage("Restoring backup") port = self.get_port() try: self.setup["backup"]["filename"] = bak_name self.setup["backup"]["board"] = pyboard.Pyboard(port, baudrate=AMPY_BAUD, wait=1, rawdelay=0.1) self.setup["backup"]["ampy_files"] = ampy.files.Files( self.setup["backup"]["board"]) except (pyboard.PyboardError, Exception) as e: self.alert({ "title": "Error", "message": "Ampy backup error", "info": "Exception when opening\n" + str(port), "detail": str(e) }) return # run ampy in background self.thread = RestoreThread(self.setup["backup"]) self.thread.alert.connect(self.alert) self.thread.text.connect(self.text_out) self.thread.done.connect(self.on_restore_done) self.thread.start()
def cli(port, baud): """ampy - Adafruit MicroPython Tool Ampy is a tool to control MicroPython boards over a serial connection. Using ampy you can manipulate files on the board's internal filesystem and even run scripts. """ global _board _board = pyboard.Pyboard(port, baudrate=baud)
def restart(port): """Forces the board to reboot""" import ampy.pyboard as pyboard from time import sleep pyb = pyboard.Pyboard(port) pyb.enter_raw_repl() sleep(0.5) # CH test if this is needed pyb.exec('import machine; machine.reset()') pyb.close()
def cli(port, baud, delay): """ampy - Adafruit MicroPython Tool Ampy is a tool to control MicroPython boards over a serial connection. Using ampy you can manipulate files on the board's internal filesystem and even run scripts. """ global _board # On Windows fix the COM port path name for ports above 9 (see comment in # windows_full_port_name function). if platform.system() == 'Windows': port = windows_full_port_name(port) _board = pyboard.Pyboard(port, baudrate=baud, rawdelay=delay)
def run(): from ampy import pyboard try: board = pyboard.Pyboard(hardwareConfig()['port']) board.enter_raw_repl() board.exec_('from vgkits.wifi import provideInsecureWifi; provideInsecureWifi()') board.exit_raw_repl() except pyboard.PyboardError: print("Is cockle unplugged or in use by another program?") finally: board.close()
def upgrade(ls, version, file, designation): """ 更新豌豆派固件. VERSION是用于指定更新固件的版本。 如果不填写该参数测默认更新最新的固件版本。 更新最新的豌豆派固件: wonderbits upgrade 如果想查询可更新的固件列表,可使用--ls或-l: wonderbits upgrade -l 需要更新本地文件可以使用--file或-f: wonderbits upgrade -f my_firmware.bin """ if ls: wb_tool.upload.version_ls(hardware_str) elif file: wb_tool.upload.update_bin(None, file) elif designation: MyUtil.wb_log(designation, version, '\r\n') if version: wb_tool.upload.update_bin(designation, version) else: wb_tool.upload.update_bin(designation) else: _board = pyboard.Pyboard(MySerial.choose_serial(), baudrate=115200, rawdelay=2) board_files = files.Files(_board) version_val = board_files.version() _board.close() if '-' in version_val: hardware_str = version_val.split('-')[0] else: hardware_str = 'wonderbits' MyUtil.wb_log(hardware_str, '\n') if version is None: wb_tool.upload.update_bin(hardware_str) else: wb_tool.upload.update_bin(hardware_str, version)
def on_install_files(self): self.enable_gui(False) if not "ampy" in self.setup or not "files" in self.setup["ampy"]: self.text_out("No files to install\n") self.on_ampy_done(False) return self.text_out("Preparing to install files...\n") self.statusBar().showMessage("Installing files") port = self.get_port() try: self.setup["ampy"]["board"] = pyboard.Pyboard(port, baudrate=AMPY_BAUD, wait=1, rawdelay=0.1) self.setup["ampy"]["ampy_files"] = ampy.files.Files( self.setup["ampy"]["board"]) except (pyboard.PyboardError, Exception) as e: self.alert({ "title": "Error", "message": "Ampy error", "info": "Exception when opening\n" + str(port), "detail": str(e) }) return # run ampy in background self.setup["ampy"]["open"] = self.setup["open"] self.setup["ampy"]["config"] = self.config self.thread = AmpyThread(self.setup["ampy"]) self.thread.alert.connect(self.alert) self.thread.text.connect(self.text_out) self.thread.progress.connect(self.ampy_progress) self.thread.done.connect(self.on_ampy_done) self.thread.start()
def exec_file(): global _pyboard, _port, _cmd, _src result = None if _port is not None: _pyboard = pyboard.Pyboard(_port) _file_board = files.Files(_pyboard) if _cmd == 'run': if _src is not None: result = _file_board.run(_src) elif _cmd == 'ls': result = _file_board.ls() elif _cmd == 'get': if _src is not None: result = _file_board.get(_src) elif _cmd == 'put': if _src is not None: result = _file_board.put(_src) _pyboard = None _port = None _cmd = None _src = None _file_board = None print(result)
import time import functools import logging import sys from ampy import pyboard logging.basicConfig(level=logging.DEBUG) PORT = "/dev/ttyUSB0" BAUD = 115200 EXCLUDES = ['.pyc', '.txt', '.gitignore', '__pycache__'] logging.info("Connecting") pyb = pyboard.Pyboard(PORT, BAUD, 'micro', 'python') pyb.enter_raw_repl() logging.info("Connected") def run_text(text): logging.debug("Running: {}".format(repr(text))) output = pyb.exec_(text) logging.debug("Got: {}".format(repr(output))) #pyboard.stdout_write_bytes(output) time.sleep(0.1) return output