Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions hardwarelibrary/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,6 @@
import hardwarelibrary.oscilloscope
import hardwarelibrary.motion

# import hardwarelibrary.cameras

# import sources #TODO: Not much to see here yet
# import hardwarelibrary.cameras
# import hardwarelibrary.sources
4 changes: 2 additions & 2 deletions hardwarelibrary/daq/labjackdevice.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@
class LabjackDevice(PhysicalDevice, AnalogIOProtocol, DigitalIOProtocol):
classIdVendor = 0x0cd5
classIdProduct = 0x003
def __init__(self, serialNumber="*"):
super().__init__(serialNumber, idProduct=0x003, idVendor=0x0cd5)
def __init__(self, serialNumber="*", idProduct=0x003, idVendor=0x0cd5):
super().__init__(serialNumber, idProduct=idProduct, idVendor=idVendor)
self.dev = None

def doInitializeDevice(self):
Expand Down
2 changes: 1 addition & 1 deletion hardwarelibrary/devicemanager.py
Original file line number Diff line number Diff line change
Expand Up @@ -218,7 +218,7 @@ def usbDeviceConnected(self, usbDevice):
# This may throw if incompat:
# deviceInstanceible
try:
candidateClass(serialNumber=descriptor.serialNumber,
deviceInstance = candidateClass(serialNumber=descriptor.serialNumber,
idProduct=descriptor.idProduct,
idVendor=descriptor.idVendor)
deviceInstance.initializeDevice()
Expand Down
6 changes: 6 additions & 0 deletions hardwarelibrary/spectrometers/oceaninsight.py
Original file line number Diff line number Diff line change
Expand Up @@ -815,6 +815,12 @@ class USB2000Plus(USB4000_2000Plus):
def __init__(self, serialNumber=None, idProduct:int = None, idVendor:int = None):
USB4000_2000Plus.__init__(self, serialNumber=serialNumber, idProduct=idProduct, idVendor=idVendor, model="USB2000+")

class SAS(USB4000_2000Plus):
classIdProduct = 0x1006

def __init__(self, serialNumber=None, idProduct:int = None, idVendor:int = None):
USB4000_2000Plus.__init__(self, serialNumber=serialNumber, idProduct=idProduct, idVendor=idVendor)


class DebugSpectro:
class Emitter(NamedTuple):
Expand Down
9 changes: 6 additions & 3 deletions hardwarelibrary/tests/testIntegraDevice.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,10 @@ class TestIntegraDevice(unittest.TestCase):
def setUp(self):
self.device = IntegraDevice()
self.assertIsNotNone(self.device)
self.device.initializeDevice()
try:
self.device.initializeDevice()
except Exception as err:
self.skipTest("No IntegraDevice connected")

def tearDown(self):
self.device.shutdownDevice()
Expand All @@ -39,8 +42,8 @@ def setUp(self):
self.port = USBPort(idVendor=0x1ad5, idProduct=0x0300, interfaceNumber=0, defaultEndPoints=(1,2))
try:
self.port.open()
except:
raise (unittest.SkipTest("No devices connected"))
except Exception as err:
self.skipTest("No IntegraDevice connected")

def tearDown(self):
self.port.close()
Expand Down
49 changes: 21 additions & 28 deletions hardwarelibrary/tests/testIntellidrive.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ def setUp(self):
self.portPath = None
ports = serial.tools.list_ports.comports()
for port in ports:
if port.vid == 0x0403 and port.pid == 0x6001: # Sutter Instruments
if port.vid == 0x0403 and port.pid == 0x6001:
self.portPath = "/dev/cu.usbserial-{0}".format(serialNumber)

if self.portPath is None:
Expand Down Expand Up @@ -63,6 +63,10 @@ def testPySerialPortHome(self):


class TestIntellidriveDeviceWithSerialPort(unittest.TestCase):
def setUp(self):
ports = SerialPort.matchPorts(serialNumber=serialNumber, idVendor=0x0403, idProduct=0x6001)
if not ports:
self.skipTest("No Intellidrive connected")

def testPort(self):
port = SerialPort.matchPorts(serialNumber=serialNumber, idVendor=0x0403, idProduct = 0x6001)
Expand Down Expand Up @@ -126,48 +130,37 @@ def testHomeWithCommands(self):
port.close()

class TestIntellidrivePhysicalDevice(unittest.TestCase):
def setUp(self):
try:
self.dev = IntellidriveDevice(serialNumber=serialNumber)
self.dev.initializeDevice()
except Exception:
self.skipTest("No Intellidrive connected")

def tearDown(self):
self.dev.shutdownDevice()

def testDeviceCreate(self):
self.assertIsNotNone(IntellidriveDevice(serialNumber="AH06UKI3"))

def testDeviceInitialize(self):
dev = IntellidriveDevice(serialNumber=serialNumber)
self.assertIsNotNone(dev)
dev.initializeDevice()
dev.shutdownDevice()
self.assertIsNotNone(self.dev)

def testDeviceHome(self):
dev = IntellidriveDevice(serialNumber=serialNumber)
self.assertIsNotNone(dev)
dev.initializeDevice()
dev.doHome()
dev.shutdownDevice()
self.dev.doHome()

def testDeviceMove(self):
dev = IntellidriveDevice(serialNumber=serialNumber)
self.assertIsNotNone(dev)
dev.initializeDevice()
dev.doMoveTo(1000)
dev.shutdownDevice()
self.dev.doMoveTo(1000)

def testOrientation(self):
dev = IntellidriveDevice(serialNumber=serialNumber)
self.assertIsNotNone(dev)
dev.initializeDevice()
print(dev.orientation())
dev.shutdownDevice()
print(self.dev.orientation())

def testSpinAround(self):
dev = IntellidriveDevice(serialNumber=serialNumber)
self.assertIsNotNone(dev)
dev.initializeDevice()

for angle in [0, 180, 360, 720]:
dev.moveTo(angle)
actualOrientation = dev.orientation()
self.dev.moveTo(angle)
actualOrientation = self.dev.orientation()
self.assertAlmostEqual(angle, actualOrientation, 2)

dev.shutdownDevice()


if __name__ == '__main__':
unittest.main()
9 changes: 6 additions & 3 deletions hardwarelibrary/tests/testLabjackU3.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,12 @@
class TestLabjackDevice(unittest.TestCase):
def setUp(self):
super().setUp()
self.device = LabjackDevice()
self.assertIsNotNone(self.device)
self.device.initializeDevice()
try:
self.device = LabjackDevice()
self.assertIsNotNone(self.device)
self.device.initializeDevice()
except Exception as err:
self.skipTest("No Labjack connected")

def tearDown(self):
super().tearDown()
Expand Down
8 changes: 7 additions & 1 deletion hardwarelibrary/tests/testLinearMotionDevice.py
Original file line number Diff line number Diff line change
Expand Up @@ -174,8 +174,14 @@ def setUp(self):

class TestRealSutterDeviceBase(BaseTestCases.TestLinearMotionDevice):
def setUp(self):
self.device = SutterDevice()

try:
self.device = SutterDevice()
except Exception as err:
self.skipTest("No Sutter device connected")

super().setUp()


if __name__ == '__main__':
unittest.main()
20 changes: 6 additions & 14 deletions hardwarelibrary/tests/testOscilloscope.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,34 +10,26 @@
from hardwarelibrary.oscilloscope import *

class TestTektronik(unittest.TestCase):

def testCreate(self):
def setUp(self) -> None:
self.device = OscilloscopeDevice()
self.assertIsNotNone(self.device)
try :
self.device.initializeDevice()
except Exception as err:
self.skipTest("No Tektronik connected")

def testInit(self):
self.device = OscilloscopeDevice()
self.device.initializeDevice()
def tearDown(self) -> None:
self.device.shutdownDevice()

def testGetWaveform(self):
self.device = OscilloscopeDevice()
self.device.initializeDevice()
self.device.getWaveform(Channels.CH1)
self.device.getWaveform(Channels.CH2)
self.device.shutdownDevice()

def testDisplayWaveform(self):
self.device = OscilloscopeDevice()
self.device.initializeDevice()
self.device.displayWaveforms([Channels.CH1, Channels.CH2])
self.device.shutdownDevice()

def testDisplayWaveform(self):
self.device = OscilloscopeDevice()
self.device.initializeDevice()
self.device.displayWaveforms([Channels.CH1, Channels.CH2])
self.device.shutdownDevice()


@unittest.skip("For understanding earlier on, not necessary anymore")
Expand Down
61 changes: 36 additions & 25 deletions hardwarelibrary/tests/testPhysicalDevice.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,21 +33,21 @@ class BaseTestCases:
class TestPhysicalDeviceBase(unittest.TestCase):
def setUp(self):
super().setUp()
DeviceManager().updateConnectedDevices()
# DeviceManager().updateConnectedDevices()

self.device = None
self.isRunning = False
self.notificationReceived = None

DeviceManager().destroy()
# DeviceManager().destroy()
NotificationCenter().destroy()

def tearDown(self):
if self.device is not None:
self.device.shutdownDevice()
self.device = None

DeviceManager().removeAllDevices()
# DeviceManager().removeAllDevices()
super().tearDown()

def testIsRunning(self):
Expand Down Expand Up @@ -191,7 +191,11 @@ def setUp(self):
class TestIntellidrivePhysicalDevice(BaseTestCases.TestPhysicalDeviceBase):
def setUp(self):
super().setUp()
self.device = IntellidriveDevice("AH06UKI3")
try:
self.device = IntellidriveDevice("AH06UKI3")
self.device.initializeDevice()
except Exception as err:
self.skipTest("No Intellidrive connected")

class TestSpectrometerPhysicalDevice(BaseTestCases.TestPhysicalDeviceBase):
def setUp(self):
Expand All @@ -200,34 +204,34 @@ def setUp(self):
self.device = DeviceManager().anySpectrometerDevice()
self.assertIsNotNone(self.device)
except Exception as err:
raise (unittest.SkipTest("No spectrometer connected"))
self.skipTest("No Spectro connected")

class TestPowerMeterPhysicalDevice(BaseTestCases.TestPhysicalDeviceBase):
def setUp(self):
super().setUp()
try:
self.device = IntegraDevice()
self.assertIsNotNone(self.device)
self.device.initializeDevice()
except Exception as err:
raise (unittest.SkipTest("No powermeter connected"))
self.skipTest("No powermeter connected")

class TestTektronikPhysicalDevice(BaseTestCases.TestPhysicalDeviceBase):
def setUp(self):
super().setUp()
try:
self.device = OscilloscopeDevice()
self.assertIsNotNone(self.device)
self.device.initializeDevice()
except Exception as err:
raise (unittest.SkipTest("No oscilloscope connected"))
self.skipTest("No Oscilloscope connected")

class TestEchoPhysicalDevice(BaseTestCases.TestPhysicalDeviceBase):
def setUp(self):
super().setUp()
try:
self.device = EchoDevice()
self.assertIsNotNone(self.device)
self.device.initializeDevice()
except Exception as err:
raise (unittest.SkipTest("No ECHO connected"))
self.skipTest("No ECHO connected")

def testEchoCommands(self):
self.device.initializeDevice()
Expand All @@ -245,7 +249,7 @@ def setUp(self):
self.device = DebugEchoDevice()
self.assertIsNotNone(self.device)
except Exception as err:
raise (unittest.SkipTest("No ECHO connected"))
self.skipTest("No ECHO connected")


class TestCameraPhysicalDevice(BaseTestCases.TestPhysicalDeviceBase):
Expand All @@ -255,7 +259,7 @@ def setUp(self):
self.device = OpenCVCamera()
self.assertIsNotNone(self.device)
except Exception as err:
raise (unittest.SkipTest("No Facetime Camera connected"))
self.skipTest("No Facetime connected")

class TestPhysicalDeviceCompatibilityClasses(unittest.TestCase):
def testGetDeviceClasses(self):
Expand Down Expand Up @@ -287,26 +291,33 @@ def testGetAllUSBVendorProductWithSpectrometers(self):
usbIds = getAllUSBIds(Spectrometer)
allIdVendors = set([ usbId[0] for usbId in usbIds ])
self.assertTrue(0x2457 in allIdVendors)
self.assertTrue(0x0bd7 in allIdVendors)
self.assertTrue(debugClassIdVendor not in allIdVendors)

def testGetConnectedDevices(self):
devices = PhysicalDevice.connectedDevices()
for idVendor, idProduct, possibleClasses in devices:
print("{0:x} {1:x} {2}".format(idVendor, idProduct, possibleClasses))
try:
devices = PhysicalDevice.connectedDevices()
for idVendor, idProduct, possibleClasses in devices:
print("{0:x} {1:x} {2}".format(idVendor, idProduct, possibleClasses))
except Exception:
self.skipTest("Unable to enumerate connected devices")

def testGetStellarNetDevices(self):
devices = PhysicalDevice.connectedDevices()
try:
devices = PhysicalDevice.connectedDevices()
except Exception:
self.skipTest("Unable to enumerate connected devices")
if len(devices) == 0:
self.skipTest("No devices connected")
self.assertEqual(len(devices), 1)

def testInstantiateStellarNetDevice(self):
# devices = PhysicalDevice.connectedDevices()
# for idVendor, idProduct, possibleClasses in devices:
# print("{0:x} {1:x} {2}".format(idVendor, idProduct, possibleClasses))
StellarNet.loadFirmwareOnConnectedDevices()
dev = StellarNet()
self.assertIsNotNone(dev)
dev.display()
try:
StellarNet.loadFirmwareOnConnectedDevices()
dev = StellarNet()
self.assertIsNotNone(dev)
dev.display()
except Exception:
self.skipTest("No StellarNet connected")

if __name__ == '__main__':
unittest.main()
Loading