| @@ -7,16 +7,43 @@ from pyftdi.pyftdi.usbtools import * | |||
| from . import util | |||
| from .event import event | |||
| class USBDevice(object): | |||
| FTDI_VENDOR_ID = 0x0403 | |||
| FTDI_PRODUCT_ID = 0x6001 | |||
| BAUDRATE = 115200 | |||
| class Device(object): | |||
| on_open = event.Event('Called when the device has been opened') | |||
| on_close = event.Event('Called when the device has been closed') | |||
| on_read = event.Event('Called when a line has been read from the device') | |||
| on_write = event.Event('Called when data has been written to the device') | |||
| def __init__(self): | |||
| pass | |||
| def __del__(self): | |||
| pass | |||
| class ReadThread(threading.Thread): | |||
| def __init__(self, device): | |||
| threading.Thread.__init__(self) | |||
| self._device = device | |||
| self._running = False | |||
| def stop(self): | |||
| self._running = False | |||
| def run(self): | |||
| self._running = True | |||
| while self._running: | |||
| try: | |||
| self._device.read_line() | |||
| except util.CommError, err: | |||
| self.stop() | |||
| time.sleep(0.25) | |||
| class USBDevice(Device): | |||
| FTDI_VENDOR_ID = 0x0403 | |||
| FTDI_PRODUCT_ID = 0x6001 | |||
| BAUDRATE = 115200 | |||
| @staticmethod | |||
| def find_all(): | |||
| devices = [] | |||
| @@ -29,6 +56,8 @@ class USBDevice(object): | |||
| return devices | |||
| def __init__(self, vid=FTDI_VENDOR_ID, pid=FTDI_PRODUCT_ID, serial=None, description=None): | |||
| Device.__init__(self) | |||
| self._vendor_id = vid | |||
| self._product_id = pid | |||
| self._serial_number = serial | |||
| @@ -37,7 +66,7 @@ class USBDevice(object): | |||
| self._device = Ftdi() | |||
| self._running = False | |||
| self._read_thread = USBDevice.ReadThread(self) | |||
| self._read_thread = Device.ReadThread(self) | |||
| def open(self, baudrate=BAUDRATE, interface=0, index=0): | |||
| self._running = True | |||
| @@ -115,37 +144,17 @@ class USBDevice(object): | |||
| return ret | |||
| class ReadThread(threading.Thread): | |||
| def __init__(self, device): | |||
| threading.Thread.__init__(self) | |||
| self._device = device | |||
| self._running = False | |||
| def stop(self): | |||
| self._running = False | |||
| def run(self): | |||
| self._running = True | |||
| while self._running: | |||
| try: | |||
| self._device.read_line() | |||
| except util.CommError, err: | |||
| self.stop() | |||
| time.sleep(0.25) | |||
| class SerialDevice(object): | |||
| class SerialDevice(Device): | |||
| BAUDRATE = 9600 | |||
| def __init__(self): | |||
| pass | |||
| Device.__init__(self) | |||
| def __del__(self): | |||
| pass | |||
| def open(self, port, baudrate=BAUDRATE): | |||
| def open(self, baudrate=BAUDRATE, interface="COM1", index=0): | |||
| pass | |||
| def close(self): | |||