NiSwitch vs DAQmx

I am interested in a general discussion of the differences between DAQmx and niSwitch. DAQmx seems to be a superset (newer implementation?) of niSwitch.
When controlling a simple device such as a relay driver (PXI-2567), is there a reason to choose one of these over the other? Both have the ability to open and close switches.
Can I mix and match them in the same vi? I seem to remember hearing that I should stick to one switch control pallet in a given vi.
Are there programming situations where there is a compelling reason to choose one over the other?
Thanks in advance for the advice,
Bob

Hi Bob,
Hopefully this Knowledge Base will answer your questions about the differences between NI-Switch and DAQmx for switch programming.
Regards,
Jennifer O.

Similar Messages

  • NIDMM.vb and NISWITCH.vb wrapper warning

    I am writing an application in VB.net (VS2005 & MeasStudio 8.2.1) where I want to control a PXI-4065 DMM and a pair of PXI-2575 196 channel multiplexers to take various voltage and resistance measurements on a demand basis (table driven).  I've created my vb.net application with measurement studio and added to the project the NIDMM.vb and NISWITCH.vb wrappers as specified in the KB article "Microsoft Visual C# and Visual Basic .NET Wrappers for National Instruments Modular Instruments Drivers".
    After I added the two wrappers, I get many warning messages as follows...
    Warning 1 XML comment parameter 'Instrument_Handle' does not match a parameter on the corresponding 'sub' statement. XML comment will be ignored. C:\Documents and Settings\georgep9164\My Documents\Visual Studio Projects\QCT01\QCT01\niDMM.vb 80 8 QCT01
    Am I missing something that should be added to the project?
    Also, I've not used the "XML documentation" feature used in the two wrappers.  How can I "process" the two files to get the documentation?  Will this work properly with VS2005?
    Lastly, assuming that I am going about this application in the correct method, are there some examples that would show me how to set a specific switch channel(s) and then take a voltage or resistance measurement with the DMM?  I've been looking around but Ihaven't found any examples.
    Thanks!

    OK, going back to the NIDMM.vb class that NI provides, the first instance of the warning comes from the line "<param name="Instrument_Handle">"  in the XML comments listed below.
        '''<summary>
        '''Creates a new IVI instrument driver session.
        '''Opens a session to the device you specify for the Resource_Name parameter.
        '''If the ID Query parameter is set to TRUE, this function queries the instrument ID and checks that it is valid for this instrument driver.
        '''If the Reset parameter is set to TRUE, this function resets the instrument to a known state.
        '''Sends initialization commands to set the instrument to the state necessary for the operation of the instrument driver.
        '''Returns a ViSession handle that you use to identify the instrument in all subsequent instrument driver function calls.
        '''Note:  This function creates a new session the first time you invoke it for a device. If you call niDMM_Initialize on the same resource, the original session is returned. You can use the same session in multiple program threads. You can use the niDMM_LockSession and niDMM_UnlockSession functions to protect sections of code that require exclusive access to the resource.
        '''</summary>
        '''<param name="Resource_Name">
        '''Contains the resource name of the device to initialize.
        '''Valid Syntax:
        '''-NI-DAQmx name
        '''-DAQ::NI-DAQmx name[::INSTR]
        '''-DAQ::Traditional NI-DAQ device number[::INSTR]
        '''-IVI logical name 
        '''Caution  All IVI names for the Resource Name, such as logical names or virtual names, are case-sensitive. If you use logical names, driver session names, or virtual names in your program, you must make sure that the name you use matches the name in the IVI Configuration Store file exactly, without any variations in the case of the characters in the name.
        '''</param>
        '''<param name="ID__Query">
        '''Specifies whether the driver performs an ID query. When this parameter is set to VI_TRUE, the driver verifies that the instrument is of a type that this driver supports.
        '''Defined Values:
        '''VI_TRUE (1) - Perform ID Query (default)
        '''VI_FALSE (0) - Skip ID Query
        '''</param>
        '''<param name="Reset_Device">
        '''Specifies whether to reset the instrument during the initialization procedure.
        '''Defined Values:
        '''VI_TRUE (1) - Reset Device (default)
        '''VI_FALSE (0) - Don't Reset
        '''</param>
        '''<param name="Instrument_Handle">
        '''Returns a ViSession handle that you use to identify the instrument in all subsequent instrument driver function calls.
        '''</param>
        Public Sub New(ByVal Resource_Name As String, ByVal ID__Query As Boolean, ByVal Reset_Device As Boolean)
            MyBase.New
            Dim pInvokeResult As Integer = PInvoke.init(Resource_Name, System.Convert.ToUInt16(ID__Query), System.Convert.ToUInt16(Reset_Device), Me._handle)
            PInvoke.TestForError(Me._handle, pInvokeResult)
            Me._disposed = false
        End Sub
    I noticed that the XML comments specify four parameters, but the SUB only has three parameters defined.  Hence, the warning!  A question for NI... Why the mismatch?  Has NIDMM.vb changed?
    I would still like to know how to print the XML comments for the class documentation.

  • NI DAQMX Driver performanc​e

    Hello all,
    I would like to build a SubVI to generate digital & analog output, but am concerned about possible performance issues.   In some extreme cases I will need to call this SubVI in rapid succession(50ms interval) hundreds of times.   It will contain the following 3 tasks to be executed in sequence:
    Task #1 - Set two bits high
    Task #2 - Analog Generation
    2.  Sychronize two NI-DAQmx PCI cards via a RTSI cable at 40khz sampling rate.
    3. Generate
    Task #3 - Set two bits low

    duplicate post. continue here

  • NO Disk error when DAQmx is referenced

    Referencing NationalInstruments.DAQmx causes a NO DISK error in Visual Studio (see attachment)
    I'm using Visual Studio 2012 and MS 2013
    The DAqmx version is 9.8.45.42
    Has anyone seen this before and is there a fix?
    Steve
    Attachments:
    DAQMX Error.JPG ‏22 KB

    See Top 25 Bugparade: # 4264750
    This is a SecurityManager - Problem and the java.io.File.
    eg.:
    System.setSecurityManager(new RMISecurityManager());
    File[] roots = File.listRoots();
    Then you will see the problem...
    I tried the following workaround:
    before you access disk. (or JFileChooser)
    SecurityManager sm = System.getSecurityManger();
    System.setSecurityManager(null);
    // disable the SecurityManger
    // this special disk access needs no SecurityManager..
    ... popup JFileChosser or make FileAccess..
    System.setSecurityManager(sm);
    // restore the old SecurityManger
    It's not the best solution but it works..
    hope this will help,
    Wolfgang
    EDI Organisation

  • USB 6009 DAQmx Deployment

    Hi.
       I have created a 4 channel differential data logging scope with a NI USB-6009. I would like to deploy this 'easily' to many of my colegues. I have app builder and the ability to build apps, but I would like to include the correct drivers for the 6009 in with the installer (although I have selected NI_DAQmx Core Runtime and NI_DAQmx MAX config support).
       For the running of the app, I have created a Task that consists of 4 channels. I would like it for my end user not to have to configure this. Does anyone know how I might acheive this? My experience of deployment is limited.
    Many thanks, Alec

    Hi Alec,
    It's also worth installing DAQmx MAX Configuration Support from the install builder if you still want to be able to modify the tasks from MAX as well.
    Best Regards,
    Chris
    National Instruments - Tech Support

  • USB 6009 and DAQmx Base Concerns

    Hello,
    I just received a USB-6009 multifunction DAQ device along with DAQmx Base for use on Windows XP with LabWindows/CVI ver 7.1.  Both the 6009 and DAQmxBase are successfully installed however I have several questions, I hope I am missing something obvious:
    1. The Task Configuration Utility is not needed for use with LabWindows/CVI?  I believe I read this in the Getting Started Guide.
    2. There is no function panel for the DAQmxBase functions?  I even searched the installation CD and found no .fp files.  So the only way to know what functions are available with DAQmxBase is to open the NIDAQmxBase.h file and search through the function prototypes?  Then, to know what a function does it is necessary to open the C Function Reference Manual via the Windows Start button and search for the function name of interest?
    3. When creating a digital input or output channel with DAQmxBaseCreateDIChan or DOChan is it only possible to setup a "channel" as an entire port?  Is it not possible to setup a channel as a single input or output line?  Similarly, once the channel is configured is it only possible to read or write an entire port with DAQmxBaseReadDigitalU8 or WriteDigitalU8?  I was expecting something similar to the DIG_out_line function used in Traditional NI-DAQ where a board number, port number, line number and state are passed so that a signal output line can be set on or off.
    Thanks in advance for the assistance,
    - Aaron

    Aaron T. wrote:
    Hello,   I just received a USB-6009 multifunction DAQ device along with DAQmx Base for use on Windows XP with LabWindows/CVI ver 7.1.  Both the 6009 and DAQmxBase are successfully installed however I have several questions, I hope I am missing something obvious:   1. The Task Configuration Utility is not needed for use with LabWindows/CVI?  I believe I read this in the Getting Started Guide.  
    **The Task Configuration Utility is not necessary, except that there is significant functionality missing from DAQmx Base but present in the utility. That includes a lot of what DAQmx calls "proerties", and includes things like the convert rate for AI scanning.
    2. There is no function panel for the DAQmxBase functions?  I even searched the installation CD and found no .fp files.  So the only way to know what functions are available with DAQmxBase is to open the NIDAQmxBase.h file and search through the function prototypes?  Then, to know what a function does it is necessary to open the C Function Reference Manual via the Windows Start button and search for the function name of interest?  
    **I don't use CVI so I don't know anything about this. It strikes me that even if you have such a panel reading the documentation is a good idea
    3. When creating a digital input or output channel with DAQmxBaseCreateDIChan or DOChan is it only possible to setup a "channel" as an entire port?  Is it not possible to setup a channel as a single input or output line?  Similarly, once the channel is configured is it only possible to read or write an entire port with DAQmxBaseReadDigitalU8 or WriteDigitalU8?  I was expecting something similar to the DIG_out_line function used in Traditional NI-DAQ where a board number, port number, line number and state are passed so that a signal output line can be set on or off.  
    **Well, the ReadMe file says that USB-6008/9 is supported with both Line I/O and Port I/O. On the other hand, the documentation for DAQmxBaseCreateDOChan and DAQmxBaseCreateDIChan say for the lineGrouping parameter, "Always pass DAQmx_Val_ChanForAllLines." So your question is a good one! Perhaps one of the NI engineers can comment on this.
    - Aaron
    Thanks in advance for the assistance,
    John Weeks
    WaveMetrics, Inc.
    Phone (503) 620-3001
    Fax (503) 620-6754
    www.wavemetrics.com

  • USB-6009 Daqmx Base 3.3 Cannot creat 2 or more channels on Windows mobile 6

    Hello,
    I have USB-6009, PDA iPAQ 214, WM6, Daqmx base 3.3, Labview 2009. In order to create new mobile project I use wizard and standart dynamic example: Cont Acq&Graph Voltage-Int Clk.vi. All works ok, but if I add more chanels in VI "Create Channels" or place new VI block and enter "Dev1/ai1", exe on my PDA cannot work correctly. Exception after RUN. I have no idea how build correct application with 3 channels without this exeption...  On PC all works. Whay right way to create channels? I attach VI which don't work, for examle. I read daqmxbase cannot support WM6, but 1 channel work ideal!
    Attachments:
    diagramm.jpg ‏113 KB

    Vital000,
    I forgot to mention that, yes, Windows Mobile 6 is not supported along side of DAQmx Base. That means you might be able to get some  of the same functionality(limited) that you would with Windows Mobile 5, but most likely not 100% functionality. This could explain why 1 channel works and multiple channels do not. I will try and help you out, but as this is not supported my ability to help is limited.
    Ben Sisney
    FlexRIO V&V Engineer
    National Instruments

  • Daqmx "Done" event not triggering event structure

    I would like the user to be able to abort my daqmx task by pressing a button.
    I am attempting to use the method in this VI:
    https://decibel.ni.com/content/docs/DOC-15815
    It utilizes an event structure with the daqmx Control Task VI to abort.
    The example VI above works for me, on my system with my USB-6356 device, as expected.
    When I attempt to incorporate the same method into my VI it does not--despite having an identical arrangement, so far as I can tell.
    I believe that my problem lies with the event structure, and the dynamic registration.  I am unfamiliar with this and must be using it incorrectly.
    I have attached my VI, though it is cumbersome.  The code which I am struggling with is in the "Acquire" case.  As far as I can tell, I am doing exactly the same this in this particular case as in the example mentioned.  Yet in the example, the event structure completes, or aborts, whatever you want to call it, right after the "Wait Until Done" VI executes.  In my own VI, the "Wait Until Done" and "Clear Task" VIs execute, but the event structure does not register it.
    Here are my specific questions: is there anything extra or special that one must do in order for the Task to properly trigger a "Done" event and pass through the event structure?  At what point is the daqmx task "Done"? 
    thanks,
    Matt
    Attachments:
    BoomTubeMain.vi ‏175 KB

    natasftw,
    My event structure is identical to theirs; what you are seeing are the two different cases that exist in the event structure.  In both the example and the VI, there is a <task out>: Done and a "Dynamic Event": Value Change.  In the dynamic event case, I have my abort button and relevant code--this I believe is the code you were referring to, which you thought I was missing...  Regarding my multiple event structures, they should operate completely independently as they respond to different events.

  • How do I use daqmx to get encoder direction/count on M-series board?

    I have an incremental dual channel  encoder from Rotalink. I want to take angular postion and angular speed from this encoder. My NI DAQ card is PCI 6221 which belongs to M series. First, soft-timing was used to get anuglar postion and sampling rate is set at 1Hz. The vi program works well. However, it does not produce  good results when the sampling frequency is increased to 100Hz. So I turned to hardware-timing. The example, "Find example>> Hardware Input and Output>>DAQmx>>Counter Measurements>>Position>>Meas Angular Pos-buff ext Clk.vi" gets the readings. A function generator which can produce pulses at the frequency rang from 1Hz-1Mhz was wired to PFI9 in accordance with "
    You need to find your PFI pin numbers to know what to wire A,B and Z to on your m-series board, to do this go into max right click NI-DAQmx Tasks click Create New DAQmx Task >> Counter Input >>Position>>Linear, and setup the task for your measurement. It will tell you what the PFI lines are. You then need to look at the wiring diagram and connect it to the correct pins." as an external clock. The channel A and B were wired to PFI8 and PFI10 respectively. However, it still gives errors like 200284. Comments are grealy appreciated!

    Hi Zibin
    I have been trying to work out what is not working I need some more information
    What frequency is your function generator actually generating?
    What have you set your time out value to?
    What exact errors are you getting and when do you get the error?
    What would really be helpful is if you could send me your code because by the sound of it, it should just work the card is more then capable of doing what you want so chances are it is the code.
    Regards
    Tim M
    NI UK

  • How do I use a counter for time measurement with NI-DAQmx and C++?

    Hi,
    I need my C++ program to read time (number of elapsed ticks) using the counter on PCI-6229. I had this written and working for the non-MX driver, and now I need to re-write it for NI-DAQmx.
    Here are the steps that I want to accomplish:
    1. Route the 80MHz timebase to the input of "Dev1/ctr0"
    2. Start the counter and let it count the ticks.
    3. After a while, read the number of ticks from the counter.
    Here is how I am trying to do it now (without success):
               DAQmxCreateTask ( "" , &taskHandle ) ;
               DAQmxCreateCICountEdgesChan ( taskHandle , "Dev1/ctr0" , "" , DAQmx_Val_Rising, 0 , DAQmx_Val_CountUp ) ;
               DAQmxConnectTerms ( "/Dev1/80MHzTimebase" ,  "/Dev1/Ctr0Source" , DAQmx_Val_DoNotInvertPolarity ) ;
               DAQmxStartTask ( taskHandle ) ;
               then DAQmxReadCounterScalarU32 ( taskHandle , 0.25 , &curCount , NULL ) ;
               and DAQmxClearTask ( taskHandle ) ;
    No errors are generated, but I do not see the tick count being incremented when I repeatedly read the counter.
    Advice will be greatly appreciated!!

    Hi Peter,
    Welcome to the forums!   I just want to make sure I understand what you are trying to do.  You would like to count the rising edges of the 80 MHz clock using DAQmx in C++.  In order to route the timebase to the counter, you need to use the signal name (PFI8) instead of the counter (Ctr0Source) for the counter source input.  This name is found in Measurement Automation Explorer (MAX) by right-clicking on the device and choosing “Device Pinouts.”  This will physically put the 80 MHz clock on the PFI8 line, so make sure you reset the device or disconnect the terminals after you are done. 
    That being said, may I ask what you are trying to do by reading the number of elapsed ticks?  If you are trying to monitor a hardware timed pulse, it would be better to count the frequency or period of that pulse.  This would provide better accuracy, because you are not relying on how fast DAQmx Read can poll the hardware.  If you are simply looking for a software based timer, I would recommend taking a look at this MSDN forum post. 
    Using the GetTickCount function instead will free up your counter and provide comparable accuracy to counting the edges of the timebase.
    I hope that helps you out, let me know if you have any further questions about this. Good luck with your project.
    Rod T.

  • How to get I32 enum text out of a control (i/p terminal config, active edge of DAQmx vis)

    Hi,
     I am using DAQmx VIs create channel.vi and sample clock.vi, they have inputs (input terminal configuration) and (active edge) both are I32 and have enum looking drop down options. i want to use those text values to put into my excel file, but they give out numeric codes related to respective option. is it possible to get the text as it is.
    it is not an enum but I32 which looks like enum..
    plz help..
    Thanks
    Solved!
    Go to Solution.

    Note: This assumes that you have an actual control on the VI. If you have a
    block diagram constant, then that won't actually work. In this case to get the actual text you need to pick from list of text items. To further complicate things, the actual values that are generated are not sequential. You can use either a case structure or a 2-step lookup.
    Attachments:
    Example_VI.png ‏7 KB

  • Problem with DAQmx and Real Time PCI-7041/6040E.

    Problem with DAQmx and Real Time PCI-7041/6040E.
    I have a problem with the Real Time card PCI-7041/6040E, I think it is properly installed because my software run with the traditional NI-DAQ. When I try to use the new DAQmx to acquire one signal, Labview doesn't see any device for de DAQ card 6040E.
    Information, I work on Windows XP and LabView v7.0.0 (NIDAQ RT v7.0.0, NI-Serial RT v2.5.2, NI-VISA v3.0.1 and NI-Watchdog v2.0.0).
    Could Labview RT run with new DAQmx ?
    What can I do to use DAQmx with PCI-7041/6040E?
    Thanks for your help !

    Hello,
    I refer to your posts because i am using the PCI 7041/6040E card as
    well but without any success to make it work. The problem I have
    already described in the following thread:
    http://forums.ni.com/ni/board/message?board.id=170&message.id=120198
    Would be nice if you had a look on it, maybe you can help me. BTW, the
    thread starts with a problem of someone else, the difficulties I
    encountered are to be found a little bit to the bottom of the thread's
    page.
    Thank you!
    Dirk Völlger
    Darmstadt
    Message Edited by ratschnowski on 07-28-2005 07:14 AM

  • Problem with DAQMX on a 6025E !!

    Problem with DAQMX on a 6025E
    I work on a DAQ 6025E and I can't use the example "Write Dig Port.vi" and all others example on digital output with DAQMX. There isn't any hardware failure because the same installation functions correctly with the traditional DAQ. I want to use these channel parameters: Dev1/port2.
    I already tested to make a reset device and use "line or port configuring vi" but without successes.
    Thanks for your help!
    Attachments:
    Write_Dig_Port.vi ‏48 KB

    I took a look at the example you attached and it looks fine. Here are a few things to try out BEFORE running the example from MAX:
    1) Remove any SCXI, SCC, and accessories from the configuration in MAX so that no DIO lines are reserved for communication.
    2) Reset the driver to work in DAQmx mode for your board. To do this, first right-click the "Traditional DAQ Devices" and say "Reset Driver" and then right-click your 6025E under DAQmx Devices and say "Reset Driver" again. This should enable the driver for DAQmx.
    3) In MAX, under DAQmx Devices, run the test panel and make sure you can read/write all the DIO lines there first. If that works fine you should be able to run the example.
    Remember that the port names for the 6025E are Port 0, Port 2, Port
    3, and Port 4 (no Port 1).
    Good Luck!!!
    Sincerely,
    Brooks Bailey
    Application Engineering
    National Instruments

  • Would you Open and Close DAQmx tasks within a function or Globally

    Hi Guys,
    This should start something.
    The subject is DAQmx Tasks.
    If you were writing a function that is called many times, say MeasureVolts (double *Value) to obtain a reading from an Analogue Input Channel.
    Would you.
    1. open and start the task inside the function, do the measurement and then close the task inside the same function.
    or
    2. open the task globally and later do the measurement inside the function using the global task then close the task only when the application is closed.
    I am mostly concerned with the overhead of task generation and closing, what do you guys and girls out there do?? and what is the general opinion?
    I would appreciate your views.
    Regards
    Paul.

    I would definitely NOT keep configuring and clearing (I think that's what you mean by open and close) the same task over and over.  I would configure once, read many times in my main app, then stop & clear once.
    I typically like to package such data acq into an "Action Engine" that keeps track of its own DAQmx task id so I don't need to sling that task id wire around into multiple parallel loops / vi's.  Attached is a very stripped-down example for Digital Input. 
    I would typically do more with error testing and would make the "Action" enum into a typedef custom control, but this gives you the basic idea.  The action engine approach works very nicely when there's a small # of different kinds of input parameters and output info needed to support all the necessary action cases.   When you start needing a large number of differnent kinds of inputs and outputs to support the desired actions, then you start having difficulty with (1) having enough terminals to wire and (2) remembering which inputs and outputs are meaningful for which actions.
    -Kevin P.
    Attachments:
    DI Action Engine.vi ‏75 KB

  • Data acquisition problem with NI-DAQmx 9205 and SignalExpress

    Hi everyone,
    I am using a NI-DAQmx 9205 connected via ethernet to my computer and Labview SignalExpress running to acquire data. I am working with EMG and I use an amplifier system from GrassTechnologies (http://www.grasstechnologies.com/products/ampsystems/ampsystems.html). The way it works is the electrodes are plugged on the amplifier system and the amplifier is plugged to the NI-DAQmx 9205.
    I don't know how to setup the system to be able to read properly the emg signal on SignalExpress.
    Does anyone know how to use it?
    Thank you for youe help
    John

    Hi John,
    If I were an Applications Engineer I'd probably be able to figure this out on my own but would you mind elaborating on your hardware setup a little? You mention plugging into a "NI-DAQmx 9205", however the NI-DAQmx is the data acquisition 'driver', the [NI]9205 is an Analog Input Voltage module. Do you mean to be plugging into a Compact DAQ or cRIO?
    Also, I'm not familiar with EMG readings or the amplifiers/electrodes you're working with.
    What is the signal type going into the amplifier from the electrodes, and what is the signal type and range (amplitude) of the signal coming out of the amplifier; AC, DC? I'm assume it's all voltage?
    Straight voltages are pretty easy to work with provided you can scale it to usable units.
    Lets get your hardware and signal types figured out then we'll be able to tell Signal Express how to handle those signals.  
    SCXI- 1000 Chassis w/ 1346 adapter
    PCI 6281 DAQ card
    SCXI- 1520 Bridge Board w/ 1314 Terminal Block (x2)
    SCXI- 1180 Feedthrough Panel w/ 1302 Block
    Signal Express 2014.
    Win7 Enterprise

Maybe you are looking for