User manual
Programmer’s Guide Page 12 of 64
3.2.1. PCI & VXI Identification by Order Found
If you don’t know which and/or how many Acqiris instruments are present on the machine, use this code fragment:
ViSession instrumentID[10];
long nbrInstruments;
ViStatus status;
ViString options = "";
status = Acqrs_getNbrInstruments(&nbrInstruments);
// Initialize the instruments
for (long i = 0; i < nbrInstruments; i++)
{
char resourceName[20];
sprintf(resourceName, "PCI::INSTR%d", i);
status = Acqrs_InitWithOptions(resourceName, VI_FALSE, VI_FALSE,
options, &(instrumentID[i]));
}
The resource name must be of the form “PCI::INSTR0”, “PCI::INSTR1”, etc. This is true in spite of the fact that all
PCI, cPCI, and VXI instruments will be found. The integer part of the resource name will be referred to as the
deviceIndex. The API contains a function, Acqrs_getDevTypeByIndex, to allow you to determine the family of an
instrument before actually initializing it.
If there are several instruments in the system, the order in which they are found is not obvious. It depends on the
Windows 2000/XP/Vista/7 (32/64) Configuration Manager implementation, on the PCI bus topology in your
computer, and possibly on the BIOS.
3.2.2. PCI Identification by Serial Number
All Acqiris instruments are labeled with a unique serial number. For PCI digitizers you will find it on the front panel
and for CompactPCI instruments it is on the right injector/ejector handle. This same serial number is coded into an
on-board EEPROM that is read by the Device Driver upon initialization. You can therefore ask to initialize a specific
instrument by specifying its serial number:
ViSession instrumentID;
Acqrs_InitWithOptions("PCI::SER10047", VI_FALSE, VI_FALSE, "",
&instrumentID);
Note that the serial number must be contiguous to the keyword SER; leading zeros are accepted.
3.2.3. PCI Identification by Bus/Slot Number
While initialization by serial number is easy to implement, it has the drawback that anytime an instrument is replaced
by another one (e.g. if a failure occurred), the program has to be modified. The Acqiris API offers the possibility of
specifying the logical position of the device at initialization:
ViSession instrumentID;
Acqrs_InitWithOptions("PCI::BUS02::SLOT06", VI_FALSE, VI_FALSE, "",
&instrumentID);
Again, the bus and slot numbers must be contiguous to the keywords BUS and SLOT; leading zeros are accepted.
Unfortunately, it is not obvious at all by simple inspection, which bus and slot number a given PCI device occupies.
One way to find out is to use AcqirisLive and to observe the bus/slot numbers that can be found under the Help menu
selection in Instrument Information. Another way is to use the auto-identification initialization method and then to
interrogate each device with:
ViSession instrumentID;
char name[20];
long serialNbr, busNbr, slotNbr;
Acqrs_getInstrumentData(instrumentID, name, &serialNbr, &busNbr,
&slotNbr);