You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							49 lines
						
					
					
						
							1.3 KiB
						
					
					
				
			
		
		
	
	
							49 lines
						
					
					
						
							1.3 KiB
						
					
					
				#!/usr/bin/env python3
 | 
						|
 | 
						|
import os
 | 
						|
import sys
 | 
						|
import time
 | 
						|
import select
 | 
						|
 | 
						|
sys.path.append(os.path.join(os.path.dirname(os.path.realpath(__file__)), ".."))
 | 
						|
from panda import Panda
 | 
						|
 | 
						|
setcolor = ["\033[1;32;40m", "\033[1;31;40m"]
 | 
						|
unsetcolor = "\033[00m"
 | 
						|
 | 
						|
if __name__ == "__main__":
 | 
						|
  while True:
 | 
						|
    try:
 | 
						|
      port_number = int(os.getenv("PORT", 0))
 | 
						|
      claim = os.getenv("CLAIM") is not None
 | 
						|
 | 
						|
      serials = Panda.list()
 | 
						|
      if os.getenv("SERIAL"):
 | 
						|
        serials = [x for x in serials if x==os.getenv("SERIAL")]
 | 
						|
 | 
						|
      pandas = list([Panda(x, claim=claim) for x in serials])
 | 
						|
 | 
						|
      if not len(pandas):
 | 
						|
        sys.exit("no pandas found")
 | 
						|
 | 
						|
      if os.getenv("BAUD") is not None:
 | 
						|
        for panda in pandas:
 | 
						|
          panda.set_uart_baud(port_number, int(os.getenv("BAUD")))
 | 
						|
 | 
						|
      while True:
 | 
						|
        for i, panda in enumerate(pandas):
 | 
						|
          while True:
 | 
						|
            ret = panda.serial_read(port_number)
 | 
						|
            if len(ret) > 0:
 | 
						|
              sys.stdout.write(setcolor[i] + ret.decode('ascii') + unsetcolor)
 | 
						|
              sys.stdout.flush()
 | 
						|
            else:
 | 
						|
              break
 | 
						|
          if select.select([sys.stdin], [], [], 0) == ([sys.stdin], [], []):
 | 
						|
            ln = sys.stdin.readline()
 | 
						|
            if claim:
 | 
						|
              panda.serial_write(port_number, ln)
 | 
						|
          time.sleep(0.01)
 | 
						|
    except:
 | 
						|
      print("panda disconnected!")
 | 
						|
      time.sleep(0.5);
 | 
						|
 |