LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

DACmx Channel: Signal Type Property Node

Solved!
Go to solution

Hi,

 

I have created an array cluster, the cluster consisting of a string, DACmx channel selection menu and a boolean button.

 

The idea is that when user loads a plot, each plotname is populated into the array cluster.

The user then gets choose to which channel to output the waveforms

 

Generating the array cluster, I could do (block diagram below)

cluster.png

It is with the next step that I am struggling with.

As I could not find a way to list BOTH AO and DO is the dropdown menu, I thought of using the Channel: Signal Type Property Node to switch between the AO and DO list when the button is pressed.

 

So for example if the button in row 1 of the array is pressed, the channel selection in row 1 only changes from AO to DO. Similarly for the other rows. How could this be achieved?

 

Also as the last step, how to then extract the channels selected by user from the array and use them to output the waveforms?

 

Kindly advise,

 

Sherzaad

 

PS: I do realise that this method I'm proposing may be convoluted; so if there are simpler, more direct solutions they are of course welcomed! 🙂 

 

 

0 Kudos
Message 1 of 2
(2,268 Views)
Solution
Accepted by sherzaad

Hi Sherzaad,

 

The DAQmx Physical Channel control is using IO Filtering to display only the physical channels of a specific type (either AI, AO, DI, DO, or Counters). The IO Filtering can only be adjusted in development mode, hence the DAQmx Physical Channel will only show either channel type once the VI is running.

 

I have found a work-around though. Instead of using the DAQmx Physical Channel control, you can create type def that has custom properties. This is how I have implemented it:

 

  1. You can use a couple of property nodes to make an array of DAQmx Physical Channels. You can then take this array and populate a string ring control. The ring control works as a drop-down menu, and looks similar to the DAQmx Physical Channels control.Generate list of Physical Channels.png
  2. Run the VI and right-click on the ring control and make a type def. This allows you to use this populated custom ring in other VIs.
  3. I then made a cluster that included the ring type defMake Cluster.PNG
  4. I then made a type def of the generated Plot_IO Element cluster.
  5. If you know how many plots you would like to have, you can pre-allocate an array before you fill out the elements. This is a recommended way to utilize memory resources, and is a good practice. The array is initialized with the Plot_IO Element type def. The plot name is then updated using a property node to the Chart/Graph. The cluster array is then copied into the Plot_IO Array via a local variable.       Prepopulate array.PNG
  6. The DAQmx Physical Channels can now be updated dynamically while the VI is running. To extract the DAQmx Physical Channels you select, you need to interpret the ring values. One solution I could think of is to drag in another DAQmx Physical Channel Ring object, create a property node to extract the names of the channels, and then translate the ring values to DAQmx Physical Channel names.Extract DAQmx Physical Channel value.PNG

I think this is one way around it at least.

 

I hope this is helpful.

 

Best regards,

Marcus Bengths, TSE.

 

 

Message 2 of 2
(2,224 Views)