#!/usr/bin/env python3 import os import sys import time import mapid from serial.serialutil import SerialException mapid.load_dotenv() FIFO = os.environ.get("FIFO") def main(): global FIFO if len(sys.argv) == 2: FIFO = sys.argv[1] # Write PID FIFO_BRIDGE_PID_FILE = os.environ.get("FIFO_BRIDGE_PID_FILE") f = open(FIFO_BRIDGE_PID_FILE, "w") f.write(os.getpid()) f.close() del f # Create MAPIDCP object to communicate with the Arduino m = mapid.MAPIDCP() # Create FIFO os.mkfifo(FIFO) time.sleep(0.2) print("Created FIFO " + FIFO, file=sys.stderr) f = open(FIFO, "r") print("Opened FIFO for reading", file=sys.stderr) # Show greeting on screen m.cls() m.line(1) m.echo("fifo_bridge.py") m.line(2) m.echo(FIFO) # Main loop: read commands from FIFO and execute it keep_going = True while keep_going: try: line = f.readline().strip("\n") m._cmd(line) except KeyboardInterrupt: keep_going = False print() except SerialException: keep_going = False print("Caught a SerialException. Exiting now...", file=sys.stderr) # Remove FIFO and PID files os.remove(FIFO) os.remove(FIFO_BRIDGE_PID_FILE) print("Removed FIFO.", file=sys.stderr) if __name__ == "__main__": main()