We need to read up to 32 serial ports in parallel; asynchronous 16 bytes/port, continuously. This can not be done with the old NI Serial Port Initialize/Read VIs as they are full of globals and can not be run reentrantly. We have been trying to implement the reads using VISA.
We have succeeded in reading various ports singularly. That is where our success ends.
The posts on the developer zone suggest that many people are having many difficulties with VISA, and I have not found an example implementing parallel reads.
To start with, I have these questions:
- NI Spy lists an attribute which checks "the bytes available at the global buffer". Is there a single global buffer, or one per VISA reso
urce?
- Why does VISA always return a warning [1073676294 ] when reading normally on a single port? We are requesting 16 bytes, and reading 16 bytes, why the warning?
- Why do two ports read independently BUT NOT in Parallel?
- Why do the bytes at a given serial port run away after another port times out when trying to read in parallel? (When trying to initiate a read on ASRL1::INSTR and ASRL8::INSTR, com port 8 times out and the apparent bytes available on com port 1 seem to back up, climbing into the many hundreds).
- Can we force the parallel reads to each run on a different thread (NI Spy says that the multiple calls are running on the same thread even though multithreading is enabled)?
- What EXACTLY does "allow undefined names" mean? Should this be selected or not?
- With regard to VISA CLASS, should we be using Serial INSTR? Or the default generic INSTR?
And is there an example of an implementation using parallel asynchronous [continuous] reads? Is this ev
en doable?
Lawrence M. David Jr.
Certified LabVIEW Architect
cell: 516.819.9711
http://www.aleconsultants.com
larry@aleconsultants.com