From 5b5271e98c6d7f0ffea9d6b3fbf2cec43d283d64 Mon Sep 17 00:00:00 2001 From: Tat-Chee Wan (USM) Date: Tue, 1 Mar 2011 09:10:13 +0800 Subject: Imported nxt-python baseline (v2.1.0) --- nxt-python-fantom/nxt/locator.py | 57 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 nxt-python-fantom/nxt/locator.py (limited to 'nxt-python-fantom/nxt/locator.py') diff --git a/nxt-python-fantom/nxt/locator.py b/nxt-python-fantom/nxt/locator.py new file mode 100644 index 0000000..4adc680 --- /dev/null +++ b/nxt-python-fantom/nxt/locator.py @@ -0,0 +1,57 @@ +# nxt.locator module -- Locate LEGO Minstorms NXT bricks via USB or Bluetooth +# Copyright (C) 2006, 2007 Douglas P Lau +# Copyright (C) 2009 Marcus Wanner +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +class BrickNotFoundError(Exception): + pass + +class NoBackendError(Exception): + pass + +def find_bricks(host=None, name=None, silent=False): + """Used by find_one_brick to look for bricks ***ADVANCED USERS ONLY***""" + + try: + import usbsock + usb_available = True + socks = usbsock.find_bricks(host, name) + for s in socks: + yield s + except ImportError: + usb_available = False + import sys + if not silent: print >>sys.stderr, "USB module unavailable, not searching there" + + try: + import bluesock + try: + socks = bluesock.find_bricks(host, name) + for s in socks: + yield s + except (bluesock.bluetooth.BluetoothError, IOError): #for cases such as no adapter, bluetooth throws IOError, not BluetoothError + pass + except ImportError: + import sys + if not silent: print >>sys.stderr, "Bluetooth module unavailable, not searching there" + if not usb_available: + raise NoBackendError("Neither USB nor Bluetooth could be used! Did you install PyUSB or PyBluez?") + + +def find_one_brick(host=None, name=None, silent=False): + """Use to find one brick. After it returns a usbsock object or a bluesock +object, it automatically connects to it. The host and name args limit +the search to a given MAC or brick name. Set silent to True to stop +nxt-python from printing anything during the search.""" + for s in find_bricks(host, name, silent): + return s.connect() + raise BrickNotFoundError -- cgit v1.2.3