Skip to content

Instantly share code, notes, and snippets.

@threadhead
Created November 2, 2010 16:12
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save threadhead/659861 to your computer and use it in GitHub Desktop.
Save threadhead/659861 to your computer and use it in GitHub Desktop.
Daqx.h
//---------------------------------------------------------------------------
// DAQX.H
//
// Header for the Enhanced API Data Acquisition Library.
///
//---------------------------------------------------------------------------
#ifndef DAQ_H
#define DAQ_H
#ifdef __cplusplus
extern "C" {
#endif
#if !defined(_DAQAPI32_)
#define DAQAPI __declspec(dllimport)
#else
#define DAQAPI
#endif
/*****************************************************************/
/* */
/* Initialization/Error Handling Definitions and Prototypes */
/* */
/*****************************************************************/
/* Error Code Definitions */
typedef enum {
DerrNoError = 0x00, /* 0 - No error. */
DerrBadChannel = 0x01, /* 1 - Specified LPT channel was out of range. */
DerrNotOnLine = 0x02, /* 2 - Requested device is not on line. */
DerrNoDaqbook = 0x03, /* 3 - DAQBook is not on the requested channel. */
DerrBadAddress = 0x04, /* 4 - Bad function address. */
DerrFIFOFull = 0x05, /* 5 - FIFO Full detected, possible data corruption. */
DerrBadDma = 0x06, /* 6 - Bad or illegal DMA channel or mode specified for device */
DerrBadInterrupt = 0x07, /* 7 - Bad or illegal INTERRUPT level specified for device */
DerrDmaBusy = 0x08, /* 8 - DMA is currently being used */
DerrInvChan = 0x10, /* 16 - Invalid analog input channel */
DerrInvCount = 0x11, /* 17 - Invalid count parameter */
DerrInvTrigSource = 0x12, /* 18 - Invalid trigger source parameter */
DerrInvLevel = 0x13, /* 19 - Invalid trigger level parameter */
DerrInvGain = 0x14, /* 20 - Invalid channel gain parameter */
DerrInvDacVal = 0x15, /* 21 - Invalid DAC output parameter */
DerrInvExpCard = 0x16, /* 22 - Invalid expansion card parameter */
DerrInvPort = 0x17, /* 23 - Invalid port parameter */
DerrInvChip = 0x18, /* 24 - Invalid chip parameter */
DerrInvDigVal = 0x19, /* 25 - Invalid digital output parameter */
DerrInvBitNum = 0x1a, /* 26 - Invalid bit number parameter */
DerrInvClock = 0x1b, /* 27 - Invalid clock parameter */
DerrInvTod = 0x1c, /* 28 - Invalid time-of-day parameter */
DerrInvCtrNum = 0x1d, /* 29 - Invalid counter number */
DerrInvCntSource = 0x1e, /* 30 - Invalid counter source parameter */
DerrInvCtrCmd = 0x1f, /* 31 - Invalid counter command parameter */
DerrInvGateCtrl = 0x20, /* 32 - Invalid gate control parameter */
DerrInvOutputCtrl = 0x21, /* 33 - Invalid output control parameter */
DerrInvInterval = 0x22, /* 34 - Invalid interval parameter */
DerrTypeConflict = 0x23, /* 35 - An integer was passed to a function requiring a character */
DerrMultBackXfer = 0x24, /* 36 - A second transfer was requested */
DerrInvDiv = 0x25, /* 37 - Invalid Fout divisor */
/* Temperature Conversion Errors */
DerrTCE_TYPE = 0x26, /* 38 - TC type out-of-range */
DerrTCE_TRANGE = 0x27, /* 39 - Temperature out-of-CJC range */
DerrTCE_VRANGE = 0x28, /* 40 - Voltage out-of-TC-range */
DerrTCE_PARAM = 0x29, /* 41 - Unspecified TC parameter value error */
DerrTCE_NOSETUP = 0x2a, /* 42 - daqCvtTCConvert called before daqCvtTCSetup */
/* Daqbook */
DerrNotCapable = 0x2b, /* 43 - Device is incapable of function */
/* background */
DerrOverrun = 0x2c, /* 44 - A buffer overrun occurred */
/* Zero and Cal Conversion Errors */
DerrZCInvParam = 0x2d, /* 45 - Unspecified Cal parameter value error */
DerrZCNoSetup = 0x2e, /* 46 - daqCalConvert called before daqCalSetup */
DerrInvCalFile = 0x2f, /* 47 - Cannot open the specified cal file */
/* environmental errors */
DerrMemLock = 0x30, /* 48 - Cannot lock allocated memory from operating system */
DerrMemHandle = 0x31, /* 49 - Cannot get a memory handle from operating system */
/* Pre-trigger acquisition errors */
DerrNoPreTActive = 0x32, /* 50 - No pre-trigger configured */
/* Dac FIFO errors (DaqBoard only) */
DerrInvDacChan = 0x33, /* 51 - DAC channel does not exist */
DerrInvDacParam = 0x34, /* 52 - DAC parameter invalid */
DerrInvBuf = 0x35, /* 53 - Buffer points to NULL or buffer size is zero */
DerrMemAlloc = 0x36, /* 54 - Could not allocate the needed memory */
DerrUpdateRate = 0x37, /* 55 - Could not achieve the specified update rate */
DerrInvDacWave = 0x38, /* 56 - Could not start DAC waveforms because of missing or invalid parameters*/
DerrInvBackDac = 0x39, /* 57 - Could not start DAC waveforms with background transfers*/
DerrInvPredWave = 0x3a, /* 58 - Predefined DAC waveform not supported */
/* RTD Conversion Errors */
DerrRtdValue = 0x3b, /* 59 - rtdValue out of range */
DerrRtdNoSetup = 0x3c, /* 60 - rtdConvert called before rtdSetup */
DerrRtdTArraySize = 0x3d, /* 61 - RTD Temperature array not large enough */
DerrRtdParam = 0x3e, /* 62 - Incorrect RTD parameter */
DerrInvBankType = 0x3f, /* 63 - Invalid bank type specified */
DerrBankBoundary = 0x40, /* 64 - Simultaneous writes to Dbk cards in different banks not allowed */
DerrInvFreq = 0x41, /* 65 - Invalid scan frequency specified */
DerrNoDaq = 0x42, /* 66 - No Daq 112B/216B device installed */
DerrInvOptionType = 0x43, /* 67 - Invalid option type parameter */
DerrInvOptionValue = 0x44, /* 68 - Invalid option value parameter */
// NEW API ERROR CODES
DerrTooManyHandles = 0x60, /* 96 - No more handles available to open */
DerrInvLockMask = 0x61, /* 97 - Only a part of the resource is already locked, must be all or none */
DerrAlreadyLocked = 0x62, /* 98 - All or part of the resource was locked by another application */
DerrAcqArmed = 0x63, /* 99 - Operation not available while an acquisition is armed */
DerrParamConflict = 0x64, /* 100 - Each parameter is valid, but the combination is invalid */
DerrInvMode = 0x65, /* 101 - Invalid acquisition mode */
DerrInvOpenMode = 0x66, /* 102 - Invalid file open mode */
DerrFileOpenError = 0x67, /* 103 - Unable to open file */
DerrFileWriteError = 0x68, /* 104 - Unable to write file */
DerrFileReadError = 0x69, /* 105 - Unable to read file */
DerrInvClockSource = 0x6a, /* 106 - Invalid clock source */
DerrInvEvent = 0x6b, /* 107 - Invalid transfer event */
DerrTimeout = 0x6c, /* 108 - Timeout on wait */
DerrInitFailure = 0x6d, /* 109 - Unexpected result occurred while initializing the hardware */
DerrBufTooSmall = 0x6e, /* 110 - Array too small */
DerrInvType = 0x6f, /* 111 - Invalid Dac Device type*/
DerrArraySize = 0x70, /* 112 - Array not large enough */
DerrBadAlias = 0x71, /* 113 - Invalid alias names for VXD lookup */
DerrInvCommand = 0x72, /* 114 - Invalid comamnd */
DerrInvHandle = 0x73, /* 115 - Invalid handle */
DerrNoTransferActive = 0x74, /* 116 - Transfer not active */
DerrNoAcqActive = 0x75, /* 117 - Acquisition not active */
DerrInvOpstr = 0x76, /* 118 - Invalid op string used for enhanced triggering */
DerrDspCommFailure = 0x77, /* 119 - Device with DSP failed communication */
DerrEepromCommFailure= 0x78, /* 120 - Device with Eeprom failed communication */
DerrInvEnhTrig = 0x79, /* 121 - Device using enhanced trigger detected invalid trig type */
DerrInvCalConstant = 0x7A, /* 122 - User calibration constant out of range */
DerrInvErrorCode = 0x7B, /* 123 - Invalid error code */
DerrInvAdcRange = 0x7C, /* 124 - Invalid analog input voltage range parameter */
DerrInvCalTableType = 0x7D, /* 125 - Invalid calibration table type */
DerrInvCalInput = 0x7E, /* 126 - Invalid calibration input signal selection */
DerrInvRawDataFormat = 0x7F, /* 127 - Invalid raw data format selection */
DerrNotImplemented = 0x80, /* 128 - Feature/function not implemented yet */
DerrInvDioDeviceType = 0x81, /* 129 - Invalid digital I/O device type */
DerrInvPostDataFormat= 0x82, /* 130 - Invalid post-processing data format selection */
DerrDaqStalled = 0x83, /* 131 - Low level driver stalled */
DerrDaqLostPower = 0x84, /* 132 - Daq Device has lost power */
DerrDaqMissing = 0x85, /* 133 - Daq Device is missing */
DerrScanConfig = 0x86, /* 134 - Invalid channel scan config */
DerrInvTrigSense = 0x87, /* 135 - Invalid trigger sense parameter */
DerrInvTrigEvent = 0x88, /* 136 - Invalid trigger event parameter */
DerrInvTrigChannel = 0x89, /* 137 - Trigger channel not in scan */
DerrDacWaveformNotActive = 0x8A, /* 138 - DAC waveform output not active */
DerrDacWaveformActive = 0x8B, /* 139 - DAC waveform output already active */
DerrDacNotEnoughMemory = 0x8C, /* 140 - DAC static waveforms exceed maximum length */
DerrDacBuffersNotEqual = 0x8D, /* 141 - DAC static waveforms unequal length */
DerrDacBufferTooSmall = 0x8E, /* 142 - DAC dynamic waveform buffer too small */
DerrDacBufferUnderrun = 0x8F, /* 143 - DAC dynamic waveform buffer underrun */
DerrDacPacerOverrun = 0x90, /* 144 - DAC pacer overrun */
DerrAdcPacerOverrun = 0x91, /* 145 - ADC pacer overrun */
DerrAdcNotReady = 0x92, /* 146 - ADC not ready */
DerrArbitrationFailure = 0x93, /* 147 - Internal bus arbitration error */
DerrDacWaveFileTooSmall = 0x94, /* 148 - DAC waveform file too small for requested use */
DerrDacWaveFileUnderrun = 0x95, /* 149 - DAC waveform file buffer underrun */
DerrDacWaveModeConflict = 0x96, /* 150 - DAC waveform mode, buffer, or source conflict */
DerrTedsInfoInvStatus = 0x97, /* 151 - No TEDs available */
} DaqError;
/* Handle Type Definition */
typedef INT DaqHandleT;
/* Initialization and Locking Prototypes */
DAQAPI DaqHandleT WINAPI daqOpen(LPSTR daqName);
DAQAPI DaqError WINAPI daqClose(DaqHandleT handle);
DAQAPI DaqError WINAPI daqOnline(DaqHandleT handle, PBOOL online);
/* Error Handler Type Definitions */
typedef VOID CALLBACK DaqErrorHandlerFT(DaqHandleT handle, DaqError errCode);
typedef DaqErrorHandlerFT *DaqErrorHandlerFPT;
/* Error Handler Function Prototypes */
DAQAPI DaqError WINAPI daqSetDefaultErrorHandler(DaqErrorHandlerFPT handler);
DAQAPI DaqError WINAPI daqSetErrorHandler(DaqHandleT handle, DaqErrorHandlerFPT handler);
DAQAPI DaqError WINAPI daqProcessError(DaqHandleT handle, DaqError errCode);
DAQAPI DaqError WINAPI daqGetLastError(DaqHandleT handle, DaqError *errCode);
DAQAPI VOID CALLBACK daqDefaultErrorHandler(DaqHandleT handle, DaqError errCode);
DAQAPI DaqError WINAPI daqFormatError(DaqError errorNum, PCHAR msg);
/*****************************************************************/
/* */
/* Event Handling Definitions and Prototypes */
/* */
/*****************************************************************/
/* Transfer Event Definitions */
typedef enum {
DteAdcData = 0,
DteAdcDone = 1,
DteDacData = 2, // unsupported
DteDacDone = 3, // unsupported
DteIOData = 4, // unsupported
DteIODone = 5, // unsupported
} DaqTransferEvent;
/* Transfer Event Wait Mode Definitions */
typedef enum {
DwmNoWait = 0,
DwmWaitForAny = 1,
DwmWaitForAll = 2,
} DaqWaitMode;
/* Event Handling Function Prototypes */
DAQAPI DaqError WINAPI daqSetTimeout(DaqHandleT handle, DWORD mSecTimeout);
DAQAPI DaqError WINAPI daqWaitForEvent(DaqHandleT handle, DaqTransferEvent event);
DAQAPI DaqError WINAPI daqWaitForEvents(DaqHandleT *handles, DaqTransferEvent *events,
DWORD eventCount, BOOL *eventSet, DaqWaitMode waitMode);
/*****************************************************************/
/* */
/* Hardware Information Definitions and Prototypes */
/* */
/*****************************************************************/
// Hardware Information Selector Definitions (daqGetHardwareInfo)
typedef enum {
DhiHardwareVersion = 0, // Daq Instrument Type
DhiProtocol = 1, // Comm protocol
// DhiAdcBits = 2, // not implemented
DhiADmin = 3, // ADC Output Low Range
DhiADmax = 4, // ADC Output High Range
// DhiAdcBlockSize = 5, // not implemented
// DhiDacBlockSize = 6, // not implemented
// DhiIOBlockSize = 7, // not implemented
// DhiMainChInfo = 8, // not implemented
// DhiOptionChInfo = 9, // not implemented
// DhiChanCount = 10, // not implemented
} DaqHardwareInfo;
/* General Information Selector Definitions */
typedef enum {
DdiHardwareVersionInfo = 0, // (DaqHardwareVersion)
DdiProtocolInfo = 1,
DdiChTypeInfo = 2,
DdiChOptionTypeInfo = 3,
DdiADminInfo = 4, // ADC Minimum voltage input level in Volts (FLOAT)
DdiADmaxInfo = 5, // ADC Maximum voltage input level in Volts (FLOAT)
DdiChanCountInfo = 6,
DdiNVRAMDateInfo = 7, // Date String
DdiNVRAMTimeInfo = 8, // Time String
DdiDbk4MaxFreqInfo = 9,
DdiDbk4SetBaselineInfo = 10,
DdiDbk4ExcitationInfo = 11,
DdiDbk4ClockInfo = 12,
DdiDbk4GainInfo = 13, /* internally used by daqAdcSetScan */
DdiDbk7SlopeInfo = 14,
DdiDbk7DebounceTimeInfo = 15,
DdiDbk7MinFreqInfo = 16,
DdiDbk7MaxFreqInfo = 17,
DdiDbk50GainInfo = 18, /* internally used by daqAdcSetScan */
DdiWbk12FilterCutOffInfo = 19,
DdiWbk12FilterTypeInfo = 20,
DdiWbk12FilterModeInfo = 21,
DdiWbk12PreFilterModeInfo = 22,
DdiWbk13FilterCutOffInfo = 23,
DdiWbk13FilterTypeInfo = 24,
DdiWbk13FilterModeInfo = 25,
DdiWbk13PreFilterModeInfo = 26,
DdiWbk14LowPassModeInfo = 27,
DdiWbk14LowPassCutOffInfo = 28,
DdiWbk14HighPassCutOffInfo = 29,
DdiWbk14CurrentSrcInfo = 30,
DdiWbk14PreFilterModeInfo = 31,
DdiWbk14ExcSrcWaveformInfo = 32,
DdiWbk14ExcSrcFreqInfo = 33,
DdiWbk14ExcSrcAmplitudeInfo = 34,
DdiWbk14ExcSrcOffsetInfo = 35,
DdiWgcX1Info = 36,
DdiWgcX2Info = 37,
DdiWgcX5Info = 38,
DdiWgcX10Info = 39,
DdiWgcX20Info = 40,
DdiWgcX50Info = 41,
DdiWgcX100Info = 42,
DdiWgcX200Info = 43,
DdiPreTrigFreqInfo = 44,
DdiPostTrigFreqInfo = 45,
DdiPreTrigPeriodInfo = 46,
DdiPostTrigPeriodInfo = 47,
DdiOptNVRAMDateInfo = 48,
DdiOptNVRAMTimeInfo = 49,
DdiExtFeatures = 50, // DaqHardwareExtFeatures
DdipDaqCalibrationTime = 50, // Personal Daq initial calibration period in ms
DdiFifoSize = 51, // FIFO capacity in WORD's of data.
DdiFifoCount = 52, // Count of WORD's of data currently in the FIFO
DdiSerialNumber = 53, // Serial Number String
DdiAdcClockSource = 54, // Current Clock Source
DdiFirmwareVersion = 55, // Firmware Version (String)
DdiHardwareVersion = 56, // Hardware Version (String)
DdiDriverVersion = 57, // Driver Version (String)
DdiAdcTriggerScan = 58, // Trigger Scan Number (DWORD) // Not Implemented
DdiAdcPreTriggerCount = 59, // Amount of Pre-Trigger Scans (DWORD) // Not Implemented
DdiAdcPostTriggerCount = 60, // Amount of Post-Trigger Scans (DWORD) // Not Implemented
DdiDetectSensor = 61, // Detects the presence of an external sensor (DWORD) // WaveBook Wbk14 only
DdiWbk12PreFilterCutOffInfo = 62, // Wbk12/Wbk12A pre-filter cutoff freq (FLOAT)
DdiWbk12PostFilterCutOffInfo= 63, // Wbk12A post-filter cutoff freq (FLOAT)
DdiWbk13PreFilterCutOffInfo = 64, // Wbk13/Wbk13A pre-filter cutoff freq (FLOAT)
DdiWbk13PostFilterCutOffInfo= 65, // Wbk13A post-filter cutoff freq (FLOAT)
DdiAdcLastRawTransferCount = 66, // undocumented.
DdiWgcX0_2Info = 67, // Wbk18 -25 to 25 volt range
DdiWbk18OpenSensorStatus =68,
DdiWbk18PosOverRangeStatus =69,
DdiWbk18NegOverRangeStatus =70,
DdiWbk18LowPassMode =71, // Enumeration value: Bypass, 8 pole and 2 pole
DdiWbk18LowPassCutOff =72, // Enumeration value: Filter setting
DdiWbk18HighPassCutOff =73, // Enumeration value: DC,0.1Hz and 10Hz
DdiWbk18CurrentSrc =74, // Enumeration value: Off and 4mA
DdiWbk18OverRangeEnable =75, // option value is 8 bit mask representing the 8 channels- zero disables all
DdiWbk18esMode =76, // zero,off,continuous output or Swept (sweep through up to 1280 freqs)
DdiWbk18esFreq =77, // 0.01Hz - 5000Hz
DdiWbk18esAmplitude =78, // Enumeration value: 7 amplitudes
DdiWbk18esFreqCycleTime =79, // Swept Mode:freq-to-freq time in seconds (50uS to 85,899,000uS)
DdiWbk18esFreqDurationTime =80, // Swept Mode:total time to sweep all freqs ( 50uS to 85,899,000uS)
DdiWbk18OverRangeLimit =81, // 1 - 100 (%) : percentage of selected range
DdiWbk18esImmediate =82, // used to reset, turn on and turn off the excitation source
DdiWbk18esRelay =83, // used to specify output relay on/off
DdiWbk18OpenSensorStatusAll =84, // returns an 8 bit value indicating status for all 8 channels
DdiWbk18PosOverRangeStatusAll=85, // returns an 8 bit value indicating status for all 8 channels
DdiWbk18NegOverRangeStatusAll=86, // returns an 8 bit value indicating status for all 8 channels
DdiParentName =87, // NOT USED
DdiBaseAddress =88, // NOT USED
DdiWbk18TEDsStatus =89, // returns one byte of status: // 0=TEDs found,Operation complete
// 1 = Teds operation busy
// 2 = Operation complete, NO TEDs
// 4 = Channel is shorted
DdiWbk18TEDsData =90, // returns 34 byte array of TEDs info as follows:
// info[0] = status
// info[1] = amount of teds data available
// info[2] = first byte of teds data if available
// infor[3..33] = teds data
DdiWbk18TEDsDataCount =91, // returns the amount of teds data available
} DaqInfo;
// Detect sensor definitions
typedef enum {
DdsTEDsFound = 0, // sensor was not detected
DdsTEDsBusy = 1, // sensor was detected
DdsTEDsNotFound = 2, // the sensor presence or absense could not be determined
DdsTEDsShorted = 3, // channel is shorted
} DaqDetectTEDs;
// Detect sensor definitions
typedef enum {
DdsNotDetected = 0, // sensor was not detected
DdsDetected = 1, // sensor was detected
DdsIndeterminate = 2, // the sensor presence or absense could not be determined
} DaqDetectSensor;
// Hardware Information Extended Feature Bits. These values are returned by
// daqGetInfo when the DaqInfo type DdiExtFeatures is specified.
typedef enum {
// WaveBook Mega-FIFO features.
DhefFifoOverflowMode = 0x00000001, // FIFO has Overflow Protection mode.
DhefFifoCycleMode = 0x00000002, // FIFO has Cycle ("Finite") Mode
DhefFifoDataCount = 0x00000004, // FIFO has readable current-WORD's-of-data count
// WaveBook516 features.
DhefTrigDigPattern = 0x00000010, // Can trigger on a digital pattern
DhefTrigPulseInput = 0x00000020, // Can trigger on a pulse input
DhefAcqClkExternal = 0x00000040, // Can pace acquisition to an external clock
// WaveBook A series features
DhefSyncMaster = 0x00000100, // Can be Sync Master (drive Clock and Trigger)
DhefSyncSlave = 0x00000200, // Can be Sync Slave (drive Clock and Trigger)
} DaqHardwareExtFeatures;
/* Hardware Version Definitions */
typedef enum {
DaqBook100 = 0,
DaqBook112 = 1,
DaqBook120 = 2,
DaqBook200 = 3, // DaqBook/200 or DaqBook/260
DaqBook216 = 4,
DaqBoard100 = 5,
DaqBoard112 = 6,
DaqBoard200 = 7,
DaqBoard216 = 8,
Daq112 = 9,
Daq216 = 10,
WaveBook512 = 11,
WaveBook516 = 12,
TempBook66 = 13,
PersonalDaq56 = 14,
WaveBook516_250 = 15,
WaveBook512_10V = 16,
DaqBoard2000 = 17,
DaqBoard2001 = 18,
DaqBoard2002 = 19,
DaqBoard2003 = 20,
DaqBoard2004 = 21,
DaqBoard2005 = 22,
DaqBook2000 = 23, // DaqBook/2000A or DaqBook/2000E
DaqBook2001 = 24,
DaqBook2002 = 25,
DaqBook2003 = 26,
DaqBook2004 = 27,
DaqBook2005 = 28,
WaveBook512A = 29,
WaveBook516A = 30, // WaveBook/516A or WaveBook/516E
WBK25 = 31,
WBK40 = 32,
WBK41 = 33,
DaqTemp7 = 0x100,
DaqTemp7A = 0x200,
DaqTemp14 = 0x400,
DaqTemp14A = 0x800,
} DaqHardwareVersion;
/* Protocol Definitions */
typedef enum {
DaqProtocolNone = 0, /* Communications not established */
DaqProtocol4 = 1, /* Standard LPT Port 4-bit mode */
DaqProtocol8 = 2, /* Standard LPT Port 8-bit mode */
DaqProtocolSMC666 = 3, /* SMC 37C666 EPP mode */
DaqProtocolFastEPP = 4, /* WBK20/21 Fast EPP mode */
DaqProtocolECP = 5, /* Enhanced Capability Port */
DaqProtocol8BitEPP = 6, /* 8-bit EPP mode */
DaqProtocolTCPIP = 7, /* TCPIP (eWave) */
DaqProtocolISA = 100, /* ISA bus card DaqBoard 100/200 */
DaqProtocolPcCard = 200, /* PCCard for Daq (PCMCIA) */
DaqProtocolUSB = 300, /* USB protocol (PersonalDaq) */
DaqProtocolPCI = 400, /* PCI bus card DaqBoard 2000 */
DaqProtocolCPCI = 500, /* Compact PCI bus card DaqBoard 2000 */
} DaqProtocol;
typedef struct {
char daqName[64];
} DaqDeviceListT;
// Used by daqGetDeviceProperties to get device information
typedef struct {
DaqHardwareVersion deviceType;
DWORD basePortAddress;
DWORD dmaChannel; /* Used for DaqBoard only */
DWORD socket; /* Used for Daq PC Card only */
DWORD interruptLevel;
DaqProtocol protocol;
char daqName[64];
DWORD maxAdChannels;
DWORD maxDaChannels;
DWORD maxDigInputBits;
DWORD maxDigOutputBits;
DWORD maxCtrChannels;
DWORD mainUnitAdChannels;
DWORD mainUnitDaChannels;
DWORD mainUnitDigInputBits;
DWORD mainUnitDigOutputBits;
DWORD mainUnitCtrChannels;
DWORD adFifoSize;
DWORD daFifoSize;
DWORD adResolution;
DWORD daResolution;
float adMinFreq;
float adMaxFreq;
float daMinFreq;
float daMaxFreq;
} DaqDevicePropsT;
/* Utility Function Prototypes */
DAQAPI DaqError WINAPI daqGetDriverVersion(PDWORD version);
DAQAPI DaqError WINAPI daqGetHardwareInfo(DaqHandleT handle, DaqHardwareInfo whichInfo, VOID * info);
DAQAPI DaqError WINAPI daqGetInfo(DaqHandleT handle, DWORD chan, DaqInfo whichInfo, VOID *info);
DAQAPI DaqError WINAPI daqGetDeviceCount(DWORD *deviceCount);
DAQAPI DaqError WINAPI daqGetDeviceList(DaqDeviceListT *deviceList, DWORD *deviceCount);
DAQAPI DaqError WINAPI daqGetDeviceProperties( LPSTR daqName, DaqDevicePropsT *deviceProps);
/*****************************************************************/
/* */
/* Dbk/Wbk Card Definitions and Prototypes */
/* */
/*****************************************************************/
/* Dbk Card Expansion Bank Definitions and WaveBook option unit */
/* and chassis definitions */
typedef enum {
DaetNotDefined = 0, // Bank is unknown or undefine the bank
DaetDbk50 = 1, // Dbk50 option
DaetDbk5 = 2, // Dbk5 option
DaetDbk2 = 3, // Dbk2 option
DaetDbk4 = 4, // Dbk4 option
DaetDbk7 = 5, // Dbk7 option
DoctWbk11 = 6, // Wbk11 sample and hold channel
DoctWbk12 = 7, // Wbk12 filter card
DoctWbk13 = 8, // Wbk13 filter & sample and hold card
DmctWbk512 = 9, // WaveBook/512 channel
DmctWbk10 = 10, // Wbk10 channel
DmctWbk14 = 11, // Wbk14 channel
DmctWbk15 = 12, // Wbk15 channel
DmctResponseDac = 13, // Response DAC on WaveBook
DmctWbk16 = 14, // Wbk16 channel
DmctWbk516 = 15, // WaveBook/516
DmctpDaq = 16, // PersonalDaq option
DmctWbk516_250 = 17, // 250 kHz WaveBook/516
DoctPga516 = 18, // WaveBook/516 PGA Board
DmctWbk512_10V = 19, // Wbk/512/10V
DmctWbk10_10V = 20, // Wbk10/10V
DmctWbk16_SSH = 21, // Wbk16 channel with SSH
DmctWbk10A = 22, // Wbk10A channel
DoctWbk12A = 23, // Wbk12A filter card
DoctWbk13A = 24, // Wbk13A filter & sample and hold card
DmctWbk17 = 25, // Wbk17 channel
DmctWbk512A = 26, // WaveBook/512A
DmctWbk516A = 27, // WaveBook/516A
DmctWbk18 = 28, // Wbk18 channel
} DaqAdcExpType;
/* Dbk Card Option Type Selector Definitions */
typedef enum {
DcotDbk4MaxFreq = 0,
DcotDbk4SetBaseline = 1,
DcotDbk4Excitation = 2,
DcotDbk4Clock = 3,
DcotDbk4Gain = 4, /* internally used by daqAdcSetScan */
DcotDbk7Slope = 0,
DcotDbk7DebounceTime = 1,
DcotDbk7MinFreq = 2,
DcotDbk7MaxFreq = 3,
DcotDbk50Gain = 0, /* internally used by daqAdcSetScan */
} DaqChanOptionType;
/* Dbk Card and WBK Expansion; Channel and Module Option Type Selector Definitions */
typedef enum {
// Dbk4
DdcotDbk4MaxFreq = 0,
DdcotDbk4SetBaseline = 1,
DdcotDbk4Excitation = 2,
DdcotDbk4Clock = 3,
DdcotDbk4Gain = 4, /* internally used by daqAdcSetScan */
// Dbk7
DdcotDbk7Slope = 0,
DdcotDbk7DebounceTime = 1,
DdcotDbk7MinFreq = 2,
DdcotDbk7MaxFreq = 3,
// Dbk50/51
DdcotDbk50Gain = 0, /* internally used by daqAdcSetScan */
/* Wbk module Option type Definitions */
// Wbk12
DcotWbk12FilterCutOff = 0,
DcotWbk12FilterType = 1,
DcotWbk12FilterMode = 2,
DcotWbk12PreFilterMode = 3,
DcotWbk12PreFilterCutOff = 4,
DcotWbk12PostFilterCutOff = 5,
// Wbk13
DcotWbk13FilterCutOff = 0,
DcotWbk13FilterType = 1,
DcotWbk13FilterMode = 2,
DcotWbk13PreFilterMode = 3,
DcotWbk13PreFilterCutOff = 4,
DcotWbk13PostFilterCutOff = 5,
// Wbk14
DcotWbk14LowPassMode = 0,
DcotWbk14LowPassCutOff = 1,
DcotWbk14HighPassCutOff = 2,
DcotWbk14CurrentSrc = 3,
DcotWbk14PreFilterMode = 4,
DmotWbk14ExcSrcWaveform = 5,
DmotWbk14ExcSrcFreq = 6,
DmotWbk14ExcSrcAmplitude = 7,
DmotWbk14ExcSrcOffset = 8,
DmotWbk14ExcSrcApply = 9,
DcotWbk14ExtFilterRange = 10,
DcotWbk14DetectSensor = 11,
// Wbk16
DcotWbk16Bridge = 0,
DcotWbk16ShuntCal = 1,
DcotWbk16InDiag = 2,
DcotWbk16OffsetDac = 3,
DcotWbk16OutSource = 4,
DcotWbk16Inv = 5,
DcotWbk16FilterType = 6,
DcotWbk16Couple = 7,
DcotWbk16Sample = 8,
DcotWbk16ExcDac = 9,
DcotWbk16IAG = 10,
DcotWbk16PGA = 11,
DmotWbk16Immediate = 12,
// Wbk17
DcotWbk17Level = 0, // Range: +/-12.5 Volts
DcotWbk17Coupling = 1, // Off, AC, DC
DcotWbk17FilterType = 2, // Bypass, 100K, 20K, 30Hz
DcotWbk17DebounceTime = 3, // Enumeration or Bypass
DcotWbk17DebounceTrigger = 4, // Trigger After/Before Stable
DcotWbk17Edge = 5, // Rising/Falling Edge
DcotWbk17MeasurementMode = 6, // Enumeration with Bit-Masking
DcotWbk17TickSize = 7, // Enumeration; 20ns-20us
DcotWbk17MapChannel = 8, // Enumeration; counter or detector 1 - 8 (= "Z" in encoder mode)
// Wbk17 Detection
DcotWbk17DetectClear = 20, // Enumeration; clear/reset channel or unit (all)
DcotWbk17DetectControl = 21, // Enumeration; set comparison or off/clear
// Be sure to use DcofSubChannel... DaqChanOptionFlagType + Detector number (1-16)
DcotWbk17DetectLowLimit = 22, // 0 - 65535
DcotWbk17DetectHighLimit = 23, // 0 - 65535
DcotWbk17DetectDigComp = 24, // 0 - 255 : Dig port comparison value
DcotWbk17DetectDigMask = 25, // 0 - 255 : DigMask used by DigComp AND DigOut
DcotWbk17DetectDigOut = 26, // 0 - 255 : Dig port output value (on detection true if enabled)
// Wbk18
DcotWbk18LowPassMode = 0, // Enumeration: Bypass, 8 pole and 2 pole
DcotWbk18LowPassCutOff = 1, // Enumeration:
DcotWbk18HighPassCutOff = 2, // Enumeration: DC,0.1Hz and 10Hz
DcotWbk18CurrentSrc = 3, // Enumeration: Off and 4mA
DcotWbk18OverRangeEnable = 4, // Enumeration: Off and On
DmotWbk18esMode = 5, // zero,off,continuous output or Swept (sweep through up to 1280 freqs)
DmotWbk18esFreq = 6, // 0.01Hz - 5000Hz
DmotWbk18esAmplitude = 7, // Enumeration: 7 amplitudes
DmotWbk18esFreqCycleTime = 8, // Swept Mode:freq-to-freq time in seconds (50uS to 85,899,000uS)
DmotWbk18esFreqDurationTime = 9, // Swept Mode:total time to sweep all freqs ( 50uS to 85,899,000uS)
DmotWbk18OverRangeLimit = 10, // 1 - 100 (%) : percentage of selected range
DmotWbk18OverRangeEnable = 11, // option value is 8 bit mask representing the 8 channels- zero disables all
DmotWbk18esImmediate = 12, // used to reset, turn on and turn off the excitation source
DmotWbk18esRelay = 13, // used to specify output relay on/off
DcotWbk18CurrentSrcImmediate = 14, // Enumeration: Off and 4mA - Action immediate
DcotWbk18TEDsStatus = 15,
DcotWbk18TEDsData = 16,
// pDaq option types
DcotpDaqSlope = 0,
DcotpDaqDebounceTime = 1,
DcotpDaqMinFreq = 2,
DcotpDaqMaxFreq = 3,
DcotpDaqPulses = 4,
// Pga516 Option Types
DcotPga516LowPassMode = 0,
// Base unit options. chan and flags arguments are ignored
DbotBaseUnitOption = 0x8000, // bit mask that marks all base unit options.
DbotFifoOverflowMode = 0x8001, // True/False, where True enables the mode
DbotFifoCycleMode = 0x8002, // True/False, where True enables the mode
DbotFifoCycleSize = 0x8003, // Cycle buffer length in WORD's
DbotFifoFlush = 0x8004, // Flush all data in the FIFO now.
DbotFifoNoFlushOnDisarm = 0x8005, // Disable Buffer Flushing upon Disarm
// Dig I/O, Counter, & Timer Configuration & Control
DcotDigitalOption = 0x1000, // bit mask that marks all Digital options.
DcotP2Local8Mode = 0x1001, // Input, Output
DcotP2Exp8Mode = 0x1002, // Input, Output
DcotP3Local16Mode = 0x1003, // Input, Output
DcotCounterOption = 0x2000, // bit mask that marks all Counter options.
DcotCounterCascade = 0x2001, // Single, Cascaded
DcotCounterMode = 0x2002, // Clear on Read, Totalize
DcotCounterControl = 0x2003, // Off, On, Immediate Clear
DmotCounterControl = 0x2004, // All Counters: Off, On, Immediate Clear
DcotCounterEdge = 0x2005, // Falling or Rising Edge Detection
DcotTimerOption = 0x4000, // bit mask that marks all Timer options.
DcotTimerDivisor = 0x4001, // 16-bit Number (freq = 1MHz / (Divisor + 1))
DcotTimerControl = 0x4002, // Off, On
DmotTimerControl = 0x4003, // All Timers: Off, On
} DaqOptionType;
typedef enum {
DcofChannel = 0x00, // Channel Option; Apply option to one channel only
DcofModule = 0x01, // Module Option; Apply option to whole module
// Use only with Dmot... DaqModuleOptionTypes and Dmov... DaqModuleOptionValues
// SubChannel Identifiers for WBK17 Detection Options
// Use enum + detection number (1 - 16)
DcofSubChannelLow = 0x1000, // Counter Low Word
DcofSubChannelHigh = 0x2000, // Counter High Word
} DaqChanOptionFlagType;
/* Dbk Card and WBK Expansion; Option Value Definitions */
typedef enum {
// Digital I/O Port Mode Definitions for All DcotDigitalOptions
DcovDigitalInput = 0,
DcovDigitalOutput = 1,
// Counter Cascade Option Definitions for DcotCounterCascade
DcovCounterSingle = 0,
DcovCounterCascade = 1,
// Counter Mode Option Definitions for DcotCounterMode
DcovCounterClearOnRead = 0,
DcovCounterTotalize = 1,
// Counter Edge Option Definitions for DcotCounterEdge
DcovCounterFallingEdge = 0,
DcovCounterRisingEdge = 1,
// Counter Control Option Definitions for:
// DcotCounterControl (Individual Channel)
// DmotCounterControl (All Counters)
DcovCounterOff = 0,
DcovCounterOn = 1,
DcovCounterManualClear = 2,
// Timer Control Option Definitions for:
// DcotTimerControl (Individual Channel)
// DmotTimerControl (All Counters)
DcovTimerOff = 0,
DcovTimerOn = 1,
/* Dbk4 cutoff frequencies for DcotMaxFreq option type */
DcovDbk4Freq18000Hz = 0,
DcovDbk4Freq9000Hz = 1,
DcovDbk4Freq4500Hz = 2,
DcovDbk4Freq2250Hz = 3,
DcovDbk4Freq1125Hz = 4,
DcovDbk4Freq563Hz = 5,
DcovDbk4Freq281Hz = 6,
DcovDbk4Freq141Hz = 7,
/* Dbk4 set baseline for DcotSetBaseline option type */
DcovDbk4BaselineNever = 0,
DcovDbk4BaselineOneShot = 1,
/* Dbk7 debounce times for DcotDebounceTime option type */
DcovDbk7DebounceNone = 0,
DcovDbk7Debounce600us = 1,
DcovDbk7Debounce2500us = 2,
DcovDbk7Debounce10ms = 3,
/* Wbk Option Value Definitions */
/* Wbk 12 Filter Type Definitions for DcotWbk12FilterType */
DcovWbk12FilterElliptic = 0,
DcovWbk12FilterLinear = 1,
/* Wbk 12 Filter Mode Definitions for DcotWbk12FilterMode */
DcovWbk12FilterBypass = 0,
DcovWbk12FilterOn = 1,
/* Wbk 12 Anti-Aliasing Filter Mode Definitions for DcotWbk12PreFilterMode */
DcovWbk12PreFilterDefault = 0,
DcovWbk12PreFilterOff = 1,
/* Wbk 12 Anti-Aliasing Filter CutOff Frequency Definitions for DcotWbk12PreFilterCutOff */
DcovWbk12PreFilterCutOffDefault = 0,
/* Wbk 12A Clock Filter CutOff Frequency Definitions for DcotWbk12PostFilterCutOff */
DcovWbk12PostFilterCutOffDefault = 0,
/* Wbk 13 Filter Type Definitions for DcotWbk13FilterType */
DcovWbk13FilterElliptic = 0,
DcovWbk13FilterLinear = 1,
/* Wbk 13 Filter Mode Definitions for DcotWbk13FilterMode */
DcovWbk13FilterBypass = 0,
DcovWbk13FilterOn = 1,
/* Wbk 13 Anti-Aliasing Filter Mode Definitions for DcotWbk13PreFilterMode */
DcovWbk13PreFilterDefault = 0,
DcovWbk13PreFilterOff = 1,
/* Wbk 13 Anti-Aliasing Filter CutOff Frequency Definitions for DcotWbk13PreFilterCutOff */
DcovWbk13PreFilterCutOffDefault = 0,
/* Wbk 13A Clock Filter CutOff Frequency Definitions for DcotWbk13PostFilterCutOff */
DcovWbk13PostFilterCutOffDefault = 0,
/* Wbk 14 Current Source Definitions for DcotWbk14CurrentSrc */
DcovWbk14CurrentSrcOff = 0,
DcovWbk14CurrentSrc2mA = 1,
DcovWbk14CurrentSrc4mA = 2,
/* Wbk 14 High Pass Filter Definitions for DcotWbk14HighPassCutOff */
DcovWbk14HighPass0_1Hz = 0,
DcovWbk14HighPass10Hz = 1,
/* Wbk 14 Low Pass Filter Mode Definitions for DcotWbk14LowPassMode */
DcovWbk14LowPassBypass = 0,
DcovWbk14LowPassOn = 1,
DcovWbk14LowPassExtClk = 2,
/* Wbk 14 Low Pass Filter Mode Definitions for DcotWbk14PreFilterMode */
DcovWbk14PreFilterDefault = 0,
DcovWbk14PreFilterOff = 1,
/*Wbk14 External (Order Tracking) Filter Frequency Range Definitions*/
DcovWbk14FilterRange_1K = 0,
DcovWbk14FilterRange_5K = 1,
DcovWbk14FilterRange_10K = 2,
DcovWbk14FilterRange_15K = 3,
DcovWbk14FilterRange_20K = 4,
/* Wbk 14 Excitation Source Waveform Definitions for WmotWbk14ExcSrcWaveform */
DmovWbk14ExcSrcRandom = 0,
DmovWbk14ExcSrcSine = 1,
// Wbk16 Bridge Definitions
DcovWbk16ApplyFull = 0,
DcovWbk16ApplyHalfQtrPos = 1,
DcovWbk16ApplyHalfQtrNeg = 2,
// Wbk16 Shunt resistors cal definitions
DcovWbk16ApplyNone = 0,
DcovWbk16Apply120 = 1,
DcovWbk16Apply350 = 2,
DcovWbk16Apply1K = 3,
DcovWbk16AutoZero = 4,
// Wbk16 Input Diagnostics definitions
DcovWbk16ReadNone = 0,
DcovWbk16ReadHalf = 1,
DcovWbk16ReadPosArm = 2,
// Wbk16 Output Source definitions
DcovWbk16ReadSignal = 0,
DcovWbk16ReadExcVolts = 1,
DcovWbk16ReadExcCurr = 2,
// Wbk16 SSH definitions
DcovWbk16Bypassed = 0,
DcovWbk16Ssh = 1,
// Wbk16 Inversion definitions
DcovWbk16Normal = 0,
DcovWbk16Inverted = 1,
// WbK16 Filter Type Definitions
DcovWbk16FltBypass = 0,
DcovWbk16Flt10Hz = 1,
DcovWbk16Flt1Khz = 2,
// Wbk16 Coupling Definitions
DcovWbk16CoupleDC = 0,
DcovWbk16CoupleAC = 1,
// Wbk16 Instrumentation Amplifier w/Gain Definitions
DcovWbk16X1 = 0,
DcovWbk16X10 = 1,
DcovWbk16X100 = 2,
DcovWbk16X1000 = 3,
// Wbk16 Programmable Gain Amplifier Definitions
DcovWbk16X1_00 = 0,
DcovWbk16X1_28 = 1,
DcovWbk16X1_65 = 2,
DcovWbk16X2_11 = 3,
DcovWbk16X2_71 = 4,
DcovWbk16X3_48 = 5,
DcovWbk16X4_47 = 6,
DcovWbk16X5_74 = 7,
DcovWbk16X7_37 = 8,
DcovWbk16X9_46 = 9,
DcovWbk16X12_14 = 10,
DcovWbk16X15_58 = 11,
DcovWbk16X20_00 = 12,
// Wbk16 Calibrated excitation DAC values.
DcovWbk16Exc0_0 = 0,
DcovWbk16Exc0_5 = 0x1000,
DcovWbk16Exc1_0 = 0x2000,
DcovWbk16Exc2_0 = 0x3000,
DcovWbk16Exc5_0 = 0x4000,
DcovWbk16Exc10_0 = 0x5000,
// Wbk16 Immediate Function Definitions
DmovWbk16ExcSrcApply = 0,
DmovWbk16ReadTemp = 1,
DmovWbk16ReadJumpers = 2,
DmovWbk16FanOn = 3,
DmovWbk16FanOff = 4,
// Wbk17 Input Coupling Definitions
DcovWbk17CoupleOff = 0, // input off
DcovWbk17CoupleAC = 1,
DcovWbk17CoupleDC = 2,
// WbK17 Filter Type Definitions
DcovWbk17FltBypass = 0,
DcovWbk17Flt100KHz = 1,
DcovWbk17Flt20KHz = 2,
DcovWbk17Flt30Hz = 4,
// Wbk17 Debounce Times
DcovWbk17Debounce500ns = 0,
DcovWbk17Debounce1500ns = 1,
DcovWbk17Debounce3500ns = 2,
DcovWbk17Debounce7500ns = 3,
DcovWbk17Debounce15500ns = 4,
DcovWbk17Debounce31500ns = 5,
DcovWbk17Debounce63500ns = 6,
DcovWbk17Debounce127500ns = 7,
DcovWbk17Debounce100us = 8,
DcovWbk17Debounce300us = 9,
DcovWbk17Debounce700us = 10,
DcovWbk17Debounce1500us = 11,
DcovWbk17Debounce3100us = 12,
DcovWbk17Debounce6300us = 13,
DcovWbk17Debounce12700us = 14,
DcovWbk17Debounce25500us = 15,
DcovWbk17DebounceNone = 16,
// Wbk17 Debounce Trigger
DcovWbk17TriggerAfterStable = 0,
DcovWbk17TriggerBeforeStable = 1,
// Wbk17 Edge Detection
DcovWbk17RisingEdge = 0,
DcovWbk17FallingEdge = 1,
// Wbk17 Measurement Modes and mode specific flags
// Usage: combine the Mode with any Mode specific settings required.
// (DcovWbk17Mode_Counter | DcovWbk17Counter_ClearOnRead | DcovWbk17ModeMask_32Bit)
// these are available for all modes
// the rest are mode specific
DcovWbk17ModeMask_16Bit = 0x00,
DcovWbk17ModeMask_32Bit = 0x04,
DcovWbk17ModeMaskGatingOff = 0x00,
DcovWbk17ModeMaskGatingOn = 0x10,
DcovWbk17Mode_OFF = 0x0000,
DcovWbk17Mode_Counter = 0x0100,
DcovWbk17Counter_Totalize = 0x00,
DcovWbk17Counter_ClearOnRead = 0x01,
DcovWbk17Counter_RollOver = 0x00,
DcovWbk17Counter_StopOnTop = 0x02,
DcovWbk17Counter_LatchOnSOS = 0x00,
DcovWbk17Counter_LatchOnMap = 0x08,
DcovWbk17Counter_DecrementOff= 0x00,
DcovWbk17Counter_DecrementOn = 0x20,
DcovWbk17Counter_CountChan = 0x00,
DcovWbk17Counter_CountMap = 0x40,
DcovWbk17Mode_Period = 0x0200,
DcovWbk17Period_X1 = 0,
DcovWbk17Period_X10 = 1,
DcovWbk17Period_X100 = 2,
DcovWbk17Period_X1000 = 3,
DcovWbk17Period_MeasChan = 0x00,
DcovWbk17Period_MeasMap = 0x40,
DcovWbk17Mode_PulseWidth = 0x0300,
DcovWbk17PulseWidth_MeasChan = 0x00,
DcovWbk17PulseWidth_MeasMap = 0x40,
DcovWbk17Mode_Timing = 0x0400,
DcovWbk17Mode_Encoder = 0x0500,
DcovWbk17Encoder_X1 = 0,
DcovWbk17Encoder_X2 = 1,
DcovWbk17Encoder_X4 = 2,
DcovWbk17Encoder_LatchOnSOS = 0x00,
DcovWbk17Encoder_LatchOnZ = 0x08,
DcovWbk17Encoder_ClearOnZ_Off= 0x00,
DcovWbk17Encoder_ClearOnZ_On = 0x20,
// Wbk17 Tick Size
DcovWbk17Tick20ns = 0,
DcovWbk17Tick200ns = 1,
DcovWbk17Tick2000ns = 2,
DcovWbk17Tick20000ns = 3,
// Wbk17 Map Channel
DcovWbk17Map_Channel_1 = 1,
DcovWbk17Map_Channel_2 = 2,
DcovWbk17Map_Channel_3 = 3,
DcovWbk17Map_Channel_4 = 4,
DcovWbk17Map_Channel_5 = 5,
DcovWbk17Map_Channel_6 = 6,
DcovWbk17Map_Channel_7 = 7,
DcovWbk17Map_Channel_8 = 8,
DcovWbk17Map_Detect_1 = 9,
DcovWbk17Map_Detect_2 = 10,
DcovWbk17Map_Detect_3 = 11,
DcovWbk17Map_Detect_4 = 12,
DcovWbk17Map_Detect_5 = 13,
DcovWbk17Map_Detect_6 = 14,
DcovWbk17Map_Detect_7 = 15,
DcovWbk17Map_Detect_8 = 16,
// Wbk17 Clear Detection Settings : DcotWbk17DetectClear
DcovWbk17DetClr_Chan = 0, // Clear all settings of specified channel (Low AND High)
DcovWbk17DetClr_All = 1, // Clear all settings of all channels (Low AND High)
// Wbk17 Detection Control : DcotWbk17DetectControl
// Settings can be combined (DcovWbk17DtctCtrl_Below_Low | DcovWbk17DtctCtrl_Update_Dig)
// Note: Be sure to use DcofSubChannel... DaqChanOptionFlagType
DcovWbk17DetCtrl_Off = 0, // Detection Setting Off
DcovWbk17DetCtrl_Below_Low = 1, // Count < Low Limit
DcovWbk17DetCtrl_Above_High = 2, // High Limit < Count
DcovWbk17DetCtrl_Outside_Range = 3, // (Count < Low Limit) || (High Limit < Count)
DcovWbk17DetCtrl_Inside_Range = 4, // Low Limit > Count > High Limit
DcovWbk17DetCtrl_Dig_Eq_Dig = 8, // (DigComp & DigMask) == (DigOut & DigMask) (actual)
DcovWbk17DetCtrl_Update_Dig = 16,// Update DigOut On Detection (using DigMask & DigOut)
/* Wbk 18 Channel Definitions for DcotWbk18OverRangeEnable */
DcovWbk18OverRangeOff = 0,
DcovWbk18OverRangeOn = 1,
/* Wbk 18 Current Source Definitions for DcotWbk18CurrentSrc */
DcovWbk18CurrentSrcOff = 0,
DcovWbk18CurrentSrc4mA = 1,
/* Wbk 18 High Pass Filter Definitions for DcotWbk18HighPassCutOff */
DcovWbk18HighPass0_1Hz = 0,/* Not valid for WgcGain0_2 */
DcovWbk18HighPass10Hz = 1,/* Not valid for WgcGain0_2 */
DcovWbk18HighPassDC = 2,
/* Wbk 18 Low Pass Filter Mode Definitions for DcotWbk18LowPassMode */
DcovWbk18LowPassBypass = 0,
DcovWbk18LowPass_8_Pole = 1,
DcovWbk18LowPass_2_Pole = 2,
/* Wbk 18 Low Pass Filter Frequencies Definitions for DcotWbk18LowPassCutOff */
DcovWbk18LPF_Cutoff_10Hz = 0,
DcovWbk18LPF_Cutoff_20Hz = 1,
DcovWbk18LPF_Cutoff_50Hz = 2,
DcovWbk18LPF_Cutoff_100Hz = 3,
DcovWbk18LPF_Cutoff_200Hz = 4,
DcovWbk18LPF_Cutoff_500Hz = 5,
DcovWbk18LPF_Cutoff_1000Hz = 6,
DcovWbk18LPF_Cutoff_2000Hz = 7,
DcovWbk18LPF_Cutoff_5000Hz = 8,
DcovWbk18LPF_Cutoff_10000Hz = 9,
DcovWbk18LPF_Cutoff_20000Hz = 10,
DcovWbk18LPF_Cutoff_50000Hz = 11,
/* Wbk 18 External Source level Definitions for DmotWbk18esAmplitude */
DmovWbk18esAmplitude10pp =0, //10 volts peak-to-peak
DmovWbk18esAmplitude5pp =1, //5 volts peak-to-peak
DmovWbk18esAmplitude2pp =2, //2 volts peak-to-peak
DmovWbk18esAmplitude1pp =3, //1 volts peak-to-peak
DmovWbk18esAmplitude0_5pp =4, //0.5 volts peak-to-peak
DmovWbk18esAmplitude0_2pp =5, //0.2 volts peak-to-peak
DmovWbk18esAmplitude0_1pp =6, //0.1 volts peak-to-peak
DmovWbk18esAmplitude0_0pp =7, // 0.0 volts
/* Wbk 18 Excitation Source Definitions for DmotWbk18esMode */
DmovWbk18esSine = 0, // continuous sinewave mode
DmovWbk18esSweptSine = 1, // swept mode
// Wbk 18 Excitation Source Definitions for DmotWbk18esRelay
DmovWbk18esRelayOpen = 0,
DmovWbk18esRelayClosed = 1,
//Wbk18 Excitation Source definitions for DmotWbk18esImmediate
DmovWbk18esStop =0, // stops excitation output
DmovWbk18esStart =1, // starts excitation output using current amplitude/freq values
DmovWbk18esWriteRAM =3, // writes the current amplitude/freq/relay values to RAM
DmovWbk18esClearRAM =4, // erase stored segments
// WaveBook/516 Filter
DcovPga516LowPassBypass = 0,
DcovPga516LowPassOn = 1,
} DaqChanOptionValue;
/* Bank Configuration Prototypes */
DAQAPI DaqError WINAPI daqAdcExpSetBank(DaqHandleT handle, DWORD chan,
DaqAdcExpType bankType);
/* Obsolete. Use daqSetOption */
DAQAPI DaqError WINAPI daqAdcExpSetChanOption(DaqHandleT handle, DWORD chan,
DaqChanOptionType optionType, FLOAT optionValue);
DAQAPI DaqError WINAPI daqAdcExpSetModuleOption(DaqHandleT handle, DWORD chan,
DaqChanOptionType optionType, FLOAT optionValue);
/* Universal function for setting channel and module options in WaveBooks and Daq* Devices */
/* flags defined in DaqChanOptionFlagType */
/* Some Option Types have enumerated Option Values (DaqChanOptionValue) */
DAQAPI DaqError WINAPI daqSetOption(DaqHandleT handle, DWORD chan, DWORD flags,
DaqOptionType optionType, FLOAT optionValue);
/*****************************************************************/
/* */
/* ADC Definitions and Prototypes */
/* */
/*****************************************************************/
/* ADC Gain Definitions */
typedef enum {
/* Base Unit */
DgainX1 = 0,
DgainX2 = 1,
DgainX4 = 2,
DgainX8 = 3,
DgainX16 = 4, // DaqBoard2000 series only
DgainX32 = 5, // DaqBoard2000 series only
DgainX64 = 6, // DaqBoard2000 series only
/* Base Unit Gain on DBK Connected Channel */
/* Reference Only : Use DBK Specific Codes in Applications */
DgainX1DbkNone = 0,
DgainX2DbkNone = 4,
DgainX4DbkNone = 8,
DgainX8DbkNone = 12,
DgainX16DbkNone = 16, // DaqBoard2000 series only
DgainX32DbkNone = 20, // DaqBoard2000 series only
DgainX64DbkNone = 24, // DaqBoard2000 series only
/* Dbk4 - Filter Mode (jumper selectable) */
Dbk4FilterX1 = 0,
Dbk4FilterX10 = 1,
Dbk4FilterX100 = 2,
Dbk4FilterX1000 = 3,
Dbk4FilterX2 = 4,
Dbk4FilterX20 = 5,
Dbk4FilterX200 = 6,
Dbk4FilterX2000 = 7,
Dbk4FilterX4 = 8,
Dbk4FilterX40 = 9,
Dbk4FilterX400 = 10,
Dbk4FilterX4000 = 11,
Dbk4FilterX8 = 12,
Dbk4FilterX80 = 13,
Dbk4FilterX800 = 14,
Dbk4FilterX8000 = 15,
/* Dbk4 - Bypass Mode (jumper selectable) */
Dbk4BypassX1_583 = 0,
Dbk4BypassX15_83 = 1,
Dbk4BypassX158_3 = 2,
Dbk4BypassX1583 = 3,
Dbk4BypassX3_166 = 4,
Dbk4BypassX31_66 = 5,
Dbk4BypassX316_6 = 6,
Dbk4BypassX3166 = 7,
Dbk4BypassX6_332 = 8,
Dbk4BypassX63_32 = 9,
Dbk4BypassX633_2 = 10,
Dbk4BypassX6332 = 11,
Dbk4BypassX12_664 = 12,
Dbk4BypassX126_64 = 13,
Dbk4BypassX1266_4 = 14,
Dbk4BypassX12664 = 15,
/* Dbk6 */
Dbk6X1 = 0,
Dbk6X4 = 1,
Dbk6X16 = 2,
Dbk6X64 = 3,
Dbk6X2 = 4,
Dbk6X8 = 5,
Dbk6X32 = 6,
Dbk6X128 = 7,
Dbk6X256 = 11,
Dbk6X512 = 15,
Dbk6X1024 = 19, // DaqBoard2000 series only
Dbk6X2048 = 23, // DaqBoard2000 series only
Dbk6X4096 = 27, // DaqBoard2000 series only
/* Dbk7 Bipolar */
Dbk7X1 = 0,
Dbk7X2 = DgainX2DbkNone, // use with PCCard & DaqBoard/2000
/* Dbk8 */
Dbk8X1 = 0,
Dbk8X2 = DgainX2DbkNone, // use with PCCard & DaqBoard/2000
/* Dbk9 */
Dbk9VoltageA = 0,
Dbk9VoltageB = 1,
Dbk9VoltageC = 2,
Dbk9VoltageD = 3,
/* PCCard Dbk9 use with PCCard & DaqBoard/2000 */
DbkPCC9VoltageA = 4,
DbkPCC9VoltageB = 5,
DbkPCC9VoltageC = 6,
DbkPCC9VoltageD = 7,
/* Dbk12 */
Dbk12X1 = 0,
Dbk12X2 = 1,
Dbk12X4 = 2,
Dbk12X8 = 3,
Dbk12X16 = 7,
Dbk12X32 = 11,
Dbk12X64 = 15,
Dbk12X128 = 19, // DaqBoard2000 series only
Dbk12X256 = 23, // DaqBoard2000 series only
Dbk12X512 = 27, // DaqBoard2000 series only
/* Dbk13 */
Dbk13X1 = 0,
Dbk13X10 = 1,
Dbk13X100 = 2,
Dbk13X1000 = 3,
Dbk13X2 = 4,
Dbk13X20 = 5,
Dbk13X200 = 6,
Dbk13X2000 = 7,
Dbk13X4 = 8,
Dbk13X40 = 9,
Dbk13X400 = 10,
Dbk13X4000 = 11,
Dbk13X8 = 12,
Dbk13X80 = 13,
Dbk13X800 = 14,
Dbk13X8000 = 15,
Dbk13X16 = 16, // DaqBoard2000 series only
Dbk13X160 = 17, // DaqBoard2000 series only
Dbk13X1600 = 18, // DaqBoard2000 series only
Dbk13X16000 = 19, // DaqBoard2000 series only
Dbk13X32 = 20, // DaqBoard2000 series only
Dbk13X320 = 21, // DaqBoard2000 series only
Dbk13X3200 = 22, // DaqBoard2000 series only
Dbk13X32000 = 23, // DaqBoard2000 series only
Dbk13X64 = 24, // DaqBoard2000 series only
Dbk13X640 = 25, // DaqBoard2000 series only
Dbk13X6400 = 26, // DaqBoard2000 series only
Dbk13X64000 = 27, // DaqBoard2000 series only
/* Dbk14 Bipolar */
Dbk14BiCJC = Dbk13X2,
Dbk14BiTypeJ = Dbk13X100,
Dbk14BiTypeK = Dbk13X100,
Dbk14BiTypeT = Dbk13X200,
Dbk14BiTypeE = Dbk13X40,
Dbk14BiTypeN28 = Dbk13X400,
Dbk14BiTypeN14 = Dbk13X100,
Dbk14BiTypeS = Dbk13X200,
Dbk14BiTypeR = Dbk13X200,
Dbk14BiTypeB = Dbk13X400,
/* PCCard & DaqBoard/2000 Dbk14 Bipolar */
/* place main unit in -5 to +5v range (additional x2 gain) */
/* bipolar gains only */
DbkPCC14BiCJC = Dbk13X4,
DbkPCC14BiTypeJ = Dbk13X200,
DbkPCC14BiTypeK = Dbk13X200,
DbkPCC14BiTypeT = Dbk13X400,
DbkPCC14BiTypeE = Dbk13X80,
DbkPCC14BiTypeN28 = Dbk13X800,
DbkPCC14BiTypeN14 = Dbk13X200,
DbkPCC14BiTypeS = Dbk13X400,
DbkPCC14BiTypeR = Dbk13X400,
DbkPCC14BiTypeB = Dbk13X800,
/* Dbk14 Unipolar */
Dbk14UniCJC = Dbk13X4,
Dbk14UniTypeJ = Dbk13X200,
Dbk14UniTypeK = Dbk13X200,
Dbk14UniTypeT = Dbk13X400,
Dbk14UniTypeE = Dbk13X100,
Dbk14UniTypeN28 = Dbk13X800,
Dbk14UniTypeN14 = Dbk13X200,
Dbk14UniTypeS = Dbk13X400,
Dbk14UniTypeR = Dbk13X400,
Dbk14UniTypeB = Dbk13X800,
/* Dbk15 Bipolar */
Dbk15BiX1 = 0,
Dbk15BiX2 = 1,
/* Dbk15 Unipolar : Output of card offset to +/-5 V */
Dbk15UniX1 = 2,
Dbk15UniX2 = 3,
/* Dbk16 */
Dbk16ReadBridge = 0,
Dbk16SetOffset = 1,
Dbk16SetScalingGain = 2,
Dbk16SetInputGain = 3,
/* Dbk16 with X2 gain on main unit */
DbkPCC16ReadBridge = 4, // use with PCCard & DaqBoard/2000
DbkPCC16SetOffset = 5, // use with PCCard & DaqBoard/2000
DbkPCC16SetScalingGain = 6, // use with PCCard & DaqBoard/2000
DbkPCC16SetInputGain = 7, // use with PCCard & DaqBoard/2000
/* Dbk17 */
Dbk17X1 = 0,
Dbk17X2 = DgainX2DbkNone, // use with PCCard & DaqBoard/2000
/* Dbk18 */
Dbk18X1 = 0,
Dbk18X2 = DgainX2DbkNone, // use with PCCard & DaqBoard/2000
/* Dbk19 Bipolar */
Dbk19BiCJC = 0,
Dbk19BiTypeJ = 1,
Dbk19BiTypeK = 1,
Dbk19BiTypeT = 2,
Dbk19BiTypeE = 0,
Dbk19BiTypeN28 = 3,
Dbk19BiTypeN14 = 1,
Dbk19BiTypeS = 3,
Dbk19BiTypeR = 2,
Dbk19BiTypeB = 3,
/* PCCard & DaqBoard/2000 Dbk19 Bipolar */
/* place main unit in -5 to +5v range (additional x2 gain) */
/* bipolar gains only */
DbkPCC19BiCJC = 4,
DbkPCC19BiTypeJ = 5,
DbkPCC19BiTypeK = 5,
DbkPCC19BiTypeT = 6,
DbkPCC19BiTypeE = 4,
DbkPCC19BiTypeN28 = 7,
DbkPCC19BiTypeN14 = 5,
DbkPCC19BiTypeS = 7,
DbkPCC19BiTypeR = 6,
DbkPCC19BiTypeB = 7,
/* Dbk19 Unipolar */
Dbk19UniCJC = 1,
Dbk19UniTypeJ = 2,
Dbk19UniTypeK = 2,
Dbk19UniTypeT = 3,
Dbk19UniTypeE = 1,
Dbk19UniTypeN28 = 3,
Dbk19UniTypeN14 = 2,
Dbk19UniTypeS = 3,
Dbk19UniTypeR = 3,
Dbk19UniTypeB = 3,
/* Dbk42 */
Dbk42X1 = 0,
Dbk42X2 = DgainX2DbkNone, // use with PCCard & DaqBoard/2000
/* Dbk43 */
Dbk43ReadBridge = 0,
Dbk43SetOffset = 1,
Dbk43SetScalingGain = 2,
Dbk43SetInputGain = 3,
/* Dbk43 with X2 gain on main unit */
DbkPCC43ReadBridge = 4, // use with PCCard & DaqBoard/2000
DbkPCC43SetOffset = 5, // use with PCCard & DaqBoard/2000
DbkPCC43SetScalingGain = 6, // use with PCCard & DaqBoard/2000
DbkPCC43SetInputGain = 7, // use with PCCard & DaqBoard/2000
/* Dbk44 */
Dbk44X1 = 0,
Dbk44X2 = DgainX2DbkNone, // use with PCCard & DaqBoard/2000
/* Dbk45 */
Dbk45X1 = 0,
Dbk45X2 = DgainX2DbkNone, // use with PCCard & DaqBoard/2000
/* Dbk50 */
Dbk50Range0 = 0,
Dbk50Range10 = 1,
Dbk50Range100 = 2,
Dbk50Range300 = 3,
/* Dbk50 with X2 gain on main unit */
DbkPCC50Range0 = 4, // use with PCCard & DaqBoard/2000
DbkPCC50Range10 = 5, // use with PCCard & DaqBoard/2000
DbkPCC50Range100 = 6, // use with PCCard & DaqBoard/2000
DbkPCC50Range300 = 7, // use with PCCard & DaqBoard/2000
/* Dbk51 */
Dbk51Range0 = 0,
Dbk51Range100mV = 1,
Dbk51Range1 = 2,
Dbk51Range10 = 3,
/* Dbk51 with X2 gain on main unit */
DbkPCC51Range0 = 4, // use with PCCard & DaqBoard/2000
DbkPCC51Range100mV = 5, // use with PCCard & DaqBoard/2000
DbkPCC51Range1 = 6, // use with PCCard & DaqBoard/2000
DbkPCC51Range10 = 7, // use with PCCard & DaqBoard/2000
/* Dbk52 Bipolar */
Dbk52BiCJC = Dbk19BiCJC,
Dbk52BiTypeJ = Dbk19BiTypeJ,
Dbk52BiTypeK = Dbk19BiTypeK,
Dbk52BiTypeT = Dbk19BiTypeT,
Dbk52BiTypeE = Dbk19BiTypeE,
Dbk52BiTypeN28 = Dbk19BiTypeN28,
Dbk52BiTypeN14 = Dbk19BiTypeN14,
Dbk52BiTypeS = Dbk19BiTypeS,
Dbk52BiTypeR = Dbk19BiTypeR,
Dbk52BiTypeB = Dbk19BiTypeB,
/* PCCard & DaqBoard/2000 Dbk52 Bipolar */
/* place main unit in -5 to +5v range (additional x2 gain) */
/* bipolar gains only */
DbkPCC52BiCJC = DbkPCC19BiCJC,
DbkPCC52BiTypeJ = DbkPCC19BiTypeJ,
DbkPCC52BiTypeK = DbkPCC19BiTypeK,
DbkPCC52BiTypeT = DbkPCC19BiTypeT,
DbkPCC52BiTypeE = DbkPCC19BiTypeE,
DbkPCC52BiTypeN28 = DbkPCC19BiTypeN28,
DbkPCC52BiTypeN14 = DbkPCC19BiTypeN14,
DbkPCC52BiTypeS = DbkPCC19BiTypeS,
DbkPCC52BiTypeR = DbkPCC19BiTypeR,
DbkPCC52BiTypeB = DbkPCC19BiTypeB,
/* Dbk52 Unipolar */
Dbk52UniCJC = Dbk19UniCJC,
Dbk52UniTypeJ = Dbk19UniTypeJ,
Dbk52UniTypeK = Dbk19UniTypeK,
Dbk52UniTypeT = Dbk19UniTypeT,
Dbk52UniTypeE = Dbk19UniTypeE,
Dbk52UniTypeN28 = Dbk19UniTypeN28,
Dbk52UniTypeN14 = Dbk19UniTypeN14,
Dbk52UniTypeS = Dbk19UniTypeS,
Dbk52UniTypeR = Dbk19UniTypeR,
Dbk52UniTypeB = Dbk19UniTypeB,
/* Dbk70 */
Dbk70X1 = 0,
Dbk70X2 = DgainX2DbkNone, // Use with PCCard or DaqBoard/2000 and DafBipolar (+/-5V)
// all others with DafUnipolar (or jumper) (0-5V)
Dbk70X4 = DgainX4DbkNone, // Use with DaqBoard/2000 and DafUnipolar (0-5V)
/* Dbk80 */
Dbk80X1 = 0,
Dbk80X2 = DgainX2DbkNone, // gain on DaqBook/Board itself
Dbk80X4 = DgainX4DbkNone,
Dbk80X8 = DgainX8DbkNone,
Dbk80X16 = DgainX16DbkNone, // DaqBoard2000 series only
Dbk80X32 = DgainX32DbkNone, // DaqBoard2000 series only
Dbk80X64 = DgainX64DbkNone, // DaqBoard2000 series only
/* DaqBook/Board 100,112,120,200,216,260 ONLY! */
/* Dbk81 & Dbk82 - Bipolar Only */
Dbk81CJC = 0,
Dbk81TypeJ = 0,
Dbk81TypeK = 0,
Dbk81TypeT = DgainX2DbkNone,
Dbk81TypeE = 0,
Dbk81TypeN28 = DgainX2DbkNone,
Dbk81TypeN14 = 0,
Dbk81TypeS = DgainX2DbkNone,
Dbk81TypeR = DgainX2DbkNone,
Dbk81TypeB = DgainX2DbkNone,
Dbk81x100 = 0, // Voltage Mode (+/- 50mV) Actual gain of 99.915 gives +/-50.043 mV
/* PCCard & DaqBoard/2000 Dbk81 & Dbk82 - Bipolar Only */
/* places main unit in -5 to +5v range (additional x2 gain) */
/* bipolar gains only */
DbkPCC81CJC = DgainX2DbkNone,
DbkPCC81TypeJ = DgainX2DbkNone,
DbkPCC81TypeK = DgainX2DbkNone,
DbkPCC81TypeT = DgainX4DbkNone,
DbkPCC81TypeE = DgainX2DbkNone,
DbkPCC81TypeN28 = DgainX4DbkNone,
DbkPCC81TypeN14 = DgainX2DbkNone,
DbkPCC81TypeS = DgainX4DbkNone,
DbkPCC81TypeR = DgainX4DbkNone,
DbkPCC81TypeB = DgainX4DbkNone,
DbkPCC81x100 = DgainX1DbkNone, // Voltage Mode (+/- 100 mV) Actual gain of 99.915 gives +/- 100.085mV
/* DaqBook/2000 Dbk90 - Bipolar Only */
Dbk90CJC = DgainX2DbkNone,
Dbk90TypeJ = DgainX2DbkNone,
Dbk90TypeK = DgainX2DbkNone,
Dbk90TypeT = DgainX4DbkNone,
Dbk90TypeE = DgainX2DbkNone,
Dbk90TypeN28 = DgainX4DbkNone,
Dbk90TypeN14 = DgainX2DbkNone,
Dbk90TypeS = DgainX4DbkNone,
Dbk90TypeR = DgainX4DbkNone,
Dbk90TypeB = DgainX4DbkNone,
/* Dbk207 */
Dbk207X1 = 0,
Dbk207X2 = DgainX2DbkNone, // use with PCCard & DaqBoard/2000
/* Wavebook gain codes */
WgcX1 = 0,
WgcX2 = 1,
WgcX5 = 2,
WgcX10 = 3,
WgcX20 = 4, // Wbk11, 12, 13, & Wbk14 only
WgcX50 = 5, // Wbk11, 12, 13, & Wbk14 only
WgcX100 = 6, // Wbk11, 12, 13, & Wbk14 only
WgcX200 = 7, // Wbk10A with Wbk11,12,or 13 installed, & Wbk14 only
WgcX0_2 = 8, // Wbk18 Gain = 0.2 DC Couple only Range = -25V to 25V
// WaveBook digital gain codes NOT currently used! : Use WgcX1 and set DaqAdcFlags as required
WgcDigital8 = 8, // 8-Bit Digital : proper DaqAdcFlags also required
WgcDigital16 = 9, // 16-Bit Digital : proper DaqAdcFlags also required
WgcCtr16 = 10,// 16-Bit Countet/Timer : proper DaqAdcFlags also required
WgcCtr32Low = 11,// 32-Bit Counter (High Byte) : proper DaqAdcFlags also required
WgcCtr32High = 12,// 32-Bit Counter (Low Byte) : proper DaqAdcFlags also required
/* TempBook/66 voltage gain codes */
TgainX1 = 0,
TgainX2 = 1,
TgainX5 = 2,
TgainX10 = 3,
TgainX20 = 5,
TgainX50 = 6,
TgainX100 = 7,
TgainX200 = 11,
/* TempBook/66 Thermocouple Bipolar */
TbkBiCJC = TgainX50,
TbkBiTypeJ = TgainX100,
TbkBiTypeK = TgainX100,
TbkBiTypeT = TgainX200,
TbkBiTypeE = TgainX50,
TbkBiTypeN28 = TgainX100,
TbkBiTypeN14 = TgainX100,
TbkBiTypeS = TgainX200,
TbkBiTypeR = TgainX200,
TbkBiTypeB = TgainX200,
/* TempBook/66 Thermocouple Unipolar */
TbkUniCJC = TgainX100,
TbkUniTypeJ = TgainX200,
TbkUniTypeK = TgainX200,
TbkUniTypeT = TgainX200,
TbkUniTypeE = TgainX100,
TbkUniTypeN28 = TgainX200,
TbkUniTypeN14 = TgainX200,
TbkUniTypeS = TgainX200,
TbkUniTypeR = TgainX200,
TbkUniTypeB = TgainX200,
/* pDaq Gain Types */
PgainDiv5 = 8,
PgainX1 = 0,
PgainX2 = 1,
PgainX4 = 16,
PgainX8 = 17,
PgainX16 = 18,
PgainX32 = 19,
PgainX64 = 20,
PgainX128 = 21,
} DaqAdcGain;
/* ADC Flag Definitions */
typedef enum {
/* Unipolar/Bipolar Flag */
DafUnipolar = 0x00,
DafBipolar = 0x02,
/* Unsigned/Signed ADC Data Flag */
DafUnsigned = 0x00,
DafSigned = 0x04,
/* Single Ended/Differential Flag */
DafSingleEnded = 0x00,
DafDifferential = 0x08,
DafSingleEndedLow = 0x0000, // pDaq Type
DafSingleEndedHigh = 0x1000, // pDaq Type
/* SSH Hold/Sample Flag - For Internal Use Only */
DafSSHSample = 0x00,
DafSSHHold = 0x10,
/* Analog/High Speed Digital Flag */
DafAnalog = 0x00,
DafHighSpeedDigital = 0x01,
/* pDaq Digital or Counter Flag */
DafScanDigital = 0x01,
/* WaveBook Digital Channel Flags */
DafDigital8 = 0x001,
DafDigital16 = 0x101,
/* Daq2000 P2/P3 Digital Channel Flags */
DafP2Local8 = 0x2001,
DafP2Exp8 = 0x4001,
DafP3Local16 = 0x0001,
/* WaveBook & Daq2000 Counter Channel Flags */
DafCtr16 = 0x201,
DafCtr32Low = 0x401,
DafCtr32High = 0x801,
/* Daq2000 Counter Edge Flags */
DafCtrRisingEdge = 0x00000,
DafCtrFallingEdge = 0x10000,
/* pDaq & Daq2000 Counter Types */
DafCtrPulse = 0x20000,
DafCtrTotalize = 0x40000,
/* pDaq Digital and Counter Types */
DafDioDirect = 0x00000,
DafCtrFreq = 0x80000,
DafCtrDutyLo = 0x100000,
DafCtrDutyHi = 0x200000,
/* pDaq Notch Frequencies */
DafMeasDuration610 = 0x000000,
DafMeasDuration370 = 0x100000,
DafMeasDuration310 = 0x200000,
DafMeasDuration130 = 0x300000,
DafMeasDuration110 = 0x400000,
DafMeasDuration40 = 0x500000,
DafMeasDuration20 = 0x600000,
DafMeasDuration12_5 = 0x700000,
/* Daq2000 Settling Time Control */
DafSettle5us = 0x000000,
DafSettle10us = 0x800000,
DafSettle1ms = 0x2000000,
/* Clear or shift the least significant nibble - typically used with 12-bit ADCs */
DafIgnoreLSNibble = 0x00,
DafClearLSNibble = 0x20,
DafShiftLSNibble = 0x40,
/*Shift the least significant Digital Byte - typically used with 8-bit WaveBook DIO port*/
DafDigitalShiftLSByte = 0x40,
/* pDaq, TempBook, & DBK19/52 Thermocouple Type codes */
DafTcTypeNone = 0x00,
DafTcTypeJ = 0x80,
DafTcTypeK = 0x100,
DafTcTypeT = 0x180,
DafTcTypeE = 0x200,
DafTcTypeN28 = 0x280,
DafTcTypeN14 = 0x300,
DafTcTypeS = 0x380,
DafTcTypeR = 0x400,
DafTcTypeB = 0x480,
DafTcCJC = 0x500,
// 64 Channel expansion
Daf64ChannelExp = 0x800,
/* WaveBook Internal Channel Flags */
DafIgnoreType = 0x1000000,
} DaqAdcFlag;
typedef enum {
DarUni0to10V = 0, // Unipolar 0 to +10 Volt range
DarBiMinus5to5V = 1, // Bipolar -5 to +5 Volt range
DarUniPolarDE = 0, // Unipolar Differential
DarBiPolarDE = 1, // Bipolar Differential
DarUniPolarSE = 2, // Unipolar Single Ended
DarBiPolarSE = 3, // Bipolar Single Ended
} DaqAdcRangeT;
/* Custom ADC Acquisition Prototypes - Scan Sequence */
DAQAPI DaqError WINAPI daqAdcSetMux(DaqHandleT handle, DWORD startChan, DWORD endChan, DaqAdcGain gain,
DWORD flags);
DAQAPI DaqError WINAPI daqAdcSetScan(DaqHandleT handle, PDWORD channels, DaqAdcGain *gains, PDWORD flags,
DWORD chanCount);
DAQAPI DaqError WINAPI daqAdcGetScan(DaqHandleT handle, PDWORD channels, DaqAdcGain *gains, PDWORD flags,
PDWORD chanCount);
/* Channel Type Definitions for Trigger Calculations*/
typedef enum {
DaqTypeAnalogLocal = 0,
DaqTypeDigitalLocal = 100000,
DaqTypeDigitalExp = 200000,
DaqTypeCounterLocal = 400000,
DaqTypeDBK1 = 1,
DaqTypeDBK4 = 4,
DaqTypeDBK6 = 6,
DaqTypeDBK7 = 7,
DaqTypeDBK8 = 8,
DaqTypeDBK9 = 9,
DaqTypeDBK12 = 12,
DaqTypeDBK13 = 13,
DaqTypeDBK14 = 14,
DaqTypeDBK15 = 15,
DaqTypeDBK16 = 16,
DaqTypeDBK17 = 17,
DaqTypeDBK18 = 18,
DaqTypeDBK19 = 19,
DaqTypeDBK20 = 20,
DaqTypeDBK21 = 21,
DaqTypeDBK23 = 23,
DaqTypeDBK24 = 24,
DaqTypeDBK25 = 25,
DaqTypeDBK42 = 42,
DaqTypeDBK43 = 43,
DaqTypeDBK44 = 44,
DaqTypeDBK45 = 45,
DaqTypeDBK50 = 50,
DaqTypeDBK51 = 51,
DaqTypeDBK52 = 52,
DaqTypeDBK53 = 53,
DaqTypeDBK54 = 54,
DaqTypeDBK56 = 56,
DaqTypeDBK70 = 70,
DaqTypeDBK80 = 80,
DaqTypeDBK81 = 81,
DaqTypeDBK82 = 82,
DaqTypeDBK90 = 90,
DaqTypeDBK207 = 207,
DaqTypeDBK208 = 208,
DaqTypeDBK210 = 210,
} DaqChannelType;
/* Trigger Event Flags */
typedef enum {
DaqStartEvent = 0,
DaqStopEvent = 1,
} DaqTriggerEvent;
/* ADC Trigger Source Definitions */
typedef enum {
DatsImmediate = 0,
DatsSoftware = 1,
DatsAdcClock = 2,
DatsGatedAdcClock = 3,
DatsExternalTTL = 4,
DatsHardwareAnalog = 5,
DatsSoftwareAnalog = 6,
DatsEnhancedTrig = 7, // WaveBook series only
DatsDigPattern = 8,
DatsPulse = 9, // WaveBook/516 only
DatsScanCount = 10, // Stop Event only
DatsCounter = 6, // DaqBoard2000 series only
} DaqAdcTriggerSource;
/* Enhanced Trigger Sense Definitions */
typedef enum {
DetsRisingEdge = 0,
DetsFallingEdge = 1,
DetsAboveLevel = 2,
DetsBelowLevel = 3,
DetsAfterRisingEdge = 4,
DetsAfterFallingEdge = 5,
DetsAfterAboveLevel = 6,
DetsAfterBelowLevel = 7,
DetsEQLevel = 8,
DetsNELevel = 9,
/* WaveBook/516 */
DetsWindowAboveLevelBeforeTime = 10,
DetsWindowAboveLevelAfterTime = 11,
DetsWindowBelowLevelBeforeTime = 12,
DetsWindowBelowLevelAfterTime = 13,
} DaqEnhTrigSensT;
/* Custom ADC Acquisition Prototypes - Trigger */
/* Daq* function to set acquisition start and stop events with built in level calculations */
/* Replaces the daqAdcCalcTrig, daqAdcSetTrig combination */
DAQAPI DaqError WINAPI daqSetTriggerEvent(DaqHandleT handle, DaqAdcTriggerSource trigSource,
DaqEnhTrigSensT trigSensitivity, DWORD channel, DaqAdcGain gainCode, DWORD flags,
DaqChannelType channelType, FLOAT level, FLOAT variance, DaqTriggerEvent event);
/* WaveBook function for setting complex triggering */
DAQAPI DaqError WINAPI daqAdcSetTrigEnhanced(DaqHandleT handle, DaqAdcTriggerSource *trigSources,
DaqAdcGain *gains, DaqAdcRangeT *adcRanges, DaqEnhTrigSensT *trigSensitivity, PFLOAT level,
PFLOAT hysteresis, PDWORD channels, DWORD chanCount, char *opStr);
/* Calculate trigger level in counts for daqAdcSetTrig */
DAQAPI DaqError WINAPI daqAdcCalcTrig(DaqHandleT handle, BOOL bipolar, FLOAT gainVal, FLOAT voltageLevel,
PWORD triggerLevel);
/* Recommended for Immediate or Software Trigger Only */
DAQAPI DaqError WINAPI daqAdcSetTrig(DaqHandleT handle, DaqAdcTriggerSource triggerSource, BOOL rising,
WORD level, WORD hysteresis, DWORD channel);
/* Send Trigger Command */
DAQAPI DaqError WINAPI daqAdcSoftTrig(DaqHandleT handle);
/* ADC Clock Source Definitions */
typedef enum {
DacsAdcClock = 0,
DacsGatedAdcClock = 1,
DacsTriggerSource = 2,
DacsExternalTTL = 3,
DacsAdcClockDiv2 = 4,
/* Daq2000 External Clock Detection Flags*/
DacsRisingEdge = 0,
DacsFallingEdge = 0x100,
/* Daq2000 Internal Clock Output Control Flags*/
DacsOutputDisable = 0,
DacsOutputEnable = 0x1000,
/* WaveBook/516A,512A,516E and DaqBook/2000A,X,E Master/Slave Control */
DacsSyncMaster = 0x2000, // RJ-11 External Trigger and Clock Driven as Outputs
DacsSyncSlave = 0x4000, // RJ-11 External Trigger and Clock Set to Inputs
} DaqAdcClockSource;
/* Setup and Retrieve Freq. or Period */
typedef enum {
DarmPeriod = 0,
DarmFrequency = 1,
DarmExtClockPacer = 2,
DarmTTLPacer = 3,
} DaqAdcRateMode;
typedef enum {
DaasPreTrig = 0,
DaasPostTrig = 1,
} DaqAdcAcqState;
/* Custom ADC Acquisition Prototypes - Set Clock Source and Scan Rate */
DAQAPI DaqError WINAPI daqAdcSetClockSource(DaqHandleT handle, DaqAdcClockSource clockSource);
DAQAPI DaqError WINAPI daqAdcSetRate(DaqHandleT handle, DaqAdcRateMode mode, DaqAdcAcqState state, FLOAT reqValue, PFLOAT actualValue);
/* Superceded by daqAdcSetRate */
DAQAPI DaqError WINAPI daqAdcSetFreq(DaqHandleT handle, FLOAT freq);
DAQAPI DaqError WINAPI daqAdcGetFreq(DaqHandleT handle, PFLOAT freq);
/* ADC Acquisition Mode Definitions */
typedef enum {
DaamNShot = 0,
DaamNShotRearm = 1, // WaveBook only
DaamInfinitePost = 2,
DaamPrePost = 3,
} DaqAdcAcqMode;
/* Custom ADC Acquisition Prototypes - Scan Count, Rate and Source */
DAQAPI DaqError WINAPI daqAdcSetAcq(DaqHandleT handle, DaqAdcAcqMode mode, DWORD preTrigCount,
DWORD postTrigCount);
/* ADC File Open Mode Definitions */
typedef enum {
DaomAppendFile = 0,
DaomWriteFile = 1,
DaomCreateFile = 2,
} DaqAdcOpenMode;
/* Custom ADC Acquisition Prototypes - Direct-to-Disk */
DAQAPI DaqError WINAPI daqAdcSetDiskFile(DaqHandleT handle, LPSTR filename, DaqAdcOpenMode openMode,
DWORD preWrite);
/* Custom ADC Acquisition Prototypes - Acquisition Control */
DAQAPI DaqError WINAPI daqAdcArm(DaqHandleT handle);
DAQAPI DaqError WINAPI daqAdcDisarm(DaqHandleT handle);
/* ADC Transfer Mask Definitions */
typedef enum {
DatmCycleOff = 0x00,
DatmCycleOn = 0x01,
DatmUpdateBlock = 0x00,
DatmUpdateSingle = 0x02,
DatmUpdateAny = 0x04,
DatmUserBuf = 0x00,
DatmDriverBuf = 0x08,
DatmIgnoreOverruns = 0x10,
// WaveBook Only : Enable user-buffer overflow protection. NOTE: This mode
// changes the usage of the active and retCount arguments of daqGetTransferStat
DatmPacingMode = 0x20,
// Special forced update for DaqBoard2000
DatmUpdateUser = 0x40,
} DaqAdcTransferMask;
/* ADC Acquisition/Transfer Active Flag Definitions */
typedef enum {
DaafAcqActive = 0x01, // DaafAcqArmed || DaafAcqDataPresent
DaafAcqTriggered = 0x02,
DaafTransferActive = 0x04,
DaafAcqArmed = 0x08, // WaveBook Only
DaafAcqDataPresent = 0x10 // WaveBook Only : Data In Hardware FIFO
} DaqAdcActiveFlag;
/* Custom ADC Acquisition Prototypes - Data Transfer without Buffer Allocation */
DAQAPI DaqError WINAPI daqAdcTransferSetBuffer(DaqHandleT handle, PWORD buf, DWORD scanCount,
DWORD transferMask);
DAQAPI DaqError WINAPI daqAdcTransferStart(DaqHandleT handle);
DAQAPI DaqError WINAPI daqAdcTransferGetStat(DaqHandleT handle,
PDWORD active, PDWORD retCount);
DAQAPI DaqError WINAPI daqAdcTransferStop(DaqHandleT handle);
// Driver Buffer Retrieval Flags
typedef enum {
DabtmOldest = 0x00,
DabtmNewest = 0x01,
DabtmWait = 0x00,
DabtmRetAvail = 0x02,
DabtmNoWait = 0x04,
DabtmRetNotDone = 0x08,
} DaqAdcBufferXferMask;
// This function is used to request driver buffer data
DAQAPI DaqError WINAPI daqAdcTransferBufData(DaqHandleT handle, PWORD buf, DWORD scanCount, DaqAdcBufferXferMask bufMask, PDWORD retCount);
/* Custom ADC Acquisition Prototypes - Buffer Manipulation */
DAQAPI DaqError WINAPI daqAdcBufferRotate(DaqHandleT handle, PWORD buf, DWORD scanCount, DWORD chanCount,
DWORD retCount);
/* One-Step ADC Acquisition Prototypes */
DAQAPI DaqError WINAPI daqAdcRd(DaqHandleT handle, DWORD chan, PWORD sample, DaqAdcGain gain,
DWORD flags);
DAQAPI DaqError WINAPI daqAdcRdScan(DaqHandleT handle, DWORD startChan, DWORD endChan,
PWORD buf, DaqAdcGain gain, DWORD flags);
DAQAPI DaqError WINAPI daqAdcRdN(DaqHandleT handle, DWORD chan, PWORD buf, DWORD scanCount,
DaqAdcTriggerSource triggerSource, BOOL rising, WORD level, FLOAT freq,
DaqAdcGain gain, DWORD flags);
DAQAPI DaqError WINAPI daqAdcRdScanN(DaqHandleT handle, DWORD startChan, DWORD endChan, PWORD buf,
DWORD scanCount, DaqAdcTriggerSource triggerSource, BOOL rising, WORD level,
FLOAT freq, DaqAdcGain gain, DWORD flags);
typedef enum {
DardfNative = 0,
DardfPacked = 1, /* WaveBook/512 & 512H Only */
DardfFloat = 2, /* Personal Daq Only */
} DaqAdcRawDataFormatT;
typedef enum {
DappdfRaw = 0,
DappdfTenthsDegC = 1, /* Used to read thermocouple data with the TempBook/66 via One-Step functions (daqAdcRd) */
} DaqAdcPostProcDataFormatT;
// Sets the data formats for raw and post-processed data : 12-bit WaveBook Data Packing
DAQAPI DaqError WINAPI daqAdcSetDataFormat(DaqHandleT handle, DaqAdcRawDataFormatT rawFormat,
DaqAdcPostProcDataFormatT postProcFormat);
/* Type for raw data format conversion action */
typedef enum {
DacaUnpack = 0,
DacaPack = 1,
DacaRotate = 2,
} DaqAdcCvtAction;
// converts data format base on the action variable
DAQAPI DaqError WINAPI daqCvtRawDataFormat(PWORD buf, DaqAdcCvtAction action, DWORD lastRetCount,
DWORD scanCount, DWORD chanCount);
/*****************************************************************/
/* */
/* DAC Definitions and Prototypes */
/* */
/*****************************************************************/
/* DAC Device Type Definitions */
typedef enum {
DddtLocal = 0,
DddtDbk = 1,
/* Daq2000 Digital Streaming Control */
DddtLocalDigital = 2,
} DaqDacDeviceType;
/* DAC Output Mode Definitions */
typedef enum {
DdomVoltage = 0,
DdomStaticWave = 1,
DdomDynamicWave = 2,
/* Daq2000 Digital Streaming Control */
DdomDigitalDirect = 0,
/* Daq2000 Unsigned/Signed Data Format Flags */
DdomUnsigned = 0x0,
DdomSigned = 0x4,
} DaqDacOutputMode;
/* DAC Global Configuration Prototypes */
DAQAPI DaqError WINAPI daqDacSetOutputMode(DaqHandleT handle,
DaqDacDeviceType deviceType, DWORD chan,
DaqDacOutputMode outputMode);
/* DAC Voltage Output Mode Prototypes */
DAQAPI DaqError WINAPI daqDacWt(DaqHandleT handle,
DaqDacDeviceType deviceType, DWORD chan,
WORD dataVal);
DAQAPI DaqError WINAPI daqDacWtMany(DaqHandleT handle,
DaqDacDeviceType *deviceTypes, PDWORD chans,
PWORD dataVals, DWORD count);
/* DAC Trigger Source Definitions */
typedef enum {
DdtsImmediate = 0,
DdtsSoftware = 1,
/* Daq2000 Clock Control */
DdtsAdcClock = 2,
} DaqDacTriggerSource;
/* DAC Clock Source Definitions */
typedef enum {
DdcsDacClock = 0,
DdcsGatedDacClock = 1,
DdcsAdcClock = 2,
DdcsExternalTTL = 3,
Ddcs9513Ctr1 = 4,
/* Daq2000 Clock Control Flags */
DdcsRisingEdge = 0x0,
DdcsFallingEdge = 0x100,
/* Daq2000 Output Control Flags */
DdcsOutputDisable = 0x0,
DdcsOutputEnable = 0x1000,
} DaqDacClockSource;
/* DAC Waveform Mode Definitions */
typedef enum {
DdwmNShot = 0,
DdwmNShotRearm = 1, // not supported
DdwmInfinite = 2,
DdwmNFileIterations = 3, // DacWaveDiskFile Mode Only
} DaqDacWaveformMode;
/* DAC Waveform Prototypes - Trigger, Update Rate and Count */
DAQAPI DaqError WINAPI daqDacWaveSetTrig(DaqHandleT handle,
DaqDacDeviceType deviceType, DWORD chan,
DaqDacTriggerSource triggerSource, BOOL rising);
DAQAPI DaqError WINAPI daqDacWaveSoftTrig(DaqHandleT handle,
DaqDacDeviceType deviceType, DWORD chan);
DAQAPI DaqError WINAPI daqDacWaveSetClockSource(DaqHandleT handle,
DaqDacDeviceType deviceType, DWORD chan,
DaqDacClockSource clockSource);
DAQAPI DaqError WINAPI daqDacWaveSetFreq(DaqHandleT handle,
DaqDacDeviceType deviceType, DWORD chan,
FLOAT freq);
DAQAPI DaqError WINAPI daqDacWaveGetFreq(DaqHandleT handle,
DaqDacDeviceType deviceType, DWORD chan,
PFLOAT freq);
DAQAPI DaqError WINAPI daqDacWaveSetMode(DaqHandleT handle,
DaqDacDeviceType deviceType, DWORD chan,
DaqDacWaveformMode mode, DWORD updateCount);
/* DAC Predefined Waveform Type Definitions */
typedef enum {
DdwtSine = 0,
DdwtSquare = 1,
DdwtTriangle = 2
} DaqDacWaveType;
/* DAC Transfer Mask Definitions */
typedef enum {
DdtmCycleOff = 0x00, // ignored: always cycle on
DdtmCycleOn = 0x01, // ignored: always cycle on
DdtmUpdateBlock = 0x00, // ignored: always variable
DdtmUpdateSingle = 0x02, // ignored: always variable
DdtmUserBuffer = 0x00,
DdtmDriverBuffer = 0x04, // DacWaveDiskFile Mode Only
} DaqDacTransferMask;
/* DAC Disk File Format Types */
typedef enum {
DdwdfBinaryCounts = 0x00, // 16 bit unsigned word - native
DdwdfBinaryCountsHL = 0x01, // high byte/low byte
DdwdfBinaryFloat = 0x02, // float
DdwdfBinaryDouble = 0x03, // double
DdwdfAsciiCountsDec = 0x04, // 0 to 65535
DdwdfAsciiCountsHex = 0x05, // 0x0000 to 0xFFFF
DdwdfAsciiCountsBin = 0x06, // 0 to 1111111111111111
DdwdfAsciiCountsOct = 0x07, // 0 to 177777
DdwdfAsciiFloat = 0x08, // -10.0 to 10.0
} DaqDacWaveFileDataFormat;
/* DAC Waveform Prototypes - Buffer Management */
DAQAPI DaqError WINAPI daqDacWaveSetBuffer(DaqHandleT handle,
DaqDacDeviceType deviceType, DWORD chan,
PWORD buf, DWORD scanCount, DWORD transferMask);
DAQAPI DaqError WINAPI daqDacWaveSetUserWave(DaqHandleT handle,
DaqDacDeviceType deviceType, DWORD chan);
DAQAPI DaqError WINAPI daqDacWaveSetPredefWave(DaqHandleT handle,
DaqDacDeviceType deviceType, DWORD chan,
DaqDacWaveType waveType, DWORD amplitude,
DWORD offset, DWORD dutyCycle, DWORD phaseShift);
DAQAPI DaqError WINAPI daqDacWaveSetDiskFile(DaqHandleT handle,
DaqDacDeviceType deviceType, DWORD chan, LPSTR filename,
DWORD numUpdateCycles, // Number of update cycles to read from file (0 = all)
DWORD offsetBytes, // offset for header in BYTES.
DWORD offsetUpdateCycles, // Number of update cycles to skip at the start of the file
DaqDacWaveFileDataFormat dataFormat); // format of data file
/* File MUST contain exact number of enabled waveform channels */
/* 1 update cycle = 1 output per each channel simultaneously */
/* DAC Waveform Prototypes - Waveform Control */
DAQAPI DaqError WINAPI daqDacWaveArm(DaqHandleT handle, DaqDacDeviceType deviceType);
DAQAPI DaqError WINAPI daqDacWaveDisarm(DaqHandleT handle, DaqDacDeviceType deviceType);
/* DAC Waveform/Transfer Active Flag Definitions */
typedef enum {
DdafWaveformActive = 0x01,
DdafWaveformTriggered= 0x02,
DdafTransferActive = 0x04,
DdafUnderrun = 0x08,
} DaqDacActiveFlag;
/* DAC Transfer Prototypes - Dynamic Waveform Data Transfer */
DAQAPI DaqError WINAPI daqDacTransferStart(DaqHandleT handle,
DaqDacDeviceType deviceType, DWORD chan);
DAQAPI DaqError WINAPI daqDacTransferGetStat(DaqHandleT handle,
DaqDacDeviceType deviceType, DWORD chan,
PDWORD active, PDWORD retCount);
DAQAPI DaqError WINAPI daqDacTransferStop(DaqHandleT handle,
DaqDacDeviceType deviceType, DWORD chan);
/*****************************************************************/
/* */
/* Data Conversion Definitions and Prototypes */
/* */
/*****************************************************************/
/* Sets A/D min and max range for conversion routines */
DAQAPI DaqError WINAPI daqCvtSetAdcRange(FLOAT Admin, FLOAT Admax);
/* Linear Conversion Prototypes : all require daqCvtSetAdcRange previously called */
DAQAPI DaqError WINAPI daqCvtLinearSetup(DWORD nscan, DWORD readingsPos, DWORD nReadings,
FLOAT signal1, FLOAT voltage1,
FLOAT signal2, FLOAT voltage2, DWORD avg);
DAQAPI DaqError WINAPI daqCvtLinearConvert(PWORD counts, DWORD scans, PFLOAT fValues, DWORD nValues);
DAQAPI DaqError WINAPI daqCvtLinearSetupConvert(DWORD nscan, DWORD readingsPos, DWORD nReadings,
FLOAT signal1, FLOAT voltage1, FLOAT signal2, FLOAT voltage2,
DWORD avg, PWORD counts, DWORD scans, PFLOAT fValues, DWORD nValues);
/* Software Calibration Type Definitions */
typedef enum {
DcalTypeDefault = 0,
DcalTypeCJC = 1, /* channel to be calibrated is a real CJC reading - not a CJC zero reading */
DcalDbk4Bypass = 2, /* channel to be calibrated using the methods and structures */
/* for a Dbk4 with the filters bypassed (set by jumper on the card). */
DcalDbk4Filter = 3, /* channel to be calibrated using the methods and sturctures */
/* for a Dbk4 with the cutoff filters enabled. */
} DcalType;
typedef enum {
DciNormal = 0, /* External signal from device input connector(s) */
DciCalGround = 1, /* Internal calibration ground signal */
DciCal5V = 2, /* Internal 5V calibration signal */
DciCal500mV = 3, /* Internal 500mV calibration signal */
} DaqCalInputT;
typedef enum {
DcttFactory = 0, /* Factory calibration constants */
DcttUser = 1, /* User-defined calibration constants */
DcttBaseline = 2, /* Unity Gain - No Offset */
} DaqCalTableTypeT;
typedef enum {
DcoGetConstants = 0,
DcoSetConstants = 1,
DcoSelectInput = 2,
DcoSelectTable = 3,
DcoSaveConstants = 4,
DcoGetCalPtr = 5,
DCoSetResponseDac = 6,
DcoSaveTable = 7,
DcoGetRefDacConstants = 8,
DcoSetRefDacConstants = 9,
DcoGetTrigDacConstants = 10,
DcoSetTrigDacConstants = 11,
} DaqCalOperationT;
typedef enum {
DcrcPosRefDac = 0, // positive reference DAC channel
DcrcNegRefDac = 1, // negative reference DAC channel
} DaqCalRefDacChannelT;
typedef enum {
CctdcTrigThresholdDac = 0, // Trigger Threshold DAC
CctdcTrigHysteresisDac = 1, // Trigger Hysteresis DAC
CctdcTrigBelowLevel = 0, // Trigger Value Below DAC Value
CctdcTrigAboveLevel = 2, // Trigger Value Above DAC Value
} DaqCalTrigDacChannelT;
typedef enum {
DcoptMainUnit = 0,
DcoptOptionUnit = 1,
DcoptUserCal = 2,
DcoptSensorCal = 3,
DcoptReserved1 = 4,
DcoptReserved2 = 5,
DcoptReserved3 = 6,
DcoptReserved = 7,
} DaqCalOptionT;
/* Software Calibration Prototypes */
DAQAPI DaqError WINAPI daqCalSetup(DaqHandleT handle,DWORD nscan, DWORD readingsPos, DWORD nReadings,
DcalType chanType, DaqAdcGain chanGain, DWORD startChan, BOOL bipolar,
BOOL noOffset);
DAQAPI DaqError WINAPI daqCalConvert(DaqHandleT handle, PWORD counts, DWORD scans);
DAQAPI DaqError WINAPI daqCalSetupConvert(DaqHandleT handle, DWORD nscan, DWORD readingsPos,
DWORD nReadings, DcalType chanType, DaqAdcGain chanGain, DWORD startChan,
BOOL bipolar, BOOL noOffset, PWORD counts, DWORD scans);
DAQAPI DaqError WINAPI daqReadCalFile(DaqHandleT handle,LPSTR calfile);
DAQAPI DaqError WINAPI daqCalSelectInputSignal(DaqHandleT handle, DaqCalInputT input);
DAQAPI DaqError WINAPI daqCalSelectCalTable(DaqHandleT handle, DaqCalTableTypeT tableType);
DAQAPI DaqError WINAPI daqCalSetConstants(DaqHandleT handle, DWORD channel, DaqAdcGain gain,
DaqAdcRangeT range, WORD gainConstant, SHORT offsetConstant);
DAQAPI DaqError WINAPI daqCalGetConstants(DaqHandleT handle, DWORD channel, DaqAdcGain gain,
DaqAdcRangeT range, PWORD gainConstant, PSHORT offsetConstant);
DAQAPI DaqError WINAPI daqCalSaveConstants(DaqHandleT handle, DWORD channel);
DAQAPI DaqError WINAPI daqConfCalConstants(DaqHandleT handle, DWORD chan, DaqAdcGain gain,
DaqAdcRangeT adcRange, PWORD gainConst,
PSHORT offsetConst, DaqCalOperationT operation,
DaqCalTableTypeT tableType, DaqCalInputT input,
DaqCalOptionT option);
/* Zero Compensation Definitions */
typedef enum {
DazcNone = 0, /* Do not include auto-zero compensation in TC conversion. */
DazcAutoZero = 1, /* Apply auto-zero compensation in TC conversion. */
} DaqAutoZeroCompT;
/* Zero Compensation Prototypes */
DAQAPI DaqError WINAPI daqAutoZeroCompensate(DaqAutoZeroCompT zero);
DAQAPI DaqError WINAPI daqZeroSetup(DWORD nscan, DWORD zeroPos, DWORD readingsPos,
DWORD nReadings);
DAQAPI DaqError WINAPI daqZeroConvert(PWORD counts, DWORD scans);
DAQAPI DaqError WINAPI daqZeroSetupConvert(DWORD nscan, DWORD zeroPos,
DWORD readingsPos, DWORD nReadings, PWORD counts, DWORD scans);
DAQAPI DaqError WINAPI daqZeroDbk19(BOOL zero);
/* RTD Type Definitions */
typedef enum {
Dbk9RtdType100 = 0, /* RTD 100 ohm Platinum alpha = .00385 */
Dbk9RtdType500 = 1, /* RTD 500 ohm Platinum alpha = .00385 */
Dbk9RtdType1K = 2, /* RTD 1000 ohm Platinum alpha = .00385 */
} RtdType;
/* Rtd Conversion Prototypes */
DAQAPI DaqError WINAPI daqCvtRtdConvert(PWORD counts, DWORD scans, PSHORT temp, DWORD ntemp);
DAQAPI DaqError WINAPI daqCvtRtdSetup(DWORD nScan, DWORD startPosition, DWORD nRtd,
RtdType rtdType, DWORD avg);
DAQAPI DaqError WINAPI daqCvtRtdSetupConvert(DWORD nScan, DWORD startPosition, DWORD nRtd,
RtdType rtdType, DWORD avg, PWORD counts, DWORD scans, PSHORT temp, DWORD ntemp);
/* Thermocouple Type Definitions */
typedef enum {
/* Dbk14 */
Dbk14TCTypeJ = 0,
Dbk14TCTypeK = 1,
Dbk14TCTypeT = 2,
Dbk14TCTypeE = 3,
Dbk14TCTypeN28 = 4,
Dbk14TCTypeN14 = 5,
Dbk14TCTypeS = 6,
Dbk14TCTypeR = 7,
Dbk14TCTypeB = 8,
/* Dbk19 */
Dbk19TCTypeJ = 9,
Dbk19TCTypeK = 10,
Dbk19TCTypeT = 11,
Dbk19TCTypeE = 12,
Dbk19TCTypeN28 = 13,
Dbk19TCTypeN14 = 14,
Dbk19TCTypeS = 15,
Dbk19TCTypeR = 16,
Dbk19TCTypeB = 17,
/* Dbk52 */
Dbk52TCTypeJ = Dbk19TCTypeJ,
Dbk52TCTypeK = Dbk19TCTypeK,
Dbk52TCTypeT = Dbk19TCTypeT,
Dbk52TCTypeE = Dbk19TCTypeE,
Dbk52TCTypeN28 = Dbk19TCTypeN28,
Dbk52TCTypeN14 = Dbk19TCTypeN14,
Dbk52TCTypeS = Dbk19TCTypeS,
Dbk52TCTypeR = Dbk19TCTypeR,
Dbk52TCTypeB = Dbk19TCTypeB,
/* Dbk81 & Dbk82 */
Dbk81TCTypeJ = 27,
Dbk81TCTypeK = 28,
Dbk81TCTypeT = 29,
Dbk81TCTypeE = 30,
Dbk81TCTypeN28 = 31,
Dbk81TCTypeN14 = 32,
Dbk81TCTypeS = 33,
Dbk81TCTypeR = 34,
Dbk81TCTypeB = 35,
Dbk81CJCType = 36, // for CJC counts to DegC conversion
/* Dbk90 */
Dbk90TCTypeJ = 37,
Dbk90TCTypeK = 38,
Dbk90TCTypeT = 39,
Dbk90TCTypeE = 40,
Dbk90TCTypeN28 = 41,
Dbk90TCTypeN14 = 42,
Dbk90TCTypeS = 43,
Dbk90TCTypeR = 44,
Dbk90TCTypeB = 45,
Dbk90CJCType = 46, // for CJC counts to DegC conversion
/* TempBook/66 */
TbkTCTypeJ = 18,
TbkTCTypeK = 19,
TbkTCTypeT = 20,
TbkTCTypeE = 21,
TbkTCTypeN28 = 22,
TbkTCTypeN14 = 23,
TbkTCTypeS = 24,
TbkTCTypeR = 25,
TbkTCTypeB = 26,
} TCType;
/* Thermocouple Conversion Prototypes */
DAQAPI DaqError WINAPI daqCvtTCConvert(PWORD counts, DWORD scans, PSHORT temp, DWORD ntemp);
DAQAPI DaqError WINAPI daqCvtTCSetup(DWORD nscan, DWORD cjcPosition, DWORD ntc,
TCType tcType, BOOL bipolar, DWORD avg);
DAQAPI DaqError WINAPI daqCvtTCSetupConvert(DWORD nscan, DWORD cjcPosition, DWORD ntc,
TCType tcType, BOOL bipolar, DWORD avg, PWORD counts, DWORD scans, PSHORT temp,
DWORD ntemp);
/*****************************************************************/
/* */
/* General I/O Definitions and Prototypes */
/* */
/*****************************************************************/
/* I/O Device Type Definitions */
typedef enum {
DiodtLocalBitIO = 0,
DiodtLocal8255 = 1,
DiodtP2Local8 = 12, /* P2 local addressing by byte */
DiodtP3LocalDig16 = 1, /* P3 local digital port by word */
DiodtLocal9513 = 2,
DiodtP3LocalCtr16 = 2, /* P3 local counter addressing by word */
DiodtP2Exp8 = 6, /* P2 expansion addressing by byte */
DiodtExp8255 = 3, /* Dbk20, Dbk21 */
DiodtDbk23 = 4,
DiodtDbk24 = 5,
DiodtDbk25 = 6,
DiodtDbk208 = 6,
DiodtDbk210 = 6,
DiodtExp9513 = 7, /* Not available */
DiodtWbk512 = 8,
DiodtWbk516 = 8,
DiodtWbk17 = 13,
DiodtLocal8254 = 9, /* tempbook only */
Diodt8254Dig = 10, /* tempbook only */
Diodt8254Ctr = 11, /* tempbook only */
} DaqIODeviceType;
/* I/O Port Type Definitions */
typedef enum {
/* Local Bit I/O */
DiodpBitIO = 0,
/* Local 8254 */
Diodp8254Trig = 10,
Diodp8254A = 12,
Diodp8254B = 13,
Diodp8254C = 14,
Diodp8254IR = 15,
/* P2 sequential 8-Bit addressing */
DiodpP2Local8 = 0, // I/O
DiodpP2LocalIR = 3, // Config
DiodpP2Exp8 = 0, // I/O
DiodpP2ExpIR = 3, // Config
/* P3 digital port */
DiodpP3LocalDig16 = 0, // I/O
DiodpP3LocalDigIR = 1, // Config
/* Local 8255, Dbk20, Dbk21 */
Diodp8255A = 0, // I/O
Diodp8255B = 1, // I/O
Diodp8255C = 2, // I/O
Diodp8255IR = 3, // Config
Diodp8255CHigh = 4, // I/O
Diodp8255CLow = 5, // I/O
/* Local 9513, Expansion 9513 */
Diodp9513Command = 0,
Diodp9513Data = 1,
Diodp9513MasterMode = 2,
Diodp9513Alarm1 = 3,
Diodp9513Alarm2 = 4,
Diodp9513Status = 5,
Diodp9513Mode1 = 6,
Diodp9513Mode2 = 7,
Diodp9513Mode3 = 8,
Diodp9513Mode4 = 9,
Diodp9513Mode5 = 10,
Diodp9513Load1 = 11,
Diodp9513Load2 = 12,
Diodp9513Load3 = 13,
Diodp9513Load4 = 14,
Diodp9513Load5 = 15,
Diodp9513Hold1 = 16,
Diodp9513Hold2 = 17,
Diodp9513Hold3 = 18,
Diodp9513Hold4 = 19,
Diodp9513Hold5 = 20,
Diodp9513Hold1HC = 21, /* Hold register when in hold cycle mode */
Diodp9513Hold2HC = 22, /* Hold register when in hold cycle mode */
Diodp9513Hold3HC = 23, /* Hold register when in hold cycle mode */
Diodp9513Hold4HC = 24, /* Hold register when in hold cycle mode */
Diodp9513Hold5HC = 25, /* Hold register when in hold cycle mode */
DiodpP3LocalCtr16 = 26,
/* Dbk23 */
DiodpDbk23A = 0,
DiodpDbk23B = 1,
DiodpDbk23C = 2,
DiodpDbk23Unused = 3,
/* Dbk24 */
DiodpDbk24A = 0,
DiodpDbk24B = 1,
DiodpDbk24C = 2,
DiodpDbk24Unused = 3,
/* Dbk25 */
DiodpDbk25 = 0,
/* Dbk208 */
DiodpDbk208 = 0,
/* Dbk210 */
DiodpDbk210 = 0,
/* WaveBook/512 */
DiodpWbk512Port0 = 0,
DiodpWbk512Port1 = 1,
DiodpWbk512Port2 = 2,
DiodpWbk512Port3 = 3,
DiodpWbk512Port4 = 4,
DiodpWbk512Port5 = 5,
DiodpWbk512Port6 = 6,
DiodpWbk512Port7 = 7,
DiodpWbk512Port8 = 8,
DiodpWbk512Port9 = 9,
DiodpWbk512Port10 = 10,
DiodpWbk512Port11 = 11,
DiodpWbk512Port12 = 12,
DiodpWbk512Port13 = 13,
DiodpWbk512Port14 = 14,
DiodpWbk512Port15 = 15,
DiodpWbk512Port16 = 16,
DiodpWbk512Port17 = 17,
DiodpWbk512Port18 = 18,
DiodpWbk512Port19 = 19,
DiodpWbk512Port20 = 20,
DiodpWbk512Port21 = 21,
DiodpWbk512Port22 = 22,
DiodpWbk512Port23 = 23,
DiodpWbk512Port24 = 24,
DiodpWbk512Port25 = 25,
DiodpWbk512Port26 = 26,
DiodpWbk512Port27 = 27,
DiodpWbk512Port28 = 28,
DiodpWbk512Port29 = 29,
DiodpWbk512Port30 = 30,
DiodpWbk512Port31 = 31,
/* WaveBook/516 */
DiodpWbk516_8Bit = 0,
DiodpWbk516_16Bit = 32,
/* WBK17 Digital Output : Write Only */
DiodpWbk17_8Bit = 33,
} DaqIODevicePort;
/* I/O Expansion Port Code Definitions */
typedef enum {
DioepP1 = 0, /* DigiBook only */
DioepP2 = 1,
DioepP3 = 2,
} DaqIOExpansionPort;
// used for Tempbook66 cntr0 configurations
typedef enum {
Dc0cHighTermCnt = 0x30,
Dc0cONeShot = 0x32,
Dc0cDivByNCtr = 0x34,
Dc0cSquareWave = 0x36,
Dc0csoftTrigStrobe = 0x38,
Dc0cHardTrigStrobe = 0x3A,
} DaqCntr0Config;
/* General I/O Prototypes - Read/Write */
DAQAPI DaqError WINAPI daqIOReadBit(DaqHandleT handle, DaqIODeviceType devType, DaqIODevicePort devPort,
DWORD whichDevice, DaqIOExpansionPort whichExpPort, DWORD bitNum, PBOOL bitValue);
DAQAPI DaqError WINAPI daqIORead(DaqHandleT handle, DaqIODeviceType devType, DaqIODevicePort devPort,
DWORD whichDevice, DaqIOExpansionPort whichExpPort, PDWORD value);
DAQAPI DaqError WINAPI daqIOWriteBit(DaqHandleT handle, DaqIODeviceType devType, DaqIODevicePort devPort,
DWORD whichDevice, DaqIOExpansionPort whichExpPort, DWORD bitNum, BOOL bitValue);
DAQAPI DaqError WINAPI daqIOWrite(DaqHandleT handle, DaqIODeviceType devType, DaqIODevicePort devPort,
DWORD whichDevice, DaqIOExpansionPort whichExpPort, DWORD value);
DAQAPI DaqError WINAPI daqIOGet8255Conf(DaqHandleT handle, BOOL portA, BOOL portB, BOOL portCHigh,
BOOL portCLow, PDWORD config);
/*****************************************************************/
/* */
/* 9513 Counter/Timer Definitions and Prototypes */
/* */
/*****************************************************************/
/* 9513 Time-of-Day Definitions */
typedef enum {
DtodDisabled = 0,
DtodDivideBy5 = 1,
DtodDivideBy6 = 2,
DtodDivideBy10 = 3
} Daq9513TimeOfDay;
/* 9513 Gating Control Definitions */
typedef enum {
DgcNoGating = 0,
DgcHighTCNM1 = 1,
DgcHighLevelGateNP1 = 2,
DgcHighLevelGateNM1 = 3,
DgcHighLevelGateN = 4,
DgcLowLevelGateN = 5,
DgcHighEdgeGateN = 6,
DgcLowEdgeGateN = 7
} Daq9513GatingControl;
/* 9513 Count Source Definitions */
typedef enum {
DcsTcnM1 = 0, /* not valid with daq9513SetMasterMode or daqCtrRdFreq */
DcsSrc1 = 1,
DcsSrc2 = 2,
DcsSrc3 = 3,
DcsSrc4 = 4,
DcsSrc5 = 5,
DcsGate1 = 6,
DcsGate2 = 7,
DcsGate3 = 8,
DcsGate4 = 9,
DcsGate5 = 10, /* not valid with daqCtrRdFreq */
DcsF1 = 11, /* not valid with daqCtrRdFreq */
DcsF2 = 12, /* not valid with daqCtrRdFreq */
DcsF3 = 13, /* not valid with daqCtrRdFreq */
DcsF4 = 14, /* not valid with daqCtrRdFreq */
DcsF5 = 15 /* not valid with daqCtrRdFreq */
} Daq9513CountSource;
/* 9513 Output Control Definitions */
typedef enum {
DocInactiveLow = 0,
DocHighTermCntPulse = 1,
DocTCToggled = 2,
DocInactiveHighImp = 3,
DocLowTermCntPulse = 4
} Daq9513OutputControl;
/* 9513 Multiple Counter Command Definitions */
typedef enum {
DmccArm = 0,
DmccLoad = 1,
DmccLoadArm = 2,
DmccDisarmSave = 3,
DmccSave = 4,
DmccDisarm = 5
} Daq9513MultCtrCommand;
/* 9513 Counter/Timer Prototypes */
DAQAPI DaqError WINAPI daq9513SetMasterMode(DaqHandleT handle, DaqIODeviceType deviceType,
DWORD whichDevice, DWORD foutDiv, Daq9513CountSource cntSource,
BOOL comp1, BOOL comp2, Daq9513TimeOfDay tod);
DAQAPI DaqError WINAPI daq9513SetAlarm(DaqHandleT handle, DaqIODeviceType deviceType,
DWORD whichDevice, DWORD alarmNum, DWORD alarmVal);
DAQAPI DaqError WINAPI daq9513SetCtrMode(DaqHandleT handle, DaqIODeviceType deviceType,
DWORD whichDevice, DWORD ctrNum, Daq9513GatingControl gateCtrl,
BOOL cntEdge, Daq9513CountSource cntSource, BOOL specGate, BOOL reload,
BOOL cntRepeat, BOOL cntType, BOOL cntDir, Daq9513OutputControl outputCtrl);
DAQAPI DaqError WINAPI daq9513MultCtrl(DaqHandleT handle, DaqIODeviceType deviceType,
DWORD whichDevice, Daq9513MultCtrCommand ctrCmd, BOOL ctr1, BOOL ctr2,
BOOL ctr3, BOOL ctr4, BOOL ctr5);
DAQAPI DaqError WINAPI daq9513GetHold(DaqHandleT handle, DaqIODeviceType deviceType,
DWORD whichDevice, DWORD ctrNum, PWORD ctrVal);
DAQAPI DaqError WINAPI daq9513SetHold(DaqHandleT handle, DaqIODeviceType deviceType,
DWORD whichDevice, DWORD ctrNum, WORD ctrVal);
DAQAPI DaqError WINAPI daq9513SetLoad(DaqHandleT handle, DaqIODeviceType deviceType,
DWORD whichDevice, DWORD ctrNum, WORD ctrVal);
/* WARNING : Unexpected Results : Use standard configuration and measurement functions. */
DAQAPI DaqError WINAPI daq9513RdFreq(DaqHandleT handle, DaqIODeviceType deviceType,
DWORD whichDevice, DWORD interval, Daq9513CountSource cntSource,
PDWORD count);
/*****************************************************************/
/* */
/* Communications test/performance Definitions and Prototypes */
/* - Internally used */
/* */
/*****************************************************************/
/* DaqTest Command Definitions */
typedef enum {
DtstBaseAddressValid = 0,
DtstInterruptLevelValid = 1,
DtstDmaChannelValid = 2,
DtstAdcFifoInputSpeed = 3,
DtstDacFifoOutputSpeed = 4,
DtstIOInputSpeed = 5,
DtstIOOutputSpeed = 6,
DtstFifoAddrDataBusValid = 7,
DtstFifoMemCellValid = 8, // MegaFIFO memory test.
DtstHardwareCompatibility = 9, // WaveBook Only
DtstFirmwareCompatibility = 10, // WaveBook Only
DtstExpansionCompatibility = 11, // WaveBook Only
DtstExpUpgradeCompatibility = 12, // WaveBook Only
// Use these for range checking. Always update when adding/removing enum's.
Dtst_ParamRangeMin = DtstBaseAddressValid, // Lowest valid value
Dtst_ParamRangeMax = DtstExpUpgradeCompatibility, // Highest valid value
} DaqTestCommand;
/* DaqTest Prototype */
DAQAPI DaqError WINAPI daqTest(DaqHandleT handle, DaqTestCommand command,
DWORD count, PBOOL cmdAvailable, PDWORD result);
/*****************************************************************/
/* */
/* Register level IO Definitions and Prototypes */
/* - Internally Used - Not Supported */
/* */
/* NOTE: These functions are not intended to be used in user */
/* applications. Registers maps are hardware specific, */
/* and subject to change at any time. */
/* */
/*****************************************************************/
/* Register IO Defintions */
typedef enum {
/* DaqBook/DaqBoard output registers */
DregOutDAC0 = 0x04, // DaqBoard (16-bit), DaqBook (low byte)
DregOutDAC0High = 0x05, // DaqBook only (high byte)
DregOutDAC1 = 0x06, // DaqBoard (16-bit), DaqBook (low byte)
DregOutDAC1High = 0x07, // DaqBook only (high byte)
DregOuttrigSource = 0x0a,
DregOutAuxControl = 0x0b,
DregOut8254IR = 0x0f,
DregOut8255IR = 0x13,
DregOutDacFIFO = 0x16, // DaqBoard only (16-bit)
DregOutauxControl = 0x19,
DregOutADCfifo = 0x1a, // DaqBoard (16-bit), DaqBook (low byte)
DregOutADCfifoHigh = 0x1b, // DaqBook only (high byte)
/* DaqBook/DaqBoard input registers */
DregInADCfifo = 0x00, // DaqBoard 16-bit, DaqBook (low byte)
DregInADCfifoHigh = 0x01, // DaqBook only (high byte)
DregInstatReg = 0x08,
DregInEventStatus = 0x0b,
DregInEventStatusX = 0x15, // DaqBoard only
DregInIntIDX = 0x18, // DaqBoard only
DregInIntID = 0x1f,
/* DaqBook/DaqBoard input/output registers */
DregBitDIO = 0x03,
DregDACctrl = 0x09, // DaqBoard only
Dreg8254C0 = 0x0c,
Dreg8254C1 = 0x0d,
Dreg8254C2 = 0x0e,
Dreg8255A = 0x10,
Dreg8255B = 0x11,
Dreg8255C = 0x12,
DregIntMaskX = 0x14, // DaqBoard only
Dreg9513Data = 0x1c,
Dreg9513IR = 0x1d,
DregIntMask = 0x1e,
Dreg8255A0B0 = 0x60,
Dreg8255A0B1 = 0x61,
Dreg8255A0B2 = 0x62,
Dreg8255A0IR = 0x63,
Dreg8255A1B0 = 0x64,
Dreg8255A1B1 = 0x65,
Dreg8255A1B2 = 0x66,
Dreg8255A1IR = 0x67,
Dreg8255B0B0 = 0x68,
Dreg8255B0B1 = 0x69,
Dreg8255B0B2 = 0x6a,
Dreg8255B0IR = 0x6b,
Dreg8255B1B0 = 0x6c,
Dreg8255B1B1 = 0x6d,
Dreg8255B1B2 = 0x6e,
Dreg8255B1IR = 0x6f,
Dreg8255C0B0 = 0x70,
Dreg8255C0B1 = 0x71,
Dreg8255C0B2 = 0x72,
Dreg8255C0IR = 0x73,
Dreg8255C1B0 = 0x74,
Dreg8255C1B1 = 0x75,
Dreg8255C1B2 = 0x76,
Dreg8255C1IR = 0x77,
Dreg8255D0B0 = 0x78,
Dreg8255D0B1 = 0x79,
Dreg8255D0B2 = 0x7a,
Dreg8255D0IR = 0x7b,
Dreg8255D1B0 = 0x7c,
Dreg8255D1B1 = 0x7d,
Dreg8255D1B2 = 0x7e,
Dreg8255D1IR = 0x7f,
} DaqIOReg;
typedef enum {
RtfDeviceRegs = 0x0,
RtfLptPort = 0x10000,
RtfDspDM = 0x20000,
RtfDspPM = 0x30000,
} RegTypeFlag;
DAQAPI DaqError WINAPI daqRegWrite(DaqHandleT handle, DWORD reg, DWORD value);
DAQAPI DaqError WINAPI daqRegRead(DaqHandleT handle, DWORD reg, PDWORD value);
/*****************************************************************/
/* */
/* Obsolete, Internal Usage and Beta Definitions and Prototypes */
/* - Internally Used - Not Supported */
/* */
/* NOTE: These functions are not intended to be used in user */
/* applications. Functions are hardware specific and, */
/* subject to change at any time. */
/* */
/*****************************************************************/
DAQAPI DaqError WINAPI dspCmd(DaqHandleT handle, DWORD action, DWORD memType, DWORD addr, PDWORD data);
DAQAPI DaqError WINAPI dspCmdA(DaqHandleT handle, DWORD action, DWORD memType, DWORD addr, PBYTE data);
DAQAPI DaqError WINAPI daqBlockMemIO(DaqHandleT handle, DWORD action, DWORD blockType, DWORD whichBlock, DWORD addr, DWORD count, PVOID buf);
DAQAPI DaqError WINAPI daqDumpDriverDebugBuffer( DaqHandleT handle, LPSTR buf, DWORD charCount );
DAQAPI DaqError WINAPI daqAdcTransferSetBufferAllocMem(DaqHandleT handle, DWORD scanCount, DWORD transferMask);
DAQAPI DaqError WINAPI daqAdcTransferStopAllocMem(DaqHandleT handle, PWORD buf, DWORD scanCount);
INT daq_selftest(PCHAR device_name, PCHAR error_msg);
/* I/O Operation Code Definitions */
typedef enum {
DioecP1IR = 0, /* DigiBook only */
DioecP2IR = 1,
DioecP3IR = 2,
} DaqIOEventCode;
/* I/O Operation Code Definitions */
typedef enum {
DioocReadByte = 0,
DioocWriteByte = 1,
DioocReadWord = 2,
DioocWriteWord = 3,
DioocReadDWord = 4,
DioocWriteDWord = 5,
} DaqIOOperationCode;
/* I/O Transfer Mask Definitions */
typedef enum {
DiotmCycleOff = 0,
DiotmCycleOn = 1,
} DaqIOTransferMask;
/* I/O Transfer Active Flag Definitions */
typedef enum {
DioafDone = 0,
DioafArmed = 1,
DioafTriggered = 2,
} DaqIOActiveFlag;
/* Note: The following block of functions are currently not supported. */
/* General I/O Prototypes - Transfer */
DAQAPI DaqError WINAPI daqIOTransferReset(DaqHandleT handle);
DAQAPI DaqError WINAPI daqIOTransferSetBuffer(DaqHandleT handle, DaqIOEventCode eventCode,
DaqIODeviceType devType, DaqIODevicePort devPort, DWORD whichDevice,
DaqIOExpansionPort whichExpPort, DaqIOOperationCode opCode, PVOID buf,
DWORD bufCount);
DAQAPI DaqError WINAPI daqIOTransferStart(DaqHandleT handle);
DAQAPI DaqError WINAPI daqIOTransferGetStat(DaqHandleT handle, DaqIODeviceType devType,
DaqIODevicePort devPort, DWORD whichDevice, DaqIOExpansionPort whichExpPort,
DaqIOActiveFlag *active, PDWORD retCount);
DAQAPI DaqError WINAPI daqIOTransferStop(DaqHandleT handle);
#ifdef __cplusplus
};
#endif
#endif /* #ifndef DAQ_H */
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment