Chris,
I have errors running the sample codes example. I traced the calls in NIspy scan instrument and came up with this which seems to work.
NI::CNi4882AddressList address_list;
// Create Address range 1 to 30
for(int i=0; i<30; i++)
{
address_list.Add(i+1);
}
NI::CNi4882Board gpib_board("GPIB0");
try
{
gpib_board.Reset();
gpib_board.RequestSystemControl();
gpib_board.InterfaceClear();
gpib_board.SetRemoteEnableLine();
gpib_board.SetConfigurationOption(CNi4882Board::ConfigureOption::cTiming, 1);
int dummy;
gpib_board.GetConfigurationOption(CNi4882Board::ConfigureOption::cPAD, dummy);
gpib_board.GetConfigurationOption(CNi4882Board::ConfigureOption::cSAD, dummy);
gpib_board.FindListeners(address_list);
}
catch (CNi4882Exception* e)
{
e->ReportError();
e->Delete();
return; // quit here
}
int index;
for(i=0; i<30; i++)
{
TRACE("address_list[%i].GetResult()=%i\n", i, address_list[i].GetResult());
if (address_list[i].GetResult())
{
// Listener found,
index = i +1; // index of address_list offset forward equals gpib Address
TRACE("Listener found at address=%i", index);
}
}
Well, the problem is with >>> if(address_list[i].GetResult()) which returns true for every single value of i. The returned values are:
address_list[0].GetResult()=22
address_list[1].GetResult()=-12851
address_list[2].GetResult()=-12851
address_list[3].GetResult()=-12851
address_list[4].GetResult()=-12851
address_list[5].GetResult()=-12851
address_list[6].GetResult()=-12851
address_list[7].GetResult()=-12851
address_list[8].GetResult()=-12851
address_list[9].GetResult()=-12851
address_list[10].GetResult()=-12851
address_list[11].GetResult()=-12851
address_list[12].GetResult()=-12851
address_list[13].GetResult()=-12851
address_list[14].GetResult()=-12851
address_list[15].GetResult()=-12851
address_list[16].GetResult()=-12851
address_list[17].GetResult()=-12851
address_list[18].GetResult()=-12851
address_list[19].GetResult()=-12851
address_list[20].GetResult()=-12851
address_list[21].GetResult()=-12851
address_list[22].GetResult()=-12851
address_list[23].GetResult()=-12851
address_list[24].GetResult()=-12851
address_list[25].GetResult()=-12851
address_list[26].GetResult()=-12851
address_list[27].GetResult()=-12851
address_list[28].GetResult()=-12851
address_list[29].GetResult()=-12851
The only valid result is >>>address_list[0].GetResult()=22
It seems to me using the if check is questionable. Instead, if(address_list[i].GetResult()>0) might probably do the trick but the order have to be ignored.
I hope you can verify this or am I doing something wrong here?
Thanks...
HuiKM