| @@ -7,16 +7,43 @@ from pyftdi.pyftdi.usbtools import * | |||||
| from . import util | from . import util | ||||
| from .event import event | 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_open = event.Event('Called when the device has been opened') | ||||
| on_close = event.Event('Called when the device has been closed') | 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_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') | 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 | @staticmethod | ||||
| def find_all(): | def find_all(): | ||||
| devices = [] | devices = [] | ||||
| @@ -29,6 +56,8 @@ class USBDevice(object): | |||||
| return devices | return devices | ||||
| def __init__(self, vid=FTDI_VENDOR_ID, pid=FTDI_PRODUCT_ID, serial=None, description=None): | def __init__(self, vid=FTDI_VENDOR_ID, pid=FTDI_PRODUCT_ID, serial=None, description=None): | ||||
| Device.__init__(self) | |||||
| self._vendor_id = vid | self._vendor_id = vid | ||||
| self._product_id = pid | self._product_id = pid | ||||
| self._serial_number = serial | self._serial_number = serial | ||||
| @@ -37,7 +66,7 @@ class USBDevice(object): | |||||
| self._device = Ftdi() | self._device = Ftdi() | ||||
| self._running = False | self._running = False | ||||
| self._read_thread = USBDevice.ReadThread(self) | |||||
| self._read_thread = Device.ReadThread(self) | |||||
| def open(self, baudrate=BAUDRATE, interface=0, index=0): | def open(self, baudrate=BAUDRATE, interface=0, index=0): | ||||
| self._running = True | self._running = True | ||||
| @@ -115,37 +144,17 @@ class USBDevice(object): | |||||
| return ret | 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 | BAUDRATE = 9600 | ||||
| def __init__(self): | def __init__(self): | ||||
| pass | |||||
| Device.__init__(self) | |||||
| def __del__(self): | def __del__(self): | ||||
| pass | pass | ||||
| def open(self, port, baudrate=BAUDRATE): | |||||
| def open(self, baudrate=BAUDRATE, interface="COM1", index=0): | |||||
| pass | pass | ||||
| def close(self): | def close(self): | ||||