UniNE-CHYN/thorpy

Error in discover_stages

aveekchandra opened this issue · 1 comments

I have been trying to interface Thorlabs APT controller (TDC001) using thorpy_master. I have plugged and unplugged the device but I still get the same error message (see below) in the discovery_stages inside thorpy.comm.
I have printed the serial ports (<print(serial_ports)>) in discovery_stages and you can see the controller has been detected as 'Brushed Motor Controller'. However, when I do print port_candidates it gives a null array. While trying several times, once or twice it returned the correct port_candidates at the print-out but returned null soon after. Please advise.

Output messages with error:
[('/dev/ttyS4', 'n/a', {}), ('/dev/ttyUSB0', 'Brushed Motor Controller', {'VID:PID': '0403:FAF0', 'SER': '27003927', 'LOCATION': '1-1'})] ---> <print(serial_ports)>
[] ----> print(port_candidates)
Traceback (most recent call last):
File "test.py", line 6, in
stages = list(discover_stages())
File "/home/qitlab/anaconda3/lib/python3.7/site-packages/thorpy/comm/discovery.py", line 28, in discover_stages
assert len(port_candidates) == 1
AssertionError

replace the discover.py file with this code:

    from .port import Port
    from serial.tools.list_ports import comports
    import platform

    serial_ports = [
        (x[0], x[1], dict(y.split("=", 1) for y in x[2].split(" ") if "=" in y))
        for x in comports()
    ]

    if platform.system() == "Linux":
        port_candidates = [
            x
            for x in serial_ports
            if x[1] == "Brushed Motor Controller - Brushed Motor Controller"
        ]
        print(port_candidates)
    else:
        raise NotImplementedError(
            "Implement for platform.system()=={0}".format(platform.system())
        )

    assert len(port_candidates) == 1

    port = port_candidates[0]

    p = Port.create(port[0], port[2].get("SER", None))
    for stage in p.get_stages().values():
        yield stage


if __name__ == "__main__":
    print(list(discover_stages()))


# iManufacturer           1 Thorlabs
#    iProduct                2 APT DC Motor Controller
#    iSerial                 3 83856536

This works for me.