Dumb instrument control

Hello,
We have developed a measurement instrument that passes raw data to the host PC via a USB interface. The instrument has little data processing capability.
The host PC runs the user interface (VB6) software to carry out all the data handling and processing.
We have developed a VB6 DLL library that can be called by another program to carry out the low level communication with the instrument as well as the necessary data processing.
The USB interface on the instrument is not USBTMC.
Now, we have been asked to provide a VISA driver for our instrument. We are unsure how this could be done. Would this simply entail modifying our DLL to accept VISA commands? If so, in genral, how could the DLL be 'knitted' into the users' application software?
Thanks!

Hi,
I am guessing you want your end users to be able to use your device with LabVIEW. If you are looking to do this, the best way forward would be to distribute your DLL to your end users. They can then integrate it with the LabVIEW code using a 'call library function node' in LabVIEW or better still if you are a LabVIEW developer, you can write a few basic VIs to encapsulate all the details away from your user.
If you want to make your devise VISA ready, I belive this would entail making the lower level communication protocols of your device compatible with the VISA API. Look for the VISA specifications here: http://ivifoundation.org/specifications/default.aspx.
Doing this would be like developing the USBTMC low level protocols. 
However your USB device can be used as a raw device in NI VISA. Please read through this article for more information:
http://www.ni.com/white-paper/4478/en/
If your users do this, then they would not be able to use the VB6 DLL you have written and they need to know the specifics of the communication protocol of the device. This would mean a lot of work for the end user which is not recommended.
I hope this helps.
Thanks and Regards,
Supreeth.K
Applications Engineer
NIUK

Similar Messages

  • Problem with register event callback in use of instrument control

    now, i use the register event callback to register a value change of a boolean control on the front panel, and wire the cluster's ref of the instrument control parameters to the user parameter input, then create the callback vi. In the callback vi, i select the pump-control subvi, and pass the user parameter to the subvi. The problem is that,  when i press the boolean control, the instrument (here is pump) can act, but immediately, the code crashes.
    I use labview 8.6
    Attachments:
    callback vi.png ‏8 KB
    register event callback.png ‏8 KB

    You would wire the event registration wire that comes out of the Register for Events node into an event structure.  You will need to right click on the event structure and check off "Show Dynamic Event Terminals" and it into that.  Then you can create a new Event Case that uses the dynamic event.  You can place your subVI in that event in whatever way you want.  (Just drop the subVI in or do a Call by Reference there, or whatever.)  Look in the Example Finder for "Dynamically Register for Events.vi".

  • Instrument Control Build Specifications

    Dear Sir:
          I am trying to build a working *.exe instrument control program.  This is a simple program which only queries my test instrument with a *IDN? command. 
          The program fails to call my instrument driver and the program also runs on boot up when (running under normal conditions) it should wait for me to input the GPIB address of my test instrument. 
          Let's begin with the failure of Labview to communicate with the instrument driver.   This is some background information.
           When I run the program as simple *.VI in the Labview environment, the program runs perfectly.    No issues.
           When I use Agilent Connection Expert or MAX to communicate to the test instrument, communication is established and there are no issues - I receive a reply, connectivity is established. 
            After I build the *.VI into a *.EXE program, this is where the program's issues arise. 
           The *.EXE program fails to initialize correctly and fails to establish connectivity with my test instrument.
            Here are some issues that I have noticed about the program running in *.EXE mode
    1)  The program runs on "boot up" when you click on the *.EXE program.   In *.VI mode, the program does not run on boot but waits for the user to input the GPIB address of the test instrument - program run is designed to be enabled by the user.
          I do not believe this is the source of the problem but only an incidental consequence of the problem.   If I stop the program and input the GPIB address, I receive a message about not being able to communicate to the driver. 
    2)  Once the *.EXE program runs, there is a condition whereby the operating system cannot close the program and WINDOWS itself cannot shut down itself unless I manually close all the programs associated with the *.EXE program in the WINDOWS operating environment. 
    3)  If the labview program and *.EXE program are closed but the operating system is still running,  Agilent Connection Expert and MAX can no longer communicate with the test instrument.   They no longer see the test instrument.
    It is obvious that the *.EXE program is making a change which is causing the operating system to "hang" on shutdown and is also preventing the other programs from operating as they should. 
    I believe the source of my problem may be how I programmed my build specifications.     In reply,  can you please tell me what are the minimum requirements for the build specification so that my test instrument can reply to a simple *IDN? query?   What files are normally required for a successful build?
    Other information as to the source of my issues are welcome as well.
    Thank you.
    Solved!
    Go to Solution.

    Thanks for you advice.
    I think this problem is a lot easier than you might think.   I just started using Labview and the *.VI is super simple.  I am away from my development computer right now so I can't post it.  
    The information I need to know right now are the typical files that are needed to be added in the build.  
    I found this quote that I found on a webpage to be interesting, (although I am not building an installer):
    "  Do I need to include NI-488.2 2.7.3 module if I use only basic GPIB Write.vi and GPIB Read.vis in my project?
    Yes, if you are making an installer ..."
    This is a link to the webpage:
    http://forums.ni.com/t5/LabVIEW/Uninstalling-LabVIEW-after-an-application-EXE-build/td-p/1553310
    My program involves only simple reads and writes using NI-488.2 calls to a test instrument.   A simple list of files specified with filename extensions to get me started would be appreciated.

  • User-specified DAQ interruptions, instrument control through serial communication

    I'm working on an instrument control program, and I've run into a structural problem that I cannot figure out.
    The instrument in question is effectively a thermostat.
    The program has two functions:
    1.)  Background sampling to record temperature in a log over time.
    2.)  Adjust temperature according to user input
    The issue is that the instrument uses EIA-232 serial communication to talk to the PC.
    This prohibits simultaneous execution.  Attempting to send a command while the program is taking a sample will result in serial blockage errors.
    So the program must interrupt background sampling until the specified command has been completed.
    I can't figure out how to do this.
    My best idea was to create a manual pause control.  If the user wants to adjust the temperature, he hits a switch to pause the sampling, sends the appropriate command, then hits the switch again to reinitiate sampling.  This method will suffice, but is not ideal.
    Beyond that, I really have no idea how to prevent the two functions from running into each other.
    Help structuring this program would be greatly appreciated,
    Thank you

    Look into Semaphores (icons with traffic light glyphs)
    Set up a Semaphore resource to the COM port that is wired to two parallel structures.
    One structure would do the background polling, the other would handle setting changes.
    Prior to background poll, lock the resource, then unlock it after the poll. Likewise for the setting change command.
    When a resource is locked, the other process cannot access it until it is unlocked. Be sure to dispose of the Semaphore when ending the program.
    -AK2DM
    ~~~~~~~~~~~~~~~~~~~~~~~~~~
    "It’s the questions that drive us.”
    ~~~~~~~~~~~~~~~~~~~~~~~~~~
    Attachments:
    SempahoreExample.jpg ‏256 KB

  • Can I download the instrument Control and Data Aquisition Device Driver CD for 7.1?

    Greetings,
    Can I download the instrument Control and Data Aquisition Device Driver CD for 7.1?
    I'm trying to find out if I can download
    the instrument Control and Data Aquisition Device Driver CD for 7.1. Instead of downloading all the upgrades?
    Is there a link to the image file for this CD?
    TIA

    Sam,
    Unfortunately, the Device Driver CD is not available for download. However, your Technical Sales Representative should be able to send it to you (Contact Information).
    Spencer S.

  • Instrument control fundamentals

    Hi,
          I need some help regarding instrument control.I want to control instruments uing labVIEW8.6.I'm new to the job.can
    anybody tell me what are all the requirements(like installing instrument divers, labview 8.6) inorder to control an
    instrument programatically?
                                              In short what do I need to install before writing code to control insruments.can you give me
    step by step procedure right from scratch to control an instrument?
    Thanks
    kiranmayi

    Hi,
    for R&S CMS54 LabVIEW drivers are available at http://www2.rohde-schwarz.com/file/rscms54_lv7_2_0.zip, the R&S NRT driver is available at http://www2.rohde-schwarz.com/file/rsnrt_lv8_1_6.zip.
    A brief instroduction into driver is available at http://www2.rohde-schwarz.com/en/service_and_support/Downloads/Drivers?rckb=1&type=25&downid=5343
    Hope that helps?
    Regards Juergen
    Message Edited by juergenstraub on 07-08-2009 03:57 PM

  • Pxi-8176 controller to read data from an instrument controlled by another controller

    can i use pxi-8176 controller to read instrument data on the gpib bus from an instrument controlled by another pc gpib controller?

    Thanks.
    I understand what you're saying, but I'm also trying to understand why the following is not possible or is not more readily available:... Just as NI IO Trace (NI Spy) listens/eavesdrops to the GPIB real time, one would think that Labview would be able to do it also. One would think that just as NI IO Trace (NI Spy) publishes to a window/file/memory it shouldn't be impossible to publish to a string so that it can be processed real-time by some VI algorithm. If I think about NI IO Trace as a VI, I would think that it is already in a string format before it is published to the NI IO Trace window... why isn't that string available to Labview VIs block diagram?

  • Cannot find "Midi Destination" drop menu in External Instrument control window...

    I'm using Logic X Pro, and am attempting to use Sylenth as a VST. In order to do so, I watched this video tutorial...https://www.youtube.com/watch?v=4I-mNj-TLGM at minute mark 5:39, the External Instrument control window is displayed, and a drop down menu item titled "Midi Destination" is shown. I am not seeing that on my Logic.
    Can anyone please speak to this? Can you see this option in your window?
    Thanks so much.

    Hello there, ThatsMyGig.
    The following Knowledge Base article provides information for having that feature become available for you in Logic Pro X:
    Logic Pro X: MIDI Synchronization settings
    http://support.apple.com/kb/PH13383
    MIDI Synchronization settings are only available when Show Advanced Tools is selected in Advanced preferences.
    Thanks for reaching out to Apple Support Communities
    Cheers,
    Pedro.

  • Multiple windows of various instrument controls

    Howdy folks,
    I'm trying to create a program that allows you to add/delete devices by using a customized run-time menu. For example if I need to control 3 power supplies, I want to be able to go to Instruments->>Power Supply and enter 3. When I do that, I want to see 3 windows appear so that I can configure each power supply differently. However, I need the execution to not take much processing speed because I still need to acquire signals that are time dependant. I'm using LabVIEW 7, any suggestions? I saw some posts on VI servers, would that be the long term solution? Also, this is going to grow into a bigger program where I should be able to add other devices and have them run simultinously. Should I switch from LabVIEW to something else?

    Hi,
    You can use LabVIEW’s VI Server functionality to dynamically load and run different instrument control VIs as you need them. Dynamically launching VIs will not load the VI into memory until they are called and can save program space and memory usage. I have attached an example program below that demonstrates how to dynamically launch and run VIs using VI Server. A top-level “loader.vi” uses VI Server to load and run three different VIs.
    Also, in case you will need to load and run the same VI for different instruments, I would suggest you use VI templates instead of VIs. This will cause a new VI instance to be created every time the VI template is called. Therefore, you can have multiple separate instances of the same VI when dynamically launch a VI template. There is a good KB discussing how this done.
    KB 2QKDG7DW : Differences Between Reentrant VIs, VI Templates, and Dynamic VIs
    Hope this helps. Best of luck!
    Kileen

  • Interface using telnet for instrument control

    I'm trying to create a GUI front-end program for accessing instruments and equipment on routers. The first step would be to create a menu of telnet sessions that the user can select from. Maybe a pull-down menu that can select any site (router) in our district. I'm not sure how to either create a telnet session or pull-down menu using LabView. Any suggestions would be appreciated.

    There's various types of pull down menus. There's controls like the menu ring, dialog ring, text ring that you can programatically populate using a property node. You can also create your own run-time menu. There are shipping examples for all of these. Select Help>Find Examples.
    The easiest way to implement telnet sessions is to buy the LabVIEW Internet Toolkit. It comes with an example tlenet client. However, you may not need this. VISA supports TCP/IP instruments that you can add and share from MAX. Then, for any instrument that has an instrument driver written using VISA calls, communication is just like using a local GPIB or serial instrument. Utilizing a driver is much easier on the e
    nd-users since they don't have to know the command syntax in order to make measurments.

  • New to instrument control: attempting control of E5062A with GPIB cable and C program

    Hey everyone!
    I'm lost as where to start controlling an instrument we have in the lab.
    I'll give you my setup:
    It is a VNA, agilent/keysight E5062A.
    Controller is a desktop server running RHEL 5.
    I have a GPIB Cable.
    Program needs to be written into C so that it can be incorporated into the test program we are using.
    I have the programmers manual but it doesn't tell me much on how to start. It does tell me how to set the instrument(E5062A) gpib address. 
    I've also gathered that i will need some sort of I/O library, VISA or SCPI?
    Thank you for taking the time to read this!
    programmers manual link, take a look at chapter two
    http://anlage.umd.edu/Microwave%20Measurements%20for%20Personal%20Web%20Site/E5062A_Programmers_Guid...

    Do you also have a GPIB controller such as NI's USB-GPIB? Acable by itself its worthless. A better choice would probably have been the instrument with a USB or Ethernet connection, but no matter, the communication is the same.
    With the NI controller, you first install the NI-488.2 driver and then NI-VISA. VISA is an api that abstracts the actual physical connection. Code for a GPIB connection will run unmodified of you change to USB or Ethernet. When you install the drivers you are also given the option to install example code that should help you get started.
    An instrument driver for it is available at http://sine.ni.com/apps/utf8/niid_web_display.download_page?p_id_guid=FE17565E9D861AB5E0340003BA7CCD...
    Read about what an instrument driver is and how to use one at http://www.ni.com/downloads/instrument-drivers/
    Keysight might also have a driver. Check there as well.
    P.S. SCPI is the instrument's programming language. It's built-in as the manual makes clear.

  • Multiple instrument control

    Hi,
    Is it possible to use listbox to control multiple instruments, in which, I would like click on a instrument I want to control and it will bring up front control panel for particular one I selected? Thank you very much for your help.

    It is possible to control mulitple instruments on some buses (like GPIB). As for bringing up a GUI for each instrument, this is something that should be done in the programming language.
    Randy Solomonson
    Application Engineer
    National Instruments

  • Opening VI block diagram engaging remote instrument control

    This is a phenomena that doesn't seem to cause any major functionality issues - but I'm still curious how opening the block
    diagram window of a VI can automatically engage remote control of any
    connected instruments that are powered up - even when the VI itself is
    not running?  The only problem I have with this is if manual control is needed prior to running the VI.
    Has anyone else encountered this issue?

    What, exactly, causes the "REMOTE" indicator on your device to come
    on?  It looks like if you have any VISA resource objects on your
    block diagram and open the block diagram, LabVIEW searches what devices
    are out there.  I would be surprised if your instruments reponds
    to a simple query by going into remote mode, but that may be what's
    happening.  Can you check the manual for your instrument to see
    what commands put the device in the remote state?
    Robert Mortensen
    Software Engineer
    National Instruments

  • State machine for text-based instrument control

    Hello,
    I am trying to control a text-based instrument to set various parameters and turn modes on and off.
    My main question is about the four case structures on the far right of controller.vi.  I need something that will write the command to visa (just once) after a button click.  The way I've done it is obviously not ideal.. I'd like to be able to have a boolean (or preferably a radio control) controlling RC mode on/off and common mode on/off.  As far as I can tell, the way that sort of thing is *supposed* to be done is with an event structure, but I've only got the base package.  Radiobuttonstatemachine.vi is my first attempt at trying to make a state machine for this purpose.  But it just runs once and then quits, or while it's running it hangs everything else up.  
    Currently the VI only works in continous mode-- I'm pretty sure that's one of my biggest problems-- no? What is the correct way to make an event structure without an event structure?
    Best regards,
    Anna
    PS.  Apologies in advance-- I know this is probably really obvious but all of the questions and tutorials I can find do this kind of thing with an event structure, which I can't use. I'm an undergraduate doing an internship and this is my first time using labview (basically my first time with any programming) so ANY ANY help would be be very appreciated.. Also any comments on my coding since I don't know anyone that's good at labview and can point out improvements to me. THANKS AGAIN.
    Attachments:
    controller.llb ‏513 KB
    radiobuttonstatemachine.vi ‏14 KB

    There are a few things to remember with LabVIEW. The reason your program only works in continous mode is that LabVIEW is a dataflow language, it executes the objects as their inputs are satisfied, then their results travel to the next "node". In your original program the messages to the instrument are in "nodes" that are all "serially" connected, so that unless you run it in continuous mode there is no loop back to the beginning to read any changes. When you start the program in the non-continuous mode it will read all the front panel settings almost instantly, "flow" to the message sending nodes and then end.
    Can you get the full package? User interfaces are much easier to design with "events", but remember thoise were only added a few major releases ago, you just have to be trickier.
    Here is a quick modification to your radio buttons.
    Putnam
    Certified LabVIEW Developer
    Senior Test Engineer
    Currently using LV 6.1-LabVIEW 2012, RT8.5
    LabVIEW Champion
    Attachments:
    example 9-29-08.vi ‏15 KB

  • GPIB Instrument control with VB6

    I have recently decided to migrate from labVIEW to Visual Basic, as my applications are becoming more and more demanding. I have Visual Studio 6 for Visual Basic, and I have no problem coding and creating interfaces, but I have no idea where to start as far as communicating with my instruments over GPIB.
    I have NI-DAQ for Windows version 6.9.2 installed and apparently it contains support for Visual Basic, although I can't figure out what that support is... are there librarys that I can include and call to? If so, how do I do this? Is it possible to communicate with my instruments without getting the NI Measurement Studio for VB?
    Thanks everyone

    Hi,
    You should be able to program using Visual Basic without any issues. There are examples already created that should have installed on your system in C:\Program Files\National Instruments\NI-488.2\Languages\Visual Basic\. In that directory is the language interface files and some good examples.
    Hope this helps out!
    Aaron K.
    Application Engineer
    National Instruments

Maybe you are looking for

  • Stream Video/Audio from One room to a TV with Apple TV

    Hi: I two rooms in a church. 1st room is where the events happen. 2nd room is a overflow room. I have a TV in 2nd room with Apple TV. I want stream video and Audio from Room1 to ATV in room2. Can I do this with Ipad or someother device? TIA Ravi

  • Batch append a single keyword

    We enter keywords using Photo Mechanic when ingesting, but would like to add one to files processed from raw using the batch utility or a script. In File Info you can append a keyword, but if you record this step for an action it translates as set ke

  • Help with vocal filter

    I just got an interesting project where I'm asked to filter noise and raise the level of a voice recording that was probably done by an answering machine, hand recorder or other such low-fi device. You can barely hear the female voice above the room

  • Error in background on GUI_UPLOAD.

    Hi, If i run a report in background which contains the function module : GUI_UPLOAD it is getting the error message as 'Error uploading C:\Documents and Settings\...' . do the gui_upload wont execute in background?. Please suggest. Usefull anwers wil

  • Mail server polling Internal Error

    Hi I am doing mail polling server... i got following error in message monitoring.... Error Category :: Internal Error Error Code  :: HTTP_RESP_STATUS_CODE_NOT_OK please help me thanks & regards Ravi Shankar B