MinXuan/Include/usbdask.pas
2024-01-15 07:24:03 +08:00

988 lines
32 KiB
ObjectPascal

{*
* 2012.10.29 version 0.2
*}
unit UsbDask;
interface
uses
Classes, SysUtils, Windows;
const
USB_1902 = 1;
USB_1903 = 2; { USB_1902A }
USB_1901 = 3; { USB_1902L }
USB_2401 = 4;
USB_7250 = 5;
USB_7230 = 6;
USB_2405 = 7;
USB_1210 = 8;
USB_2401_A3 = 9;
USB_101 = 10;
NUM_USBDAQ_TYPE = 11;
NUM_MODULE_TYPE = 11; { NUM_MODULE_TYPE = USB_2405 + 1 }
MAX_USB_DEVICE = 8;
{ Error Number }
NoError = 0;
ErrorUnknownCardType = -1;
ErrorInvalidCardNumber = -2;
ErrorTooManyCardRegistered = -3;
ErrorCardNotRegistered = -4;
ErrorFuncNotSupport = -5;
ErrorInvalidIoChannel = -6;
ErrorInvalidAdRange = -7;
ErrorContIoNotAllowed = -8;
ErrorDiffRangeNotSupport = -9;
ErrorLastChannelNotZero = -10;
ErrorChannelNotDescending = -11;
ErrorChannelNotAscending = -12;
ErrorOpenDriverFailed = -13;
ErrorOpenEventFailed = -14;
ErrorTransferCountTooLarge = -15;
ErrorNotDoubleBufferMode = -16;
ErrorInvalidSampleRate = -17;
ErrorInvalidCounterMode = -18;
ErrorInvalidCounter = -19;
ErrorInvalidCounterState = -20;
ErrorInvalidBinBcdParam = -21;
ErrorBadCardType = -22;
ErrorInvalidDaRefVoltage = -23;
ErrorAdTimeOut = -24;
ErrorNoAsyncAI = -25;
ErrorNoAsyncAO = -26;
ErrorNoAsyncDI = -27;
ErrorNoAsyncDO = -28;
ErrorNotInputPort = -29;
ErrorNotOutputPort = -30;
ErrorInvalidDioPort = -31;
ErrorInvalidDioLine = -32;
ErrorContIoActive = -33;
ErrorDblBufModeNotAllowed = -34;
ErrorConfigFailed = -35;
ErrorInvalidPortDirection = -36;
ErrorBeginThreadError = -37;
ErrorInvalidPortWidth = -38;
ErrorInvalidCtrSource = -39;
ErrorOpenFile = -40;
ErrorAllocateMemory = -41;
ErrorDaVoltageOutOfRange = -42;
ErrorDaExtRefNotAllowed = -43;
ErrorDIODataWidthError = -44;
ErrorTaskCodeError = -45;
ErrorTriggercountError = -46;
ErrorInvalidTriggerMode = -47;
ErrorInvalidTriggerType = -48;
ErrorInvalidCounterValue = -50;
ErrorInvalidEventHandle = -60;
ErrorNoMessageAvailable = -61;
ErrorEventMessgaeNotAdded = -62;
ErrorCalibrationTimeOut = -63;
ErrorUndefinedParameter = -64;
ErrorInvalidBufferID = -65;
ErrorInvalidSampledClock = -66;
ErrorInvalidOperationMode = -67;
{ Error number for driver API }
ErrorConfigIoctl = -201;
ErrorAsyncSetIoctl = -202;
ErrorDBSetIoctl = -203;
ErrorDBHalfReadyIoctl = -204;
ErrorContOPIoctl = -205;
ErrorContStatusIoctl = -206;
ErrorPIOIoctl = -207;
ErrorDIntSetIoctl = -208;
ErrorWaitEvtIoctl = -209;
ErrorOpenEvtIoctl = -210;
ErrorCOSIntSetIoctl = -211;
ErrorMemMapIoctl = -212;
ErrorMemUMapSetIoctl = -213;
ErrorCTRIoctl = -214;
ErrorGetResIoctl = -215;
ErrorCalIoctl = -216;
ErrorPMIntSetIoctl = -217;
{ Jeff added }
ErrorAccessViolationDataCopy = -301;
ErrorNoModuleFound = -302;
ErrorCardIDDuplicated = -303;
ErrorCardDisconnected = -304;
ErrorInvalidScannedIndex = -305;
ErrorUndefinedException = -306;
ErrorInvalidDioConfig = -307;
ErrorInvalidAOCfgCtrl = -308;
ErrorInvalidAOTrigCtrl = -309;
ErrorConflictWithSyncMode = -310;
ErrorConflictWithFifoMode = -311;
ErrorInvalidAOIteration = -312;
ErrorZeroChannelNumber = -313;
ErrorSystemCallFailed = -314;
ErrorTimeoutFromSyncMode = -315;
ErrorInvalidPulseCount = -316;
ErrorInvalidDelayCount = -317;
ErrorConflictWithDelay2 = -318;
ErrorAOFifoCountTooLarge = -319;
ErrorConflictWithWaveRepeat = -320;
ErrorConflictWithReTrig = -321;
ErrorInvalidTriggerChannel = -322;
ErrorInvalidInputSignal = -323;
ErrorInvalidConversionSrc = -324;
ErrorInvalidRefVoltage = -325;
ErrorCalibrateFailed = -326;
ErrorInvalidCalData = -327;
ErrorChanGainQueueTooLarge = -328;
ErrorInvalidCardType = -329;
ErrorInvlaidSyncMode = -330;
ErrorIICVersion = -331;
ErrorFX2UpgradeFailed = -332;
ErrorInvalidReadCount = -333;
ErrorTEDSInvalidSensorNo = -334;
ErroeTEDSAccessTimeout = -335;
ErrorTEDSChecksumFailed = -336;
ErrorTEDSNotIEEE1451_4 = -337;
ErrorTEDSInvalidTemplateID = -338;
ErrorTEDSInvalidPrecisionValue = -339;
ErrorTEDSUnsupportedTemplate = -340;
ErrorTEDSInvalidPropertyID = -341;
ErrorTEDSNoRawData = -342;
ErrorInvalidChannel = -397;
ErrorNullPoint = -398;
ErrorInvalidParamSetting = -399;
{ -401 ~ -499 the Kernel error }
ErrorAIStartFailed = -401;
ErrorAOStartFailed = -402;
ErrorConflictWithGPIOConfig = -403;
ErrorEepromReadback = -404;
ErrorConflictWithInfiniteOp = -405;
ErrorWaitingUSBHostResponse = -406;
ErrorAOFifoModeTimeout = -407;
ErrorInvalidModuleFunction = -408;
ErrorAdFifoFull = -409;
ErrorInvalidTransferCount = -410;
ErrorConflictWithAIConfig = -411;
ErrorDDSConfigFailed = -412;
ErrorDDSConfigFailed = -413;
ErrorPLDBusy = -414;
ErrorPLDTimeout = -415;
ErrorUndefinedKernelError = -420;
{ the functions supported in the future }
ErrorSyncModeNotSupport = -501;
{ AD Range }
AD_B_10_V = 1;
AD_B_5_V = 2;
AD_B_2_5_V = 3;
AD_B_1_25_V = 4;
AD_B_0_625_V = 5;
AD_B_0_3125_V = 6;
AD_B_0_5_V = 7;
AD_B_0_05_V = 8;
AD_B_0_005_V = 9;
AD_B_1_V = 10;
AD_B_0_1_V = 11;
AD_B_0_01_V = 12;
AD_B_0_001_V = 13;
AD_U_20_V = 14;
AD_U_10_V = 15;
AD_U_5_V = 16;
AD_U_2_5_V = 17;
AD_U_1_25_V = 18;
AD_U_1_V = 19;
AD_U_0_1_V = 20;
AD_U_0_01_V = 21;
AD_U_0_001_V = 22;
AD_B_2_V = 23;
AD_B_0_25_V = 24;
AD_B_0_2_V = 25;
AD_U_4_V = 26;
AD_U_2_V = 27;
AD_U_0_5_V = 28;
AD_U_0_4_V = 29;
AD_B_1_5_V = 30;
AD_B_0_2125_V = 31;
AD_B_40_V = 32; { PCI-9527 AI }
AD_B_3_16_V = 33; { PCI-9527 AI }
AD_B_0_316_V = 34; { PCI-9527 AI }
AD_B_25_V = 35; { Jeff added for USB-2401 AI }
AD_B_12_5_V = 36;
{ Common Constants }
{ Synchronous Mode }
SYNCH_OP = 1;
ASYNCH_OP = 2;
{ wConfigCtrl in UD_AI_Channel_Config() }
{ Input Type }
UD_AI_NonRef_SingEnded = $01;
UD_AI_SingEnded = $02;
UD_AI_Differential = $04;
UD_AI_PseudoDifferential = $08;
{ Input Coupling }
UD_AI_EnableIEPE = $10;
UD_AI_DisableIEPE = $20;
UD_AI_Coupling_AC = $40;
UD_AI_Coupling_None = $80;
{ Conversion Source in UD_AI_Trigger_Config() }
UD_AI_CONVSRC_INT = $01;
UD_AI_CONVSRC_EXT = $02;
{ wTrigCtrl in UD_AI_Trigger_Config() }
{ Trigger Source bit 9:0 }
UD_AI_TRGSRC_AI0 = $0200;
UD_AI_TRGSRC_AI1 = $0201;
UD_AI_TRGSRC_AI2 = $0202;
UD_AI_TRGSRC_AI3 = $0203;
UD_AI_TRGSRC_AI4 = $0204;
UD_AI_TRGSRC_AI5 = $0205;
UD_AI_TRGSRC_AI6 = $0206;
UD_AI_TRGSRC_AI7 = $0207;
UD_AI_TRGSRC_AI8 = $0208;
UD_AI_TRGSRC_AI9 = $0209;
UD_AI_TRGSRC_AI10 = $020A;
UD_AI_TRGSRC_AI11 = $020B;
UD_AI_TRGSRC_AI12 = $020C;
UD_AI_TRGSRC_AI13 = $020D;
UD_AI_TRGSRC_AI14 = $020E;
UD_AI_TRGSRC_AI15 = $020F;
UD_AI_TRGSRC_SOFT = $0380;
UD_AI_TRGSRC_DTRIG = $0388;
{ Trigger Edge bit 14 }
UD_AI_TrigPositive = $4000;
UD_AI_TrigNegative = $0000;
{ Gated Trigger Level bit 14 }
UD_AI_Gate_PauseLow = $4000;
UD_AI_Gate_PauseHigh = $0000;
{ ReTrigger bit 13 }
UD_AI_EnReTrigger = $2000;
UD_AI_DisReTrigger = $0000;
{ Trigger Mode }
UD_AI_TRGMOD_POST = $0000;
UD_AI_TRGMOD_DELAY = $4000;
UD_AI_TRGMOD_PRE = $8000;
UD_AI_TRGMOD_MIDDLE = $C000;
UD_AI_TRGMOD_GATED = $1000;
{ UD_DIO_Config }
UD_DIO_DIGITAL_INPUT = $30;
UD_DIO_COUNTER_INPUT = $31;
UD_DIO_DIGITAL_OUTPUT = $32;
UD_DIO_PULSE_OUTPUT = $33;
{ TEDS Property IDs }
UD_TEDS_PROPERTY_TEMPLATE = 1;
UD_TEDS_PROPERTY_ElecSigType = 2;
UD_TEDS_PROPERTY_PhysMeasType = 3;
UD_TEDS_PROPERTY_MinPhysVal = 4;
UD_TEDS_PROPERTY_MaxPhysVal = 5;
UD_TEDS_PROPERTY_MinElecVal = 6;
UD_TEDS_PROPERTY_MaxElecVal = 7;
UD_TEDS_PROPERTY_MapMeth = 8;
UD_TEDS_PROPERTY_BridgeType = 9;
UD_TEDS_PROPERTY_SensorImped = 10;
UD_TEDS_PROPERTY_RespTime = 11;
UD_TEDS_PROPERTY_ExciteAmplNom = 12;
UD_TEDS_PROPERTY_ExciteAmplMin = 13;
UD_TEDS_PROPERTY_ExciteAmplMax = 14;
UD_TEDS_PROPERTY_CalDate = 15;
UD_TEDS_PROPERTY_CalInitials = 16;
UD_TEDS_PROPERTY_CalPeriod = 17;
UD_TEDS_PROPERTY_MeasID = 18;
{ Constants for USB-1902 }
{ wConfigCtrl in UD_AI_1902_Config() }
{ Input Type
bit 7:6 in AI_CONFG }
{ 2011April29, Jeff changed }
P1902_AI_NonRef_SingEnded = $00;
P1902_AI_SingEnded = $01;
P1902_AI_PseudoDifferential = $02;
P1902_AI_Differential = $02;
{ Conversion Source
bit 9 in AI_ACQMCR }
P1902_AI_CONVSRC_INT = $00;
P1902_AI_CONVSRC_EXT = $80;
{ wTrigCtrl in UD_AI_1902_Config() }
{ Trigger Source
bit 8:3 in AI_ACQMCR }
P1902_AI_TRGSRC_AI0 = $020;
P1902_AI_TRGSRC_AI1 = $021;
P1902_AI_TRGSRC_AI2 = $022;
P1902_AI_TRGSRC_AI3 = $023;
P1902_AI_TRGSRC_AI4 = $024;
P1902_AI_TRGSRC_AI5 = $025;
P1902_AI_TRGSRC_AI6 = $026;
P1902_AI_TRGSRC_AI7 = $027;
P1902_AI_TRGSRC_AI8 = $028;
P1902_AI_TRGSRC_AI9 = $029;
P1902_AI_TRGSRC_AI10 = $02A;
P1902_AI_TRGSRC_AI11 = $02B;
P1902_AI_TRGSRC_AI12 = $02C;
P1902_AI_TRGSRC_AI13 = $02D;
P1902_AI_TRGSRC_AI14 = $02E;
P1902_AI_TRGSRC_AI15 = $02F;
P1902_AI_TRGSRC_SOFT = $030;
P1902_AI_TRGSRC_DTRIG = $031;
{ Trigger Edge
bit 2 in AI_ACQMCR }
P1902_AI_TrgPositive = $040;
P1902_AI_TrgNegative = $000;
{ Gated Trigger Level
bit 2 in AI_ACQMCR }
P1902_AI_Gate_PauseLow = $000;
P1902_AI_Gate_PauseHigh = $040;
{ Trigger Mode }
P1902_AI_TRGMOD_POST = $000;
P1902_AI_TRGMOD_GATED = $080;
P1902_AI_TRGMOD_DELAY = $100;
{ ReTrigger
bit 25 in AI_ACQMCR }
P1902_AI_EnReTigger = $200;
{ AO Constants }
{ Conversion Source }
P1902_AO_CONVSRC_INT = $00;
P1902_AO_TRIG_CTRL_MASK = (not $00000711);
{ Trigger Mode }
P1902_AO_TRGMOD_POST = $00;
P1902_AO_TRGMOD_DELAY = $01;
{ Trigger Source }
{ bit 24 in AO_TCFIGR }
P1902_AO_TRGSRC_SOFT = $00;
P1902_AO_TRGSRC_DTRIG = $10;
{ Trigger Edge }
{ bit 25 in AI_ACQMCR }
P1902_AO_TrgPositive = $100;
P1902_AO_TrgNegative = $000;
{ Enable Re-Trigger }
{ bit 10 in AO_TCFIGR }
P1902_AO_EnReTigger = $200;
{ Flag for AO Waveform Seperation Interval COunt Register (AO_WSIC) }
P1902_AO_EnDelay2 = $400;
{ Constants for USB-2401 }
{ wConfigCtrl in UD_AI_2401_Config() }
{ Input Type }
{ V >=2.5V, V<2.5,
Current,
RTD (4 wire), RTD (3-wire), RTD (2-wire),
Resistor, Thermocouple, Full-Bridge, Half-Bridge }
P2401_Voltage_2D5V_Above = $00;
P2401_Voltage_2D5V_Below = $01;
P2401_Current = $02;
P2401_RTD_4_Wire = $03;
P2401_RTD_3_Wire = $04;
P2401_RTD_2_Wire = $05;
P2401_Resistor = $06;
P2401_ThermoCouple = $07;
P2401_Full_Bridge = $08;
P2401_Half_Bridge = $09;
P2401_ThermoCouple_Differential = $0A;
P2401_350Ohm_Full_Bridge = $0B;
P2401_350Ohm_Half_Bridge = $0C;
P2401_120Ohm_Full_Bridge = $0D;
P2401_120Ohm_Half_Bridge = $0E;
{ Conversion Source }
{ bit 9 in AI_ACQMCR }
P2401_AI_CONVSRC_INT = $00;
{ wTrigCtrl in UD_AI_2401_Config() }
{ Trigger Source }
{ bit 8:3 in AI_ACQMCR }
P2401_AI_TRGSRC_SOFT = $030;
P2401_AI_TRGSRC_DTRIG = $031;
{ Trigger Edge }
{ bit 2 in AI_ACQMCR }
P2401_AI_TrgPositive = $040;
P2401_AI_TrgNegative = $000;
{ Trigger Mode }
P2401_AI_TRGMOD_POST = $000;
{ wMAvgStageCh1 ~ wMAvgStageCh4 in UD_AI_2401_PollConfig() }
P2401_Polling_MAvg_Disable = $00;
P2401_Polling_MAvg_2_Sampes = $01;
P2401_Polling_MAvg_4_Sampes = $02;
P2401_Polling_MAvg_8_Sampes = $03;
P2401_Polling_MAvg_16_Sampes = $04;
{ wEnContPolling in UD_AI_2401_PollConfig() }
P2401_Continue_Polling_Disable = $00;
P2401_Continue_Polling_Enable = $01;
{ wPollSpeed in UD_AI_2401_PollConfig() }
P2401_ADC_2000_SPS = $09;
P2401_ADC_1000_SPS = $08;
P2401_ADC_640_SPS = $07;
P2401_ADC_320_SPS = $06;
P2401_ADC_160_SPS = $05;
P2401_ADC_80_SPS = $04;
P2401_ADC_40_SPS = $03;
P2401_ADC_20_SPS = $02;
{ Input Coupling }
P2405_AI_EnableIEPE = $004;
P2405_AI_DisableIEPE = $008;
P2405_AI_Coupling_AC = $010;
P2405_AI_Coupling_None = $020;
{ Input Type }
P2405_AI_Differential = $000;
P2405_AI_PseudoDifferential = $040;
P2405_AI_CONVSRC_INT = $000;
P2405_AI_CONVSRC_EXT = $200;
{ Trigger Source }
P2405_AI_TRGSRC_AI0 = $200;
P2405_AI_TRGSRC_AI1 = $208;
P2405_AI_TRGSRC_AI2 = $210;
P2405_AI_TRGSRC_AI3 = $218;
P2405_AI_TRGSRC_SOFT = $380;
P2405_AI_TRGSRC_DTRIG = $388;
{ Trigger Edge }
P2405_AI_TrgPositive = $004;
P2405_AI_TrgNegative = $000;
{ Gated Trigger Level }
P2405_AI_Gate_PauseLow = $004;
P2405_AI_Gate_PauseHigh = $000;
{ ReTrigger }
P2405_AI_EnReTigger = $2000;
{ AI Trigger Mode }
P2405_AI_TRGMOD_POST = $0000;
P2405_AI_TRGMOD_DELAY = $4000;
P2405_AI_TRGMOD_PRE = $8000;
P2405_AI_TRGMOD_MIDDLE = $C000;
P2405_AI_TRGMOD_GATED = $1000;
{ GPIO/GPTC Configuration }
GPIO_IGNORE_CONFIG = $00;
GPTC0_GPO1 = $01;
GPI0_3_GPO0_1 = $02;
{ ENC0_GPO0 = $04; }
GPTC0_TC1 = $08;
GPTC2_GPO3 = $10;
GPI4_7_GPO2_3 = $20;
{ ENC1_GPO2 = $40; }
GPTC2_TC3 = $80;
{ UD_DIO_Config for USB-101 }
GPO0 = $1100;
GPO1 = $1200;
GPO2 = $1400;
GPO3 = $1800;
GPI0_3 = $2000;
{ GPIO Port }
GPIO_PortA = 0;
GPIO_PortB = 1;
{
General Purpose Timer/Counter for USB-1902
}
{ Counter Mode }
SimpleGatedEventCNT = $01;
SinglePeriodMSR = $02;
SinglePulseWidthMSR = $03;
SingleGatedPulseGen = $04;
SingleTrigPulseGen = $05;
RetrigSinglePulseGen = $06;
SingleTrigContPulseGen = $07;
ContGatedPulseGen = $08;
EdgeSeparationMSR = $09;
SingleTrigContPulseGenPWM = $0a;
ContGatedPulseGenPWM = $0b;
CW_CCW_Encoder = $0c;
x1_AB_Phase_Encoder = $0d;
x2_AB_Phase_Encoder = $0e;
x4_AB_Phase_Encoder = $0f;
Phase_Z = $10;
MultipleGatedPulseGen = $11;
{ GPTC clock source }
GPTC_CLK_SRC_Ext = $01;
GPTC_CLK_SRC_Int = $00;
GPTC_GATE_SRC_Ext = $02;
GPTC_GATE_SRC_Int = $00;
GPTC_UPDOWN_Ext = $04;
GPTC_UPDOWN_Int = $00;
{ GPTC clock polarity }
GPTC_CLKSRC_LACTIVE = $01;
GPTC_CLKSRC_HACTIVE = $00;
GPTC_GATE_LACTIVE = $02;
GPTC_GATE_HACTIVE = $00;
GPTC_UPDOWN_LACTIVE = $04;
GPTC_UPDOWN_HACTIVE = $00;
GPTC_OUTPUT_LACTIVE = $08;
GPTC_OUTPUT_HACTIVE = $00;
{ GPTC OP Parameter }
IntGate = $0; {Internal Gate}
IntUpDnCTR = $1; {Internal Up/Down Counter}
IntENABLE = $2; {Internal Enable}
{ DAQ Event type for the event message }
AIEnd = 0;
AOEnd = 0;
DIEnd = 0;
DOEnd = 0;
DBEvent = 1;
{ Encoder/GPTC Constants }
P1902_GPTC0 = $00;
P1902_GPTC1 = $01;
{ Encoder Setting Event Control }
P1902_EPT_PULWIDTH_200us = $00;
P1902_EPT_PULWIDTH_2ms = $01;
P1902_EPT_PULWIDTH_20ms = $02;
P1902_EPT_PULWIDTH_200ms = $03;
P1902_EPT_TRGOUT_GPO = $04;
P1902_EPT_TRGOUT_CALLBACK = $08;
{ Event Type }
P1902_EVT_TYPE_EPT0 = $00;
P1902_EVT_TYPE_EPT1 = $01;
{ Constants for I Squared C (I2C) }
{ I2C Port }
I2C_Port_A = 0;
{ I2C Control Operation }
I2C_ENABLE = 0;
I2C_STOP = 1;
{ convert from enum }
UD_CTR_Filter_Disable = 0;
UD_CTR_Filter_Enable = 1;
UD_CTR_Reset_Rising_Edge_Counter = 2;
UD_CTR_Reset_Frequency_Counter = 4;
UD_CTR_Polarity_Positive = 0;
UD_CTR_Polarity_Negative = 8;
{ THERMO }
THERMO_B_TYPE = 1;
THERMO_C_TYPE = 2;
THERMO_E_TYPE = 3;
THERMO_K_TYPE = 4;
THERMO_R_TYPE = 5;
THERMO_S_TYPE = 6;
THERMO_T_TYPE = 7;
THERMO_J_TYPE = 8;
THERMO_N_TYPE = 9;
RTD_PT100 = 10;
RTD_PT1000 = RTD_PT100;
THERMO_MAX_TYPE = RTD_PT100;
type
BOOL = Boolean;
PBOOL = ^Boolean;
U8 = Byte;
I16 = SmallInt;
U16 = Word;
USHORT = Word;
PUSHORT = ^Word;
I32 = LongInt;
U32 = Cardinal;
I64 = Int64;
F32 = Single;
F64 = Double;
PU8 = ^Byte;
PI16 = ^SmallInt;
PU16 = ^Word;
PI32 = ^LongInt;
PPI32 = ^PI32;
PU32 = ^Cardinal;
PI64 = ^Int64;
PF64 = ^Double;
PHANDLE = ^THANDLE;
PUSBDAQ_DEVICE = ^USBDAQ_DEVICE;
USBDAQ_DEVICE = packed record
wModuleType:U16;
wCardID:U16;
end;
QCInfo = packed record
RefVoltage : array [1..4] of Double;
Trimmer : USHORT;
Reserved : array [1..3] of USHORT;
end;
PQC_INFO_1902 = ^QC_INFO_1902;
QC_INFO_1902 = packed record
case Integer of
0: (QCInfo : QCInfo);
1: (bValue : array [1..40] of Byte);
end;
CALInfo = packed record
AI_Offset : array [1..2] of Cardinal;
AI_Gain : array [1..2] of Cardinal;
AO_Offset : Cardinal;
AO_Gain : Cardinal;
end;
PCAL_INFO_1902 = ^CAL_INFO_1902;
CAL_INFO_1902 = packed record
case Integer of
0: (CalInfo : CalInfo);
1: (bValue : array [1..24] of Byte);
end;
TUDDaskCallback = procedure; stdcall;
{
USB-DASK Function prototype
}
{
Function
}
function UD_Register_Card(CardType, card_num : U16) : I16;
stdcall; external 'usb-dask.dll';
function UD_Release_Card(CardNumber : U16) : I16;
stdcall; external 'usb-dask.dll';
function UD_Device_Scan(pModuleNum : PU16;
pAvailModules : PUSBDAQ_DEVICE) : I16;
stdcall; external 'usb-dask.dll';
{
AI Function
}
function UD_AI_1902_Config(CardNumber, wConfigCtrl, wTrigCtrl : U16;
dwTrgLevel, wReTriggerCnt, dwDelayCount : U32) : I16;
stdcall; external 'usb-dask.dll';
function UD_AI_2401_Config(CardNumber, wChanCfg1, wChanCfg2, wChanCfg3, wChanCfg4, wTrigCtrl : U16) : I16;
stdcall; external 'usb-dask.dll';
function UD_AI_2401_PollConfig(wCardNumber, wPollSpeed, wMAvgStageCh1, wMAvgStageCh2, wMAvgStageCh3, wMAvgStageCh4 : U16) : I16;
stdcall; external 'usb-dask.dll';
function UD_AI_1902_CounterInterval(CardNumber : U16; ScanIntrv, SampIntrv : U32) : I16;
stdcall; external 'usb-dask.dll';
function UD_AI_AsyncCheck(CardNumber : U16; Stopped : PBool; AccessCnt : PU32) : I16;
stdcall; external 'usb-dask.dll';
function UD_AI_AsyncClear(CardNumber : U16; AccessCnt : PU32) : I16;
stdcall; external 'usb-dask.dll';
function UD_AI_AsyncDblBufferHalfReady(CardNumber : U16; HalfReady, StopFlag : PBool) : I16;
stdcall; external 'usb-dask.dll';
function UD_AI_AsyncDblBufferMode(CardNumber : U16; Enable : Boolean) : I16;
stdcall; external 'usb-dask.dll';
function UD_AI_AsyncDblBufferTransfer(CardNumber : U16; Buffer : PU16) : I16;
stdcall; external 'usb-dask.dll';
function UD_AI_AsyncDblBufferTransfer32(CardNumber : U16; pwBuffer : PU32) : I16;
stdcall; external 'usb-dask.dll';
function UD_AI_AsyncDblBufferOverrun(CardNumber : U16; op : U16; overrunFlag : PU16) : I16;
stdcall; external 'usb-dask.dll';
function UD_AI_AsyncDblBufferHandled(CardNumber : U16) : I16;
stdcall; external 'usb-dask.dll';
function UD_AI_AsyncDblBufferToFile(CardNumber : U16) : I16;
stdcall; external 'usb-dask.dll';
function UD_AI_ContReadChannel(CardNumber : U16; Channel : U16; AdRange : U16; Buffer : PU16; ReadCount : U32; SampleRate : F64; SyncMode : U16) : I16;
stdcall; external 'usb-dask.dll';
function UD_AI_ContReadMultiChannels(CardNumber : U16; NumChans : U16; Chans : PU16; AdRanges : PU16; Buffer : PU16; ReadCount : U32; SampleRate : F64; SyncMode : U16) : I16;
stdcall; external 'usb-dask.dll';
function UD_AI_ContReadChannelToFile(CardNumber : U16; Channel : U16; AdRange : U16; FileName : PU8; ReadCount : U32; SampleRate : F64; SyncMode : U16) : I16;
stdcall; external 'usb-dask.dll';
function UD_AI_ContReadMultiChannelsToFile(CardNumber : U16; NumChans : U16; Chans : PU16; AdRanges : PU16; FileName : PU8; ReadCount : U32; SampleRate : F64; SyncMode : U16) : I16;
stdcall; external 'usb-dask.dll';
function UD_AI_ContScanChannelsToFile(CardNumber : U16; Channel : U16; AdRange : U16; FileName : PU8; ReadCount : U32; SampleRate : F64; SyncMode : U16) : I16;
stdcall; external 'usb-dask.dll';
function UD_AI_InitialMemoryAllocated(CardNumber : U16; MemSize : PU32) : I16;
stdcall; external 'usb-dask.dll';
function UD_AI_ReadChannel(CardNumber : U16; Channel : U16; AdRange : U16; Value : PU16) : I16;
stdcall; external 'usb-dask.dll';
function UD_AI_VReadChannel(CardNumber : U16; Channel : U16; AdRange : U16; voltage : PF64) : I16;
stdcall; external 'usb-dask.dll';
function UD_AI_ReadMultiChannels(CardNumber : U16; NumChans : U16; Chans : PU16; AdRanges : PU16; Buffer : PU16) : I16;
stdcall; external 'usb-dask.dll';
function UD_AI_SetTimeOut(CardNumber : U16; TimeOut : U32) : I16;
stdcall; external 'usb-dask.dll';
function UD_AI_VoltScale(CardNumber : U16; AdRange : U16; reading : I16; voltage : PF64) : I16;
stdcall; external 'usb-dask.dll';
function UD_AI_ContVScale(CardNumber : U16; adRange : U16; readingArray : Pointer; voltageArray : PF64; count : I32) : I16;
stdcall; external 'usb-dask.dll';
function UD_AI_2401_Scale32(CardNumber : U16; adRange : U16; inType : U16; reading : U32; voltage : PF64) : I16;
stdcall; external 'usb-dask.dll';
function UD_AI_2401_ContVScale32(CardNumber : U16; adRange : U16; inType : U16; readingArray : U32; voltageArray : PF64; count : I32) : I16;
stdcall; external 'usb-dask.dll';
function UD_AI_AsyncReTrigNextReady(CardNumber : U16; Ready : PBOOL; StopFlag : PBOOL; RdyTrigCnt : PU32) : I16;
stdcall; external 'usb-dask.dll';
function UD_AI_AsyncBufferTransfer(wCardNumber : USHORT; pwBuffer : PUSHORT; offset : U32; count : U32) : I16;
stdcall; external 'usb-dask.dll';
function UD_AI_EventCallBack(CardNumber : U16; mode : I16; EventType : I16; callbackAddr : TUDDaskCallback) : I16;
stdcall; external 'usb-dask.dll';
function UD_AI_Moving_Average32(CardNumber : U16; SrcBuf : PU32; DesBuf : PU32; dwTgChIdx : U32; dwTotalCh : U32; dwMovAvgWindow : U32; dwSamplCnt : U32) : I16;
stdcall; external 'usb-dask.dll';
function UD_AI_2401_Stop_Poll(wCardNumber : U16) : I16;
stdcall; external 'usb-dask.dll';
function UD_AI_Channel_Config (CardNumber : U16; wChanCfg1 : U16; wChanCfg2 : U16; wChanCfg3 : U16; wChanCfg4 : U16 ) : I16;
stdcall; external 'usb-dask.dll';
function UD_AI_Trigger_Config (CardNumber : U16; wConvSrc : U16; wTrigMode : U16; wTrigCtrl : U16; wReTrigCnt : U32; dwDLY1Cnt : U32; dwDLY2Cnt : U32; dwTrgLevel : U32 ) : I16;
stdcall; external 'usb-dask.dll';
function UD_AI_2405_Chan_Config (CardNumber : U16; wChanCfg1 : U16; wChanCfg2 : U16; wChanCfg3 : U16; wChanCfg4 : U16 ) : I16;
stdcall; external 'usb-dask.dll';
function UD_AI_2405_Trig_Config (CardNumber : U16; wConvSrc : U16; wTrigMode : U16; wTrigCtrl : U16; wReTrigCnt : U32; dwDLY1Cnt : U32; dwDLY2Cnt : U32; dwTrgLevel : U32 ) : I16;
stdcall; external 'usb-dask.dll';
function UD_AI_VoltScale32 ( CardNumber : U16; adRange : U16; inType : U16; reading : U32; voltage : PF64 ) : I16;
stdcall; external 'usb-dask.dll';
function UD_AI_ContVScale32 ( CardNumber : U16; adRange : U16; inType : U16; readingArray : U32; voltageArray : PF64; count : I32) : I16;
stdcall; external 'usb-dask.dll';
function UD_AI_AsyncBufferTransfer32 ( CardNumber : U16; pdwBuffer : PU32; offset : U32; count : U32 ) : I16;
stdcall; external 'usb-dask.dll';
function UD_AI_DDS_ActualRate_Get ( CardNumber : U16; fSampleRate : F64; fActualRate : PF64 ) : I16;
stdcall; external 'usb-dask.dll';
function UD_AI_Monitor_Config(CardNumber : U16; mode : I16; aiCh : U16; gpoCh : U16; adRange : U16; trgHigh : F64; trgLow : F64; deltaT : F64 ) : I16;
stdcall; external 'usb-dask.dll';
function UD_AI_Monitor_AlarmClear ( CardNumber : U16; gpoCh : U16 ) : I16;
stdcall; external 'usb-dask.dll';
function UD_AI_Monitor_AlarmClear ( CardNumber : U16; gpoCh : U16; alarmStatus : PU16 ) : I16;
stdcall; external 'usb-dask.dll';
function UD_AI_Monitor_Reset ( CardNumber : U16 ) : I16;
stdcall; external 'usb-dask.dll';
{
AO Function
}
function UD_AO_1902_Config(CardNumber : U16; ConfigCtrl : U16; TrigCtrl : U16; ReTrgCnt : U32; DLY1Cnt : U32; DLY2Cnt : U32) : I16;
stdcall; external 'usb-dask.dll';
function UD_AO_AsyncCheck(CardNumber : U16; Stopped : PBOOL; AccessCnt : PU32) : I16;
stdcall; external 'usb-dask.dll';
function UD_AO_AsyncClear(CardNumber : U16; AccessCnt : PU32; stop_mode : U16) : I16;
stdcall; external 'usb-dask.dll';
function UD_AO_AsyncDblBufferHalfReady(CardNumber : U16; bHalfReady : PBOOL) : I16;
stdcall; external 'usb-dask.dll';
function UD_AO_AsyncDblBufferTransfer(wCardNumber : U16; wBufferID : USHORT; pwBuffer : PUSHORT) : I16; stdcall; external 'usb-dask.dll';
function UD_AO_AsyncDblBufferMode(CardNumber : U16; Enable : BOOLEAN; bEnFifoMode : BOOLEAN) : I16;
stdcall; external 'usb-dask.dll';
function UD_AO_ContBufferCompose(CardNumber : U16; TotalChnCount : U16; ChnNum : U16; UpdateCount : U32; ConBuffer : Pointer; Buffer : Pointer) : I16;
stdcall; external 'usb-dask.dll';
function UD_AO_ContWriteChannel(CardNumber : U16; Channel : U16; pAOBuffer : Pointer; WriteCount : U32; Iterations : U32; CHUI : U32; definite : U16; SyncMode : U16) : I16;
stdcall; external 'usb-dask.dll';
function UD_AO_ContWriteMultiChannels(CardNumber : U16; NumChans : U16; Chans : PU16; pAOBuffer : Pointer; WriteCount : U32; Iterations : U32; CHUI : U32; definite : U16; SyncMode : U16) : I16;
stdcall; external 'usb-dask.dll';
function UD_AO_InitialMemoryAllocated(CardNumber : U16; MemSize : PU32) : I16;
stdcall; external 'usb-dask.dll';
function UD_AO_SetTimeOut(CardNumber : U16; TimeOut : U32) : I16;
stdcall; external 'usb-dask.dll';
function UD_AO_SimuVWriteChannel(CardNumber : U16; Group : U16; VBuffer : PF64) : I16;
stdcall; external 'usb-dask.dll';
function UD_AO_SimuWriteChannel(CardNumber : U16; Group : U16; Buffer : PI16) : I16;
stdcall; external 'usb-dask.dll';
function UD_AO_VWriteChannel(CardNumber : U16; Channel : U16; Voltage : F64) : I16;
stdcall; external 'usb-dask.dll';
function UD_AO_WriteChannel(CardNumber : U16; Channel : U16; Value : I16) : I16;
stdcall; external 'usb-dask.dll';
function UD_AO_WriteChannels(wCardNumber : U16; wNumChans : U16; pwChans : PU16; pwBuffer : PU16) : I16;
stdcall; external 'usb-dask.dll';
function UD_AO_VoltScale(CardNumber, Channel : U16; Voltage : F64; binValue : PI16) : I16;
stdcall; external 'usb-dask.dll';
function UD_AO_EventCallBack(CardNumber : U16; mode : I16; EventType : I16; callbackAddr : TUDDaskCallback) : I16;
stdcall; external 'usb-dask.dll';
{
1902
}
function UD_DIO_1902_Config(wCardNumber : U16; wPart1Cfg : U16; wPart2Cfg : U16) : I16;
stdcall; external 'usb-dask.dll';
function UD_DIO_2401_Config(wCardNumber : U16; wPart1Cfg : U16) : I16;
stdcall; external 'usb-dask.dll';
function UD_DIO_2405_Config(wCardNumber : U16; wPart1Cfg : U16; wPart2Cfg : U16) : I16;
stdcall; external 'usb-dask.dll';
function UD_DIO_Config(wCardNumber : U16; wPart1Cfg : U16; wPart2Cfg : U16) : I16;
stdcall; external 'usb-dask.dll';
{
DI Function
}
function UD_DI_ReadLine(CardNumber : U16; Port : U16; Line : U16; State : PU16) : I16;
stdcall; external 'usb-dask.dll';
function UD_DI_ReadPort(CardNumber : U16; Port : U16; Value : PU32) : I16;
stdcall; external 'usb-dask.dll';
{
DO Function
}
function UD_DO_ReadLine(CardNumber : U16; Port : U16; Line : U16; Value : PU16) : I16;
stdcall; external 'usb-dask.dll';
function UD_DO_ReadPort(CardNumber : U16; Port : U16; Value : PU32) : I16;
stdcall; external 'usb-dask.dll';
function UD_DO_WriteLine(CardNumber : U16; Port : U16; Line : U16; Value : U16) : I16;
stdcall; external 'usb-dask.dll';
function UD_DO_WritePort(CardNumber : U16; Port : U16; Value : U32) : I16;
stdcall; external 'usb-dask.dll';
{
Timer/Counter Function
}
function UD_GPTC_Clear(CardNumber : U16; GCtr : U16) : I16;
stdcall; external 'usb-dask.dll';
function UD_GPTC_Control(CardNumber : U16; GCtr : U16; ParamID : U16; Value : U16) : I16;
stdcall; external 'usb-dask.dll';
function UD_GPTC_Read(CardNumber : U16; GCtr : U16; Value : PU32) : I16;
stdcall; external 'usb-dask.dll';
function UD_GPTC_Setup(CardNumber : U16; GCtr : U16; Mode : U16; SrcCtrl : U16; PolCtrl : U16; LReg1_Val : U32; LReg2_Val : U32; RulseCount : U32) : I16;
stdcall; external 'usb-dask.dll';
function UD_GPTC_Setup_N(CardNumber : U16; GCtr : U16; Mode : U16; SrcCtrl : U16; PolCtrl : U16; LReg1_Val : U32; LReg2_Val : U32; RulseCount : U32) : I16;
stdcall; external 'usb-dask.dll';
function UD_GPTC_Status(CardNumber : U16; GCtr : U16; Value : PU16) : I16;
stdcall; external 'usb-dask.dll';
{
Get Event or View Function
}
function UD_AI_GetEvent(CardNumber : U16; Event : PHANDLE) : I16;
stdcall; external 'usb-dask.dll';
function UD_AO_GetEvent(CardNumber : U16; Event : PHANDLE) : I16;
stdcall; external 'usb-dask.dll';
function UD_AI_GetView(CardNumber : U16; View : PU32) : I16;
stdcall; external 'usb-dask.dll';
function UD_AO_GetView(CardNumber : u16; View : PU32) : I16;
stdcall; external 'usb-dask.dll';
{
Common Function
}
function UD_GetActualRate(CardNumber : U16; SampleRate : F64; ActualRate : PF64) : I16;
stdcall; external 'usb-dask.dll';
function UD_GetCardIndexFromID(CardNumber : U16; cardType : PU16; cardIndex : PU16) : I16;
stdcall; external 'usb-dask.dll';
function UD_GetCardType(CardNumber : U16; cardType : PU16) : I16;
stdcall; external 'usb-dask.dll';
function UD_IdentifyLED_Control(wCardNumber : U16; bEnable : U8) : I16;
stdcall; external 'usb-dask.dll';
{
Misc. Functions
}
function UD_Read_ColdJunc_Thermo(wCardNumber : U16; pfValue : PF64) : I16;
stdcall; external 'usb-dask.dll';
function UD_Read_ColdJunc_Thermo_QC(wCardNumber : USHORT; wSensorNo : USHORT; pfValue : PF64) : I16;
stdcall; external 'usb-dask.dll';
{
USB-1901/1902 Calibration
}
function UD_1902_AD_Read_Average(wCardNumber : U16; wCalSrc : USHORT; bOffsetGain : U8; pAD_Data : PI32) : I16;
stdcall; external 'usb-dask.dll';
{
USB-1903 Calibration
}
function UD_1903_AD_Read_Average(wCardNumber : U16; wCalSrc : USHORT; pAD_Data : PI32) : I16;
stdcall; external 'usb-dask.dll';
{
USB-2401 Calibration
}
function UD_2401_AD_Read_Sum(wCardNumber : U16; wOperation : WORD; wCalSrc : U16; dwSampleRate : U32; pAD_Data : PI64) : I16;
stdcall; external 'usb-dask.dll';
function UD_2401_AD_Read_Raw(wCardNumber : U16; wOperation : WORD; wCalSrc : U16; dwSampleRate : U32; pAD_Data : PPI32 ) : I16;
stdcall; external 'usb-dask.dll';
{
Common
}
function UD_GetFPGAVersion(wCardNumber : U16; pdwFPGAVersion : PU32) : I16;
stdcall; external 'usb-dask.dll';
function UD_1902_Trimmer_Set(wCardNumber : U16; bValue : U8) : I16;
stdcall; external 'usb-dask.dll';
function UD_2401_Trimmer_Set(wCardNumber : U16; bValue : U8) : I16;
stdcall; external 'usb-dask.dll';
{
UD_CTR functions
}
function UD_CTR_Control(wCardNumber, wCtr : U16; dwCtrl : U32) : I16;
stdcall; external 'usb-dask.dll';
function UD_CTR_ReadFrequency(wCardNumber, wCtr : U16; pfValue : PF64) : I16;
stdcall; external 'usb-dask.dll';
function UD_CTR_ReadRisingEdgeCounter(wCardNumber, wCtr : U16; dwValue : PU32) : I16;
stdcall; external 'usb-dask.dll';
function UD_CTR_SetupMinPulseWidth(wCardNumber, wCtr, wValue : U16) : I16;
stdcall; external 'usb-dask.dll';
{
UD_DI functions
}
function UD_DI_GetCOSLatchData32(wCardNumber, wPort : U16; pwCosLData : PU32) : I16;
stdcall; external 'usb-dask.dll';
function UD_DI_SetupMinPulseWidth(wCardNumber, wValue : U16) : I16;
stdcall; external 'usb-dask.dll';
function UD_DI_Control(wCardNumber, wPort : U16; dwCtrl : U32) : I16;
stdcall; external 'usb-dask.dll';
function UD_DI_SetCOSInterrupt32(wCardNumber, wPort : U16; dwCtrl : U32; hEvent : PHANDLE; ManualReset : Boolean) : I16;
stdcall; external 'usb-dask.dll';
function UD_DO_GetInitPattern(wCardNumber, wPort : U16; pdwPattern : PU32) : I16;
stdcall; external 'usb-dask.dll';
function UD_DO_SetInitPattern(wCardNumber, wPort : U16; pdwPattern : PU32) : I16;
stdcall; external 'usb-dask.dll';
function UD_DIO_INT_EventMessage(wCardNumber : U16; mode : I16; evt : THANDLE; windowHandle : HWND; message : U32; callbackAddr : TUDDaskCallback) : I16;
stdcall; external 'usb-dask.dll';
implementation
end.