Multifunction DAQ

cancel
Showing results for 
Search instead for 
Did you mean: 

Why are two dynamic Digital I/O Channels not possible in DaqMX Base in OS X

I'm using Labview 7.1.1 with DaqMX Base 1.5 on Mac OS and a NIDAQ 6221 Board.



Since this M series board is not compatible with the Base Task Configuration Utility, I'm using dynamic read/writes.



My concern here is with Digital I/O. I want to open port 0 as an output and ports 1 and 2 as inputs as three independent tasks. Each task has only one channel, since each read/write operation is a single channel/single sample operation. I run Create Task/Create Channel/Start Task at the beginning of the program and then Stop Task/Clear Task at the end, with a large number of Read/Write Tasks in the middle to the three tasks. I'm using global variables to store the task information (so the initial Start Task VI writes to a global from its "Task Out" and the rest of the VIs reference this Task variable.



However, when I try to use Read Task or Write Task to any of the digital channels, I get error -200526 (Error -200526 occurred at Write cannot be performed because this version of DAQmx Write does not match the type of channels in the task.) or -200523 (Error -200523 occurred at Read cannot be performed because this version of DAQmxBase Read only returns data from a single channel, and there are multiple channels in the task.)



However, if I remove 2 of the digital I/O tasks from the program (leaving only one), that one operates perfectly, as expected. When I put 2 or more digital I/O tasks in I get this error and the program will not read write.



Attached is a small test program that should alternate reading/writing values but instead displays this error.



Thanks
0 Kudos
Message 1 of 3
(3,493 Views)
Here's a VI that I wrote that successful completes what I wish to do, but runs too slowly for the data input.
0 Kudos
Message 2 of 3
(3,470 Views)
Hello,

This is a known issue. It you were using the same port for acquiring and reading, you could configure an output task and read from it. What I mean is that you build a task to write digital data on the port, but also insert a read VI in the task because it is possible to read from an output task.
This will allow you to capture data in and mask out the lines that you don't need.
Hope it helps.
0 Kudos
Message 3 of 3
(3,441 Views)