In general, daqboards are synchronized to maintain higher sampling throughput and to time match channels. On boards that have sample hold circuitry or individual ADCs it would be to synchronize the channels. On multiplexed boards, such as the IOtech DaqBoard/1000, 2000 and 3000 series it would be to time match channel 1 with channel 1 on the second board, channel 2 with channe 2 and so on while maintaining higher throughput. Furthermore, using the IOtech DaqCOM programming object, the data buffer will contain data from both devices eliminating the need for an additional buffer read and the extra code to merge two buffers together.
How this works is the software sets one Pacer Clock to output and the other to input. The enumeration setting for the master tells it to output its scan sequence clock, while the setting for the slave instructs it to start sampling when externally clock is received. The master outputs the clock when it starts so there is no possibility of the slave board running prematurely. Below is CSharp code that demonstrates using DaqCOM to establish communication with two boards setting them to synchronized - a complete CSharp Visual Studio 2005 example is attached to this article. This examples setups two boards with the master board set to trigger at 1.0 volts on channel 0.
//Create Master Device object
pAcq.Devices.Add(DeviceType.dtDaqBoard3001USB, "");
pAcq.Devices[1].DeviceIdentity = "DaqBoard3001USB";
pAcq.Devices[1].OpenMethod = DeviceOpenMethod.domOpenBySystemName;
pAcq.Devices[1].Open();
pAcq.Devices[1].ClockSource = DeviceClockSource.dcsInternalOutputEnable;
//Create Slave Device object
pAcq.Devices.Add(DeviceType.dtDaqBoard3035USB, "");
pAcq.Devices[2].DeviceIdentity = "DaqBoard3035USB";
pAcq.Devices[2].OpenMethod = DeviceOpenMethod.domOpenBySystemName;
pAcq.Devices[2].Open();
pAcq.Devices[2].ClockSource = DeviceClockSource.dcsExternalRisingEdge;