Missing support for multi-channel counter reads in `stream_readers` and `task`
Note: this is a VERY uncommon use-case. We can probably ignore this for a bit, and nobody would notice. We didn't for a long time!
DAQmx supports having multiple Counter Input channels in a single task (note: these may not be 100% correct, and I may be missing some. We'll need to do a little digging to get the full landscape of what is possible):
- 9361 supports multiple counters in a single task doing a double-datatype read, e.g. multiple duty cycle reads
- X Series supports multiple pulse counters in a single task
I suspect the channel_collection APIs handle this already. It doesn't look like task.read supports this. double probably work as-is, but pulses definitely not. And there are no stream_reader (ChannelReaderBase) classes that are appropriate. We have a CounterReader, but that should probably be CounterSingleChannelReader (with continued support using the old name and deprecation), and we don't have a CounterMulChannelReader.
Just thought I'd mention my use-case:
I have an application requiring 1 - 4 edge counters clocked off AO's sample clock (to measure photon pulses over a raster scanning microscope pixel period) and would use the CounterMultiChannelReader if it existed. Currently I am setting up multiple tasks, looping through setting up stream readers, looping through starting them, looping through gathering data, .. etc. Not 'pretty' but it works. The data rate is not too intense so looping is tolerable.