def loop(): global xb, telem, coord DEFAULT_COM_PORT = 'COM7' DEFAULT_BAUD_RATE = 57600 DEFAULT_ADDRESS = '\x10\x21' DEFAULT_PAN = 0x1001 if len(sys.argv) == 1: com = DEFAULT_COM_PORT baud = DEFAULT_BAUD_RATE addr = DEFAULT_ADDRESS elif len(sys.argv) == 4: com = sys.argv[1] baud = int(sys.argv[2]) addr = pack('>H', int(sys.argv[3], 16)) else: print "Wrong number of arguments. Must be: COM BAUD ADDR" sys.exit(1) ser = Serial(port=com, baudrate=baud) xb = XBee(ser, callback=rxCallback) print "Setting PAN ID to " + hex(DEFAULT_PAN) xb.at(command='ID', parameter=pack('>H', DEFAULT_PAN)) comm = CommandInterface(addr, txCallback) telem = TelemetryReader(addr, txCallback) kbint = KeyboardInterface(comm) coord = NetworkCoordinator(txCallback) comm.enableDebug() telem.setConsoleMode(True) telem.setFileMode(True) telem.writeHeader() coord.resume() comm.setSlewLimit(3.0) while True: try: c = None if (msvcrt.kbhit()): c = msvcrt.getch() kbint.process(c) time.sleep(0.01) #comm.sendPing() except: break telem.close() xb.halt() ser.close()
def loop(): global xb, telem, coord DEFAULT_COM_PORT = 'COM7' DEFAULT_BAUD_RATE = 57600 DEFAULT_ADDRESS = '\x10\x21' DEFAULT_PAN = 0x1001 if len(sys.argv) == 1: com = DEFAULT_COM_PORT baud = DEFAULT_BAUD_RATE addr = DEFAULT_ADDRESS elif len(sys.argv) == 4: com = sys.argv[1] baud = int(sys.argv[2]) addr = pack('>H', int(sys.argv[3], 16)) else: print "Wrong number of arguments. Must be: COM BAUD ADDR" sys.exit(1) ser = Serial(port = com, baudrate = baud) xb = XBee(ser, callback = rxCallback) print "Setting PAN ID to " + hex(DEFAULT_PAN) xb.at(command = 'ID', parameter = pack('>H', DEFAULT_PAN)) comm = CommandInterface(addr, txCallback) telem = TelemetryReader(addr, txCallback) kbint = KeyboardInterface(comm) coord = NetworkCoordinator(txCallback) comm.enableDebug() telem.setConsoleMode(True) telem.setFileMode(True) telem.writeHeader() coord.resume() comm.setSlewLimit(3.0) while True: try: c = None if( msvcrt.kbhit() ): c = msvcrt.getch() kbint.process(c) time.sleep(0.01) #comm.sendPing() except: break telem.close() xb.halt() ser.close()
def loop(): global xb, telem, coord DEFAULT_COM_PORT = 'COM7' DEFAULT_BAUD_RATE = 57600 DEFAULT_ADDRESS = '\x10\x21' DEFAULT_PAN = 0x1001 if len(sys.argv) == 1: com = DEFAULT_COM_PORT baud = DEFAULT_BAUD_RATE addr = DEFAULT_ADDRESS elif len(sys.argv) == 4: com = sys.argv[1] baud = int(sys.argv[2]) addr = pack('>H', int(sys.argv[3], 16)) else: print "Wrong number of arguments. Must be: COM BAUD ADDR" sys.exit(1) ser = Serial(port = com, baudrate = baud) xb = XBee(ser, callback = rxCallback) print "Setting PAN ID to " + hex(DEFAULT_PAN) xb.at(command = 'ID', parameter = pack('>H', DEFAULT_PAN)) comm = CommandInterface(addr, txCallback) telem = TelemetryReader(addr, txCallback) kbint = KeyboardInterface(comm) coord = NetworkCoordinator(txCallback) comm.enableDebug() telem.setConsoleMode(True) telem.setFileMode(True) telem.writeHeader() coord.resume() comm.setSlewLimit(3.0) while True: try: # Copied from code.activestate.com/recipes/134892/ # TODO: Find a way to avoid this blocking call fd = sys.stdin.fileno() old_settings = termios.tcgetattr(fd) try: tty.setraw(sys.stdin.fileno()) c = sys.stdin.read(1) finally: termios.tcsetattr(fd, termios.TCSADRAIN, old_settings) kbint.process(c) time.sleep(0.01) #comm.sendPing() except: break telem.close() xb.halt() ser.close()