3.6.1 PICSimLab Python rcontrol Wrapper Library
The PICSimLab python rcontrol wrapper library is a Python library for controlling the PICSimLab simulator using the rcontrol remote control protocol.
They can be installed using pip:
pip install PICSimlab_rcontrol
Python code example:
#use python -u hardware_list.py | tee hardware.md import time,re import subprocess from pathlib import Path from PICSimLab_rcontrol import PICSimLab_rcontrol def run_picsimlab(board="", processor="", file_path=""): exe_path = r"/usr/bin/picsimlab" if len(board) > 0: if len(processor) > 0: if len(file_path) > 0: if not file_path.is_file(): raise print(f"File not found {file_path}") return subprocess.Popen([exe_path, board, processor, str(file_path)], stdout=subprocess.DEVNULL) else: return subprocess.Popen([exe_path, board, processor], stdout=subprocess.DEVNULL) else: return subprocess.Popen([exe_path, board], stdout=subprocess.DEVNULL) else: return subprocess.Popen(exe_path, stdout=subprocess.DEVNULL) process= run_picsimlab() try: time.sleep(2) with PICSimLab_rcontrol(5000) as rc: rc.cmd_blist() line = rc.get_cmd_response().splitlines()[1] boards = [item.strip() for item in line.split(",") if item.strip()] rc.cmd_exit() process.wait() for board in boards: print(f"## {board}") process= run_picsimlab(board) time.sleep(2) with PICSimLab_rcontrol(5000) as rc: rc.cmd_buclist() line = rc.get_cmd_response().splitlines()[1].split(",") processors = [item for item in line if item] print(" - Processors:",end="") for proc in processors: print(f" {proc}",end=", ") print("") rc.cmd_bblist() line = rc.get_cmd_response().splitlines()[1].split(",") backends = [item for item in line if item] print(" - Backends:",end="") for proc in backends: print(f" {proc}",end=", ") print("") rc.cmd_bdlist() line = rc.get_cmd_response().splitlines()[1].split(",") debuggers = [item for item in line if item] print(" - Debuggers:",end="") for proc in debuggers: print(f" {proc}",end=", ") print("") rc.cmd_bilist() line = rc.get_cmd_response().splitlines()[1].split(",") ides = [item for item in line if item] print(" - IDEs:",end="") for proc in ides: print(f" {proc}",end=", ") print("") rc.cmd_exit() process.wait() except ConnectionError as e: print(f"ConnectionError: {e}")