Sounds like it's a job for QSocketNotifier.
It's really just one device, the Aardvark device, but different address to read using that device.

It still looks like it locks up after a while and doesn't work. Could this be a stack issue?

It just stops decoding, even though I can see the reads being done. I see the packet signal getting emitted and the DecodePacket slot getting called by that emitted signal, via breakpoints...i put breakpoints in the run function and it's not doing anything. the Run function isn't going, but the stopped variable is false, so it should continue to run.

Any ideas?