How to handle timeouts¶

The default timeout is 2 seconds, but sometimes a command will timeout. If a command timeouts, the reply is None.

The most likely scenario to encounter a timeout is when acquiring spectra in a loop. For example, Chromation’s microspecgui is constantly acquiring frames of spectrum data:

frame = kit.captureFrame() # acquire a spectrum
counts = frame.pixels # the signal (in ADC counts) at each pixel

If this application runs for several hours, it is likely to drop a frame at least once. When that happens frame is None, raising the Exception: NoneType has no attribute pixels.

A single dropped frame is not a reason to exit the application. Instead of quitting, ignore the dropped frame and use the previous value stored in counts:

frame = kit.captureFrame()
if frame is not None: counts = frame.pixels