I am using a PXIe-8431/16 module for serial communication with multiple devices. The PXIe-8880 controller is provisioned with NI Linux RT. I am using a C++ application that reads and writes to the ttys ports directly (as opposed to using the NI Visa library). I am having an issue with data corruption when trying to access multiple channels at the same time at 1562500 baud rate. Below is a more detailed description:
The external devices operate at different baud rates (115200, 921600, 1562500). I use NI MAX to set the baud rate of each channel. My C++ program also uses termios to configure each channel accordingly. All of this seems to be working for single channels. When the C++ program is single threaded I am able to communicate with a single device successfully (good data in and out for all baud rates). When I introduce multiple threads (one thread per channel), I am seeing data corruption at the 1562500 baud rate.
If I instantiate threads for each of the 921600 channels, communication is good on all channels. If I instantiate threads for each of the 1562500 channels, the first channel operates nominally, but all additional threads/channels have corrupted data.
With all of that being said, it is apparent that there is an issue with parallel access at higher baud rates. Is there anything else I can try to get this to work?