Skip to content

FLAMES sporadic data transfer error  #129

Open
@joellama

Description

@joellama

spectrometer and system information

model: USB2000PLUS
operating system: Ubuntu 20.10
python version: 3.8.5
python-seabreeze version: 1.3.0
installed-via: pip install seabreeze

current problem

I have a script that connects to 3 spectrometers and samples them every second to record the intensities. The problem is that everything works for a given amount of time (sometimes tens of minutes, sometimes hours) and then the code just hangs. On Ctrl+C I get a data transfer error.

minimal code example and error (very helpful if available)

from seabreeze.spectrometers import Spectrometer, list_devices
import time

def get_temperature(spec):
    spec.f.raw_usb_bus_access.raw_usb_write(
        struct.pack('<B', 0x6C), endpoint='primary_out')
    raw_bytes_response = spec.f.raw_usb_bus_access.raw_usb_read(
        endpoint='primary_in')
    temp = 0.003906 * float(struct.unpack("<h", raw_bytes_response[1:3])[0])
    return temp

if __name__ == '__main__':
    blue = Spectrometer.from_serial_number('FLMS18610')
    green = Spectrometer.from_serial_number('FLMS18611')
    red = Spectrometer.from_serial_number('FLMT05929')
    blue_exp_time = 380000
    green_exp_time = 80000
    red_exp_time = 500000
    blue.integration_time_micros(int(blue_exp_time))
    green.integration_time_micros(int(green_exp_time))
    red.integration_time_micros(int(red_exp_time))
    while True:
        blue_wavelengths = blue.wavelengths()
        blue_intensity = blue.intensities(correct_dark_counts=True,
                                          correct_nonlinearity=True)
        blue_temperature = get_temperature(blue)
        green_wavelengths = green.wavelengths()
        green_intensity = green.intensities(correct_dark_counts=True,
                                            correct_nonlinearity=True)
        green_temperature = get_temperature(green)
        red_wavelengths = red.wavelengths()
        red_intensity = red.intensities(correct_dark_counts=True,
                                        correct_nonlinearity=True)
        red_temperature = get_temperature(red)
        # Save the file redacted for brevity
        time.sleep(1)

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions