I am writing a program to communicate with some number of GPIB devices. Different tests use different numbers of devices. I have two NI GPIB-USB HS’s in the system. Sometimes the user will have 8 devices on each USB-GPIB (Agilent 34970A). Sometimes 7 on “0” and 1 on “1”, sometimes 8 devices on each, sometimes they only connect two or three devices.
Test “A” uses 8 devices defined as GPIB0::1::INSTR, through GPIB0::8::INSTR
Test “B” uses 8 devices defined as GPIB0::1::INSTR, through GPIB0::7::INSTR, and GPIB1::8::INSTR
Test “C” uses 16 devices defined as GPIB0::1::INSTR, through GPIB0::8::INSTR, and GPIB1::9::INSTR through GPIB1::16::INSTR
Test “D” some random combination of devices.
My problem as the programmer is to query the devices attached to the computer, use that information to create the VISA resource names, and compare that to the (user generated) config file that defines what test to run. My program needs to make sure that the proper hardware is attached, On and initializes properly. I need to do this programatically so it is invisable to the end user. This will be distributed .exe code that will used on dozens of test stations.
My actual question is…
How do I query the GPIB resources connected to my PC and us that information to create my VISA Resource Names? Do I use MAX or is there another way?
I would also like to know how to do this for other stuff. I often load an .exe on other computers that have the DAQmx card in a different slot or already has a PCI card in it so, for example, my Device 1 is now Device 2 and I have to create a new .exe.
I’m sure there must be tutorials on this somewhere but I couldn’t figure out what to search for.
You may want to check out the NI System Configuration API. You can use it to enumerate all of the NI-VISA devices and use the rename functionality to set the Alias.
I would start with the Find Hardware shipping example to get an idea of how to use it.