03-29-2017 03:28 PM
When plugging in 5 GPIBs simultaneously, a board ID is automatically assigned ranging from 0 to 4. This ID seems to be permanently set - if the 4th GPIB is then plugged in by itself, the board ID must be set to its original value of 3 or else it will give a missing GPIB error. This causes a problem if one loses track of what each GPIB's board number is when plugging it back in later. How can the board ID's be reset? I implement board.SendInterfaceClear() from the NationalInstruments.NI4882.dll for each GPIB when my program is initialized but this does not fix the error. There is not a Interface Clear function for the NI device class (it should be SendIFC but for some reason that is not contained in the NationalInstruments.NI4882.dll as far as I can tell - in fact, more than half of the GPIB 488.2 function list is not part of the device or board classes and I have no idea how to access them. They are not contained in the GPIB 488.2 .Net example code that is installed with the drivers either. I am using driver version 16 and am coding in C# with Visual Studio 2015 with the manual implementation of the .licsx file in order to use Measurement Studio 2015 (see NI link for this work around: http://digital.ni.com/public.nsf/allkb/8C93FFDC5014C57586257EC30054830A). Everything else about my code and implementation of controlling 5 GPIBs work fine as long as the correct board ID is always assigned to the GPIB - this is not acceptable though as several people in my company running the code are not tech savy enough to handle the problem. Can somebody please help me reset my boardID's and if possible, help me access the missing functions? Using a different version of Visual Studio is not acceptable nor do I think that would allow access to the full function list as they aren't shown in the example code installed with the GPIB drivers. Thank you all for your time, I would greatly appreciate any help offered as this is a hindrance to our company's product development.
04-07-2017 08:58 AM
The following KnowledgeBase article describes how to do this, and includes a link on the SendIFC command.
How Do I Programmatically Reinitialize A GPIB Board When An Error Occurs In An Application?
http://digital.ni.com/public.nsf/allkb/62BB94BB841025F586256B2900634D86
Hopefully this helps!
04-26-2017 08:32 AM
If you read my post, I state that SendIFC does not fix the problem. I learned in another post that use have to go through VISA MAX > Tools > Reset Configuration data in order to delete the plug and play registry entries made in the Windows Registry. Currently trying to accomplish this programmitcally using the SystemConfiguration API but I am not seeing the correct function.
04-27-2017 01:13 PM
Can you include a link to that post? I have not been able to find it.
In addition, can you elaborate on how SendIFC doesn't work for you? The below forum post says that you should be able to access it from the object file gpib-32.obj
04-27-2017 03:54 PM - edited 04-27-2017 04:08 PM
SendIFC does not work because it does not reset the windows registry which stores the board ID. It is useless for resetting stored board ID's in a registry. Here is the link you requested Clearing Board ID from registry
04-28-2017 02:41 PM
This utility looks like it may be useful to you. I have not been able to find a way to get rid of the names programmatically.
VISA Alias Configuration Reference Utility
http://www.ni.com/example/31007/en/
04-28-2017 05:03 PM
My device does not use VISA Aliases, it is a GPIB 488.2 which uses device address and board ID from the nationalinstruments.ni4882.dll device and board classes. Please fully ready my post.
05-01-2017 03:33 PM
Looks like IBCLR is the function you're looking for. It's listed on page 24 (1-14) of the NI 488.2 Function Reference for Windows.
05-02-2017 08:26 AM
You are incorrect. I need to clear the Board ID, not the device. The Board ID of the GPIB is saved in the windows registry somewhere and the only way I know how to reset it is in VISA MAX > Tools > Reset Configuration data. I need to do this programmatically though. There is a system configuration API that supposedly can access this reset function but I am unable to find it working in .NET
05-02-2017 08:26 AM - edited 05-02-2017 08:28 AM
duplicate post of my above response.