
unit Zadc_int;

{$ALIGN ON}
{$MINENUMSIZE 4}
{$WEAKPACKAGEUNIT}

interface

uses Windows;

// Constants
const

  // Поддерживаемые типы устройств
  {$EXTERNALSYM KD1610}
  KD1610  = 0;	  // ADC 16/200
  {$EXTERNALSYM KD216}
  KD216	  = 1;	  // APC 216
  {$EXTERNALSYM KD500}
  KD500	  = 2;	  // ADC 16/500
  {$EXTERNALSYM KD500P}
  KD500P	= 3;	  // ADC 16/500P
  {$EXTERNALSYM KD816}
  KD816	  = 4;	  // ADC 816
  {$EXTERNALSYM KD1002}
  KD1002	= 5;	  // ADC 1002
  {$EXTERNALSYM KDU216}
  KDU216	= 6;	  // APC 216 USB
  {$EXTERNALSYM KD24}
  KD24	  = 7;	  // ADC 24
  {$EXTERNALSYM KD1432}
  KD1432	= 8;	  // ADC 1432
  {$EXTERNALSYM KDUACPB}
  KDUACPB	= 9;	  // ACPB USB
  {$EXTERNALSYM KDU1616}
  KDU1616	= 10;	// ZET210
  {$EXTERNALSYM KDUPD14}
  KDUPD14	= 11;	// PD14 USB
  {$EXTERNALSYM KDUVN}
  KDUVN	  = 12;	// VN USB
  {$EXTERNALSYM KDUOSC}
  KDUOSC	= 13;
  {$EXTERNALSYM KDU8500}
  KDU8500	= 14;	// A17U8
  {$EXTERNALSYM KDU2500}
  KDU2500	= 15;	// A17U2
  {$EXTERNALSYM KDU1624}
  KDU1624	= 16;	// ZET220
  {$EXTERNALSYM KDU0424}
  KDU0424	= 17;	// ZET230
  {$EXTERNALSYM KDU0414}
  KDU0414	= 18;	// ZET240

///////////////////////////////////////////////////////////////////////////
// API Function Prototypes
///////////////////////////////////////////////////////////////////////////
//Все функции возвращают код ошибки. 0 - нет ошибки, иначе - код ошибки

// ------------- Общие функции -------------
// подключиться к драйверу
{$EXTERNALSYM ZOpen}
function ZOpen(typeDevice, numberDSP: Longint): Longint; stdcall;
// отключиться от драйвера
{$EXTERNALSYM ZClose}
function ZClose(typeDevice, numberDSP: Longint): Longint; stdcall;

// сброс и останов сигнальных процессоров (влияет на все DSP одного устройства)
{$EXTERNALSYM ZResetDSP}
function ZResetDSP(typeDevice, numberDSP: Longint): Longint; stdcall;
// проинициализировать сигнальный процессор
{$EXTERNALSYM ZInitDSP}
function ZInitDSP(typeDevice, numberDSP: Longint; fileName: PChar): Longint; stdcall;
// получить серийный номер DSP
{$EXTERNALSYM ZGetSerialNumberDSP}
function ZGetSerialNumberDSP(typeDevice, numberDSP: Longint;
         var serialNumber: Longint): Longint; stdcall;

// получить имя устройства (возвращаемая строка не более 16 символов вместе с завершающим 0, maxSizeStr - размер буфера strName[])
{$EXTERNALSYM ZGetNameDevice}
function ZGetNameDevice(typeDevice, numberDSP: Longint;
        strName: PChar; maxSizeStr: Longint): Longint; stdcall;

// получить номер ревизии микропрограммы DSP
{$EXTERNALSYM ZGetRevisionDSP}
function ZGetRevisionDSP(typeDevice, numberDSP: Longint;
         var revisionNumber: Longint): Longint; stdcall;
// получить версии ПО
{$EXTERNALSYM ZGetVersion}
function ZGetVersion(typeDevice, numberDSP: Longint;
         verDSP, verDRV, verLIB: PChar): Longint; stdcall;
// получить тип интерфейса (1 - PCI, 2 - USB, 3 - Ethernet)
{$EXTERNALSYM ZGetTypeConnection}
function ZGetTypeConnection(typeDevice, numberDSP: Longint;
         var typeInterface: Longint): Longint; stdcall;
// прочитать код ошибки
{$EXTERNALSYM ZGetError}
function ZGetError(typeDevice, numberDSP: Longint; var error: Longint): Longint; stdcall;
// определить кол-во изменений параметров с момента загрузки
{$EXTERNALSYM ZGetModify}
function ZGetModify(typeDevice, numberDSP: Longint; var modify: Longint): Longint; stdcall;
// прочитать флаг - количество прерываний DSP (пакетов) с момента ZStartADC()
{$EXTERNALSYM ZGetFlag}
function ZGetFlag(typeDevice, numberDSP: Longint; var flag: Longword): Longint; stdcall;

// Запросить кол-во линий цифрового порта
{$EXTERNALSYM ZGetQuantityChannelDigPort}
function ZGetQuantityChannelDigPort(typeDevice, numberDSP: Longint;
         var quantityChannel: Longint): Longint; stdcall;
// Запросить маску выходов порта
{$EXTERNALSYM ZGetDigOutEnable}
function ZGetDigOutEnable(typeDevice, numberDSP: Longint;
         var digitalOutEnableMask: Longword): Longint; stdcall;
// Установить маску выходов порта
{$EXTERNALSYM ZSetDigOutEnable}
function ZSetDigOutEnable(typeDevice, numberDSP: Longint;
         digitalOutEnableMask: Longword): Longint; stdcall;
// Прочитать данные со входов порта
{$EXTERNALSYM ZGetDigInput}
function ZGetDigInput(typeDevice, numberDSP: Longint; var digitalInput: Longword): Longint; stdcall;
// Прочитать данные, выдаваемые на выходы порта
{$EXTERNALSYM ZGetDigOutput}
function ZGetDigOutput(typeDevice, numberDSP: Longint; var digitalOutput: Longword): Longint; stdcall;
// Записать данные в порт
{$EXTERNALSYM ZSetDigOutput}
function ZSetDigOutput(typeDevice, numberDSP: Longint; digitalOutput: Longword): Longint; stdcall;
// Опросить режим потокового ввода-вывода (enable=0 - аналоговый порт, enable=1 - цифрового порт)
{$EXTERNALSYM ZGetDigitalMode}
function ZGetDigitalMode(typeDevice, numberDSP: Longint; var enable: Longint): Longint; stdcall;
// Переключить режим потокового ввода-вывода (enable=0 - аналоговый порт, enable=1 - цифрового порт)
{$EXTERNALSYM ZSetDigitalMode}
function ZSetDigitalMode(typeDevice, numberDSP: Longint; enable: Longint): Longint; stdcall;
// Опрос разрешения генерации сигналов синхронизации на цифровой порт
{$EXTERNALSYM ZGetMasterSynchr}
function ZGetMasterSynchr(typeDevice, numberDSP: Longint; var enable: Longint): Longint; stdcall;
// Разрешить генерацию сигналов синхронизации на цифровой порт
{$EXTERNALSYM ZSetMasterSynchr}
function ZSetMasterSynchr(typeDevice, numberDSP: Longint; enable: Longint): Longint; stdcall;

// проверить поддерживается ли модуль ШИМ
{$EXTERNALSYM ZFindPWM}
function ZFindPWM(typeDevice, numberDSP: Longint; var present: Longint): Longint; stdcall;
// запуск каналов ШИМ
{$EXTERNALSYM ZStartPWM}
function ZStartPWM(typeDevice, numberDSP: Longint;
         Start0, Start1, Start2: Longint): Longint; stdcall;
// останов каналов ШИМ
{$EXTERNALSYM ZStopPWM}
function ZStopPWM(typeDevice, numberDSP: Longint;
         Stop0, Stop1, Stop2: Longint): Longint; stdcall;
// задать частоту ШИМ через коэф. деления опорной частоты и период
{$EXTERNALSYM ZSetFreqPWM}
function ZSetFreqPWM(typeDevice, numberDSP: Longint;
         Rate, Period: Longint): Longint; stdcall;
// задать скважность и сдвиг каналов ШИМ
{$EXTERNALSYM ZSetOnDutyPWM}
function ZSetOnDutyPWM(typeDevice, numberDSP: Longint;
         OnDutyPWM0, OnDutyPWM1, OnDutyPWM2, ShiftPWM1, ShiftPWM2: Longint): Longint; stdcall;


// ------------- Парные функции для работы с АЦП или ЦАП -------------
// поддержка АЦП в текущем режиме DSP
{$EXTERNALSYM ZGetEnableADC}
function ZGetEnableADC(typeDevice, numberDSP: Longint; var enable: Longint): Longint; stdcall;
// поддержка ЦАП в текущем режиме DSP
{$EXTERNALSYM ZGetEnableDAC}
function ZGetEnableDAC(typeDevice, numberDSP: Longint; var enable: Longint): Longint; stdcall;
// установить сигнальный процессор в режим АЦП/ЦАП
{$EXTERNALSYM ZSetTypeADC}
function ZSetTypeADC(typeDevice, numberDSP: Longint): Longint; stdcall;
{$EXTERNALSYM ZSetTypeDAC}
function ZSetTypeDAC(typeDevice, numberDSP: Longint): Longint; stdcall;
// чтение в каком состоянии находится АЦП/ЦАП
{$EXTERNALSYM ZGetStartADC}
function ZGetStartADC(typeDevice, numberDSP: Longint;
         var status: Longint): Longint; stdcall;
{$EXTERNALSYM ZGetStartDAC}
function ZGetStartDAC(typeDevice, numberDSP: Longint;
         var status: Longint): Longint; stdcall;
// запуск процедуры ввода/вывода сигнала
{$EXTERNALSYM ZStartADC}
function ZStartADC(typeDevice, numberDSP: Longint): Longint; stdcall;
{$EXTERNALSYM ZStartDAC}
function ZStartDAC(typeDevice, numberDSP: Longint): Longint; stdcall;
// останов процедуры ввода/вывода
{$EXTERNALSYM ZStopADC}
function ZStopADC(typeDevice, numberDSP: Longint): Longint; stdcall;
{$EXTERNALSYM ZStopDAC}
function ZStopDAC(typeDevice, numberDSP: Longint): Longint; stdcall;

// прочитать кол-во каналов АЦП/ЦАП
{$EXTERNALSYM ZGetQuantityChannelADC}
function ZGetQuantityChannelADC(typeDevice, numberDSP: Longint;
         var quantityChannel: Longint): Longint; stdcall;
{$EXTERNALSYM ZGetQuantityChannelDAC}
function ZGetQuantityChannelDAC(typeDevice, numberDSP: Longint;
         var quantityChannel: Longint): Longint; stdcall;
// прочитать вес младшего разряда АЦП/ЦАП (устаревшая функция)
{$EXTERNALSYM ZGetDigitalResolutionADC}
function ZGetDigitalResolutionADC(typeDevice, numberDSP: Longint;
         var digitalResolution: Double): Longint; stdcall;
{$EXTERNALSYM ZGetDigitalResolutionDAC}
function ZGetDigitalResolutionDAC(typeDevice, numberDSP: Longint;
         var digitalResolution: Double): Longint; stdcall;
// прочитать откалиброванный поканально вес младшего разряда АЦП/ЦАП (в вольтах)
{$EXTERNALSYM ZGetDigitalResolChanADC}
function ZGetDigitalResolChanADC(typeDevice, numberDSP: Longint;
         numberChannel: Longint; var digitalResolChan: Double): Longint; stdcall;
{$EXTERNALSYM ZGetDigitalResolChanDAC}
function ZGetDigitalResolChanDAC(typeDevice, numberDSP: Longint;
         numberChannel: Longint; var digitalResolChan: Double): Longint; stdcall;
// прочитать кол-во бит в одном отсчете АЦП/ЦАП
{$EXTERNALSYM ZGetBitsADC}
function ZGetBitsADC(typeDevice, numberDSP: Longint; var numberBits: Longint): Longint; stdcall;
{$EXTERNALSYM ZGetBitsDAC}
function ZGetBitsDAC(typeDevice, numberDSP: Longint; var numberBits: Longint): Longint; stdcall;
// прочитать кол-во слов в одном отсчете АЦП/ЦАП
{$EXTERNALSYM ZGetWordsADC}
function ZGetWordsADC(typeDevice, numberDSP: Longint; var numberWords: Longint): Longint; stdcall;
{$EXTERNALSYM ZGetWordsDAC}
function ZGetWordsDAC(typeDevice, numberDSP: Longint; var numberWords: Longint): Longint; stdcall;

// прочитать частоту дискретизации
{$EXTERNALSYM ZGetFreqADC}
function ZGetFreqADC(typeDevice, numberDSP: Longint; var freq: Double): Longint; stdcall;
{$EXTERNALSYM ZGetFreqDAC}
function ZGetFreqDAC(typeDevice, numberDSP: Longint; var freq: Double): Longint; stdcall;
// прочитать частоту из списка возможных частот дискретизации
{$EXTERNALSYM ZGetListFreqADC}
function ZGetListFreqADC(typeDevice, numberDSP: Longint;
         next: Longint; var freq: Double): Longint; stdcall;
{$EXTERNALSYM ZGetListFreqDAC}
function ZGetListFreqDAC(typeDevice, numberDSP: Longint;
         next: Longint; var freq: Double): Longint; stdcall;
// установить следующую из списка частоту дискретизации
{$EXTERNALSYM ZSetNextFreqADC}
function ZSetNextFreqADC(typeDevice, numberDSP: Longint;
         next: Longint; var freq: Double): Longint; stdcall;
{$EXTERNALSYM ZSetNextFreqDAC}
function ZSetNextFreqDAC(typeDevice, numberDSP: Longint;
         next: Longint; var freq: Double): Longint; stdcall;
// установить частоту дискретизации
{$EXTERNALSYM ZSetFreqADC}
function ZSetFreqADC(typeDevice, numberDSP: Longint;
         freqIn: Double; var freqOut: Double): Longint; stdcall;
{$EXTERNALSYM ZSetFreqDAC}
function ZSetFreqDAC(typeDevice, numberDSP: Longint;
         freqIn:Double; var freqOut: Double): Longint; stdcall;

// прочитать значение текущей опорной частоты
{$EXTERNALSYM ZGetExtFreqADC}
function ZGetExtFreqADC(typeDevice, numberDSP: Longint; var oporFreq: Double): Longint; stdcall;
{$EXTERNALSYM ZGetExtFreqDAC}
function ZGetExtFreqDAC(typeDevice, numberDSP: Longint; var oporFreq: Double): Longint; stdcall;
// установить значение внешней опорной частоты
{$EXTERNALSYM ZSetExtFreqADC}
function ZSetExtFreqADC(typeDevice, numberDSP: Longint; extFreq: Double): Longint; stdcall;
{$EXTERNALSYM ZSetExtFreqDAC}
function ZSetExtFreqDAC(typeDevice, numberDSP: Longint; extFreq: Double): Longint; stdcall;
// прочитать статус синхронизации по внешней частоте
{$EXTERNALSYM ZGetEnableExtFreqADC}
function ZGetEnableExtFreqADC(typeDevice, numberDSP: Longint; var enable: Longint): Longint; stdcall;
{$EXTERNALSYM ZGetEnableExtFreqDAC}
function ZGetEnableExtFreqDAC(typeDevice, numberDSP: Longint; var enable: Longint): Longint; stdcall;
// вкл./выкл. синхронизации по внешней частоте
{$EXTERNALSYM ZSetEnableExtFreqADC}
function ZSetEnableExtFreqADC(typeDevice, numberDSP: Longint; enable: Longint): Longint; stdcall;
{$EXTERNALSYM ZSetEnableExtFreqDAC}
function ZSetEnableExtFreqDAC(typeDevice, numberDSP: Longint; enable: Longint): Longint; stdcall;
// прочитать статус внешнего запуска
{$EXTERNALSYM ZGetEnableExtStartADC}
function ZGetEnableExtStartADC(typeDevice, numberDSP: Longint; var enable: Longint): Longint; stdcall;
{$EXTERNALSYM ZGetEnableExtStartDAC}
function ZGetEnableExtStartDAC(typeDevice, numberDSP: Longint; var enable: Longint): Longint; stdcall;
// вкл./выкл. внешнего запуска
{$EXTERNALSYM ZSetEnableExtStartADC}
function ZSetEnableExtStartADC(typeDevice, numberDSP: Longint; enable: Longint): Longint; stdcall;
{$EXTERNALSYM ZSetEnableExtStartDAC}
function ZSetEnableExtStartDAC(typeDevice, numberDSP: Longint; enable: Longint): Longint; stdcall;

// определить установленный размер буфера при прерывании
{$EXTERNALSYM ZGetInterruptADC}
function ZGetInterruptADC(typeDevice, numberDSP: Longint; var size: Longint): Longint; stdcall;
{$EXTERNALSYM ZGetInterruptDAC}
function ZGetInterruptDAC(typeDevice, numberDSP: Longint; var size: Longint): Longint; stdcall;
// определить макс. возможный размер буфера при прерывании
{$EXTERNALSYM ZGetMaxInterruptADC}
function ZGetMaxInterruptADC(typeDevice, numberDSP: Longint; var size: Longint): Longint; stdcall;
{$EXTERNALSYM ZGetMaxInterruptDAC}
function ZGetMaxInterruptDAC(typeDevice, numberDSP: Longint; var size: Longint): Longint; stdcall;
// установить размер буфера для перекачки при прерывании
{$EXTERNALSYM ZSetInterruptADC}
function ZSetInterruptADC(typeDevice, numberDSP: Longint; size: Longint): Longint; stdcall;
{$EXTERNALSYM ZSetInterruptDAC}
function ZSetInterruptDAC(typeDevice, numberDSP: Longint; size: Longint): Longint; stdcall;

// определить установленный размер пакета данных DSP
{$EXTERNALSYM ZGetSizePacketADC}
function ZGetSizePacketADC(typeDevice, numberDSP: Longint; var size: Longint): Longint; stdcall;
{$EXTERNALSYM ZGetSizePacketDAC}
function ZGetSizePacketDAC(typeDevice, numberDSP: Longint; var size: Longint): Longint; stdcall;
// определить макс. возможный размер пакета данных DSP
{$EXTERNALSYM ZGetMaxSizePacketADC}
function ZGetMaxSizePacketADC(typeDevice, numberDSP: Longint; var size: Longint): Longint; stdcall;
{$EXTERNALSYM ZGetMaxSizePacketDAC}
function ZGetMaxSizePacketDAC(typeDevice, numberDSP: Longint; var size: Longint): Longint; stdcall;
// установить размер пакета данных DSP
{$EXTERNALSYM ZSetSizePacketADC}
function ZSetSizePacketADC(typeDevice, numberDSP: Longint; size: Longint): Longint; stdcall;
{$EXTERNALSYM ZSetSizePacketDAC}
function ZSetSizePacketDAC(typeDevice, numberDSP: Longint; size: Longint): Longint; stdcall;

// определить установленное кол-во пакетов за одно прерывание
{$EXTERNALSYM ZGetQuantityPacketsADC}
function ZGetQuantityPacketsADC(typeDevice, numberDSP: Longint; var size: Longint): Longint; stdcall;
{$EXTERNALSYM ZGetQuantityPacketsDAC}
function ZGetQuantityPacketsDAC(typeDevice, numberDSP: Longint; var size: Longint): Longint; stdcall;
// определить макс. возможное кол-во пакетов за одно прерывание
{$EXTERNALSYM ZGetMaxQuantityPacketsADC}
function ZGetMaxQuantityPacketsADC(typeDevice, numberDSP: Longint; var size: Longint): Longint; stdcall;
{$EXTERNALSYM ZGetMaxQuantityPacketsDAC}
function ZGetMaxQuantityPacketsDAC(typeDevice, numberDSP: Longint; var size: Longint): Longint; stdcall;
// установить кол-во пакетов за одно прерывание
{$EXTERNALSYM ZSetQuantityPacketsADC}
function ZSetQuantityPacketsADC(typeDevice, numberDSP: Longint; size: Longint): Longint; stdcall;
{$EXTERNALSYM ZSetQuantityPacketsDAC}
function ZSetQuantityPacketsDAC(typeDevice, numberDSP: Longint; size: Longint): Longint; stdcall;

// установить однократное или циклическое накопление в буфер ОЗУ ПК
{$EXTERNALSYM ZSetCycleSampleADC}
function ZSetCycleSampleADC(typeDevice, numberDSP: Longint; enable: Longint): Longint; stdcall;
{$EXTERNALSYM ZSetCycleSampleDAC}
function ZSetCycleSampleDAC(typeDevice, numberDSP: Longint; enable: Longint): Longint; stdcall;

// задать размер буфера АЦП в ОЗУ ПК
{$EXTERNALSYM ZSetBufferSizeADC}
function ZSetBufferSizeADC(typeDevice, numberDSP: Longint; size: Longint): Longint; stdcall;
{$EXTERNALSYM ZSetBufferSizeDAC}
function ZSetBufferSizeDAC(typeDevice, numberDSP: Longint; size: Longint): Longint; stdcall;
// запросить буфер в ОЗУ ПК
{$EXTERNALSYM ZGetBufferADC}
function ZGetBufferADC(typeDevice, numberDSP: Longint;
         var buffer: Pointer; var size: Longint): Longint; stdcall;
{$EXTERNALSYM ZGetBufferDAC}
function ZGetBufferDAC(typeDevice, numberDSP: Longint;
         var buffer: Pointer; var size: Longint): Longint; stdcall;
// освободить буфер в ОЗУ ПК
{$EXTERNALSYM ZRemBufferADC}
function ZRemBufferADC(typeDevice, numberDSP: Longint;
         var buffer: Pointer): Longint; stdcall;
{$EXTERNALSYM ZRemBufferDAC}
function ZRemBufferDAC(typeDevice, numberDSP: Longint;
         var buffer: Pointer): Longint; stdcall;
// чтение указателя буфера в ОЗУ ПК
{$EXTERNALSYM ZGetPointerADC}
function ZGetPointerADC(typeDevice, numberDSP: Longint; var pointer: Longint): Longint; stdcall;
{$EXTERNALSYM ZGetPointerDAC}
function ZGetPointerDAC(typeDevice, numberDSP: Longint; var pointer: Longint): Longint; stdcall;

// опрос количества включенных каналов
{$EXTERNALSYM ZGetNumberInputADC}
function ZGetNumberInputADC(typeDevice, numberDSP: Longint; var workChannels: Longint): Longint; stdcall;
{$EXTERNALSYM ZGetNumberOutputDAC}
function ZGetNumberOutputDAC(typeDevice, numberDSP: Longint; var workChannels: Longint): Longint; stdcall;
// опрос включен ли заданный канал
{$EXTERNALSYM ZGetInputADC}
function ZGetInputADC(typeDevice, numberDSP: Longint; numberChannel: Longint; var enable: Longint): Longint; stdcall;
{$EXTERNALSYM ZGetOutputDAC}
function ZGetOutputDAC(typeDevice, numberDSP: Longint; numberChannel: Longint; var enable: Longint): Longint; stdcall;
// включить/выключить заданный канал
{$EXTERNALSYM ZSetInputADC}
function ZSetInputADC(typeDevice, numberDSP: Longint; numberChannel, enable: Longint): Longint; stdcall;
{$EXTERNALSYM ZSetOutputDAC}
function ZSetOutputDAC(typeDevice, numberDSP: Longint; numberChannel, enable: Longint): Longint; stdcall;


// ------------- Функции для работы только с АЦП -------------
// прочитать режим работы устройства
{$EXTERNALSYM ZGetModaADC}
function ZGetModaADC(typeDevice, numberDSP: Longint;
         var moda: Longint): Longint; stdcall;
// установить режим работы устройства (служебн., пользоваться не рекомендуется)
{$EXTERNALSYM ZSetModaADC}
function ZSetModaADC(typeDevice, numberDSP: Longint;
         moda: Longint): Longint; stdcall;

// прочитать коэф. усиления
{$EXTERNALSYM ZGetAmplifyADC}
function ZGetAmplifyADC(typeDevice, numberDSP: Longint;
         numberChannel: Longint; var amplify: Double): Longint; stdcall;
// прочитать коэф. усиления из списка возможных коэф. усиления
{$EXTERNALSYM ZGetListAmplifyADC}
function ZGetListAmplifyADC(typeDevice, numberDSP: Longint;
         next: Longint; var amplify: Double): Longint; stdcall;
// установить следующий коэф. усиления
{$EXTERNALSYM ZSetNextAmplifyADC}
function ZSetNextAmplifyADC(typeDevice, numberDSP: Longint;
         numberChannel, next: Longint; var amplify: Double): Longint; stdcall;
// установить коэф. усиления
{$EXTERNALSYM ZSetAmplifyADC}
function ZSetAmplifyADC(typeDevice, numberDSP: Longint;
         numberChannel: Longint; amplifyIn: Double;
         var amplifyOut: Double): Longint; stdcall;

// прочитать коэф. усиления ПУ8/10
{$EXTERNALSYM ZGetPreAmplifyADC}
function ZGetPreAmplifyADC(typeDevice, numberDSP: Longint;
         numberChannel: Longint; var amplify: Double): Longint; stdcall;
// прочитать коэф. усиления из списка возможных коэф. усиления ПУ8/10
{$EXTERNALSYM ZGetListPreAmplifyADC}
function ZGetListPreAmplifyADC(typeDevice, numberDSP: Longint;
         next: Longint; var amplify: Double): Longint; stdcall;
// установить следующий коэф. усиления ПУ8/10
{$EXTERNALSYM ZSetNextPreAmplifyADC}
function ZSetNextPreAmplifyADC(typeDevice, numberDSP: Longint;
         numberChannel, next: Longint; var amplify: Double): Longint; stdcall;
// установить коэф. усиления ПУ8/10
{$EXTERNALSYM ZSetPreAmplifyADC}
function ZSetPreAmplifyADC(typeDevice, numberDSP: Longint;
         numberChannel: Longint; amplifyIn: Double;
         var amplifyOut: Double): Longint; stdcall;

// проверить поддерживается и подключен ли модуль HCP
{$EXTERNALSYM ZFindHCPADC}
function ZFindHCPADC(typeDevice, numberDSP: Longint;
         var present: Longint): Longint; stdcall;
// прочитать о состоянии заданного канала модуля HCP
{$EXTERNALSYM ZGetHCPADC}
function ZGetHCPADC(typeDevice, numberDSP: Longint;
         numberChannel: Longint; var enable: Longint): Longint; stdcall;
// установить состояние заданного канала модуля HCP
{$EXTERNALSYM ZSetHCPADC}
function ZSetHCPADC(typeDevice, numberDSP: Longint;
         numberChannel, enable: Longint): Longint; stdcall;

// опрос дифференциального режима заданного канала для ввода
{$EXTERNALSYM ZGetInputDiffADC}
function ZGetInputDiffADC(typeDevice, numberDSP: Longint;
         numberChannel: Longint; var enable: Longint): Longint; stdcall;
// установить-сбросить заданный канал для ввода в дифференциальный режим
{$EXTERNALSYM ZSetInputDiffADC}
function ZSetInputDiffADC(typeDevice, numberDSP: Longint;
         numberChannel, enable: Longint): Longint; stdcall;


// ------------- Функции для работы только с ЦАП -------------
// установить внешнюю (из памяти ПК) или внутреннюю (только из памяти DSP) загрузку в ЦАП
{$EXTERNALSYM ZSetExtCycleDAC}
function ZSetExtCycleDAC(typeDevice, numberDSP: Longint;
         enable: Longint): Longint; stdcall;

// прочитать коф. затухания аттенюатора
{$EXTERNALSYM ZGetAttenDAC}
function ZGetAttenDAC(typeDevice, numberDSP: Longint;
         numberChannel: Longint; var reduction: Double): Longint; stdcall;
// установить коф. затухания аттенюатора
{$EXTERNALSYM ZSetAttenDAC}
function ZSetAttenDAC(typeDevice, numberDSP: Longint;
         numberChannel: Longint; reductionIn: Double;
         var reductionOut: Double): Longint; stdcall;

// опрос максимального размера буфера ЦАП в DSP
{$EXTERNALSYM ZGetMaxSizeBufferDSPDAC}
function ZGetMaxSizeBufferDSPDAC(typeDevice, numberDSP: Longint;
         var size: Longint): Longint; stdcall;
// опрос размера буфера ЦАП в DSP
{$EXTERNALSYM ZGetSizeBufferDSPDAC}
function ZGetSizeBufferDSPDAC(typeDevice, numberDSP: Longint;
         var size: Longint): Longint; stdcall;
// установить размер буфера ЦАП в DSP
{$EXTERNALSYM ZSetSizeBufferDSPDAC}
function ZSetSizeBufferDSPDAC(typeDevice, numberDSP: Longint;
         size: Longint): Longint; stdcall;




implementation

const
  Zadc = 'Zadc.dll';

function ZOpen;       external Zadc name 'ZOpen';
function ZClose;      external Zadc name 'ZClose';

function ZResetDSP;             external Zadc name 'ZResetDSP';
function ZInitDSP;              external Zadc name 'ZInitDSP';
function ZGetNameDevice;        external Zadc name 'ZGetNameDevice';
function ZGetSerialNumberDSP;   external Zadc name 'ZGetSerialNumberDSP';
function ZGetRevisionDSP;       external Zadc name 'ZGetRevisionDSP';
function ZGetVersion;           external Zadc name 'ZGetVersion';
function ZGetTypeConnection;    external Zadc name 'ZGetTypeConnection';
function ZGetError;             external Zadc name 'ZGetError';
function ZGetModify;            external Zadc name 'ZGetModify';
function ZGetFlag;              external Zadc name 'ZGetFlag';

function ZGetQuantityChannelDigPort;  external Zadc name 'ZGetQuantityChannelDigPort';
function ZGetDigOutEnable;            external Zadc name 'ZGetDigOutEnable';
function ZSetDigOutEnable;            external Zadc name 'ZSetDigOutEnable';
function ZGetDigInput;                external Zadc name 'ZGetDigInput';
function ZGetDigOutput;               external Zadc name 'ZGetDigOutput';
function ZSetDigOutput;               external Zadc name 'ZSetDigOutput';
function ZGetDigitalMode;             external Zadc name 'ZGetDigitalMode';
function ZSetDigitalMode;             external Zadc name 'ZSetDigitalMode';
function ZGetMasterSynchr;            external Zadc name 'ZGetMasterSynchr';
function ZSetMasterSynchr;            external Zadc name 'ZSetMasterSynchr';

function ZFindPWM;                    external Zadc name 'ZFindPWM';
function ZStartPWM;                   external Zadc name 'ZStartPWM';
function ZStopPWM;                    external Zadc name 'ZStopPWM';
function ZSetFreqPWM;                 external Zadc name 'ZSetFreqPWM';
function ZSetOnDutyPWM;               external Zadc name 'ZSetOnDutyPWM';


// ------------- Парные функции для работы с АЦП или ЦАП -------------
function ZGetEnableADC;               external Zadc name 'ZGetEnableADC';
function ZGetEnableDAC;               external Zadc name 'ZGetEnableDAC';
function ZSetTypeADC;                 external Zadc name 'ZSetTypeADC';
function ZSetTypeDAC;                 external Zadc name 'ZSetTypeDAC';
function ZGetStartADC;                external Zadc name 'ZGetStartADC';
function ZGetStartDAC;                external Zadc name 'ZGetStartDAC';
function ZStartADC;                   external Zadc name 'ZStartADC';
function ZStartDAC;                   external Zadc name 'ZStartDAC';
function ZStopADC;                    external Zadc name 'ZStopADC';
function ZStopDAC;                    external Zadc name 'ZStopDAC';

function ZGetQuantityChannelADC;      external Zadc name 'ZGetQuantityChannelADC';
function ZGetQuantityChannelDAC;      external Zadc name 'ZGetQuantityChannelDAC';
function ZGetDigitalResolutionADC;    external Zadc name 'ZGetDigitalResolutionADC';
function ZGetDigitalResolutionDAC;    external Zadc name 'ZGetDigitalResolutionDAC';
function ZGetDigitalResolChanADC;     external Zadc name 'ZGetDigitalResolChanADC';
function ZGetDigitalResolChanDAC;     external Zadc name 'ZGetDigitalResolChanDAC';
function ZGetBitsADC;                 external Zadc name 'ZGetBitsADC';
function ZGetBitsDAC;                 external Zadc name 'ZGetBitsDAC';
function ZGetWordsADC;                external Zadc name 'ZGetWordsADC';
function ZGetWordsDAC;                external Zadc name 'ZGetWordsDAC';

function ZGetFreqADC;                 external Zadc name 'ZGetFreqADC';
function ZGetFreqDAC;                 external Zadc name 'ZGetFreqDAC';
function ZGetListFreqADC;             external Zadc name 'ZGetListFreqADC';
function ZGetListFreqDAC;             external Zadc name 'ZGetListFreqDAC';
function ZSetNextFreqADC;             external Zadc name 'ZSetNextFreqADC';
function ZSetNextFreqDAC;             external Zadc name 'ZSetNextFreqDAC';
function ZSetFreqADC;                 external Zadc name 'ZSetFreqADC';
function ZSetFreqDAC;                 external Zadc name 'ZSetFreqDAC';

function ZGetExtFreqADC;              external Zadc name 'ZGetExtFreqADC';
function ZGetExtFreqDAC;              external Zadc name 'ZGetExtFreqDAC';
function ZSetExtFreqADC;              external Zadc name 'ZSetExtFreqADC';
function ZSetExtFreqDAC;              external Zadc name 'ZSetExtFreqDAC';
function ZGetEnableExtFreqADC;        external Zadc name 'ZGetEnableExtFreqADC';
function ZGetEnableExtFreqDAC;        external Zadc name 'ZGetEnableExtFreqDAC';
function ZSetEnableExtFreqADC;        external Zadc name 'ZSetEnableExtFreqADC';
function ZSetEnableExtFreqDAC;        external Zadc name 'ZSetEnableExtFreqDAC';
function ZGetEnableExtStartADC;       external Zadc name 'ZGetEnableExtStartADC';
function ZGetEnableExtStartDAC;       external Zadc name 'ZGetEnableExtStartDAC';
function ZSetEnableExtStartADC;       external Zadc name 'ZSetEnableExtStartADC';
function ZSetEnableExtStartDAC;       external Zadc name 'ZSetEnableExtStartDAC';

function ZGetInterruptADC;            external Zadc name 'ZGetInterruptADC';
function ZGetInterruptDAC;            external Zadc name 'ZGetInterruptDAC';
function ZGetMaxInterruptADC;         external Zadc name 'ZGetMaxInterruptADC';
function ZGetMaxInterruptDAC;         external Zadc name 'ZGetMaxInterruptDAC';
function ZSetInterruptADC;            external Zadc name 'ZSetInterruptADC';
function ZSetInterruptDAC;            external Zadc name 'ZSetInterruptDAC';

function ZGetSizePacketADC;           external Zadc name 'ZGetSizePacketADC';
function ZGetSizePacketDAC;           external Zadc name 'ZGetSizePacketDAC';
function ZGetMaxSizePacketADC;        external Zadc name 'ZGetMaxSizePacketADC';
function ZGetMaxSizePacketDAC;        external Zadc name 'ZGetMaxSizePacketDAC';
function ZSetSizePacketADC;           external Zadc name 'ZSetSizePacketADC';
function ZSetSizePacketDAC;           external Zadc name 'ZSetSizePacketDAC';

function ZGetQuantityPacketsADC;      external Zadc name 'ZGetQuantityPacketsADC';
function ZGetQuantityPacketsDAC;      external Zadc name 'ZGetQuantityPacketsDAC';
function ZGetMaxQuantityPacketsADC;   external Zadc name 'ZGetMaxQuantityPacketsADC';
function ZGetMaxQuantityPacketsDAC;   external Zadc name 'ZGetMaxQuantityPacketsDAC';
function ZSetQuantityPacketsADC;      external Zadc name 'ZSetQuantityPacketsADC';
function ZSetQuantityPacketsDAC;      external Zadc name 'ZSetQuantityPacketsDAC';

function ZSetCycleSampleADC;          external Zadc name 'ZSetCycleSampleADC';
function ZSetCycleSampleDAC;          external Zadc name 'ZSetCycleSampleDAC';

function ZSetBufferSizeADC;           external Zadc name 'ZSetBufferSizeADC';
function ZSetBufferSizeDAC;           external Zadc name 'ZSetBufferSizeDAC';
function ZGetBufferADC;               external Zadc name 'ZGetBufferADC';
function ZGetBufferDAC;               external Zadc name 'ZGetBufferDAC';
function ZRemBufferADC;               external Zadc name 'ZRemBufferADC';
function ZRemBufferDAC;               external Zadc name 'ZRemBufferDAC';
function ZGetPointerADC;              external Zadc name 'ZGetPointerADC';
function ZGetPointerDAC;              external Zadc name 'ZGetPointerDAC';

function ZGetNumberInputADC;          external Zadc name 'ZGetNumberInputADC';
function ZGetNumberOutputDAC;         external Zadc name 'ZGetNumberOutputDAC';
function ZGetInputADC;                external Zadc name 'ZGetInputADC';
function ZGetOutputDAC;               external Zadc name 'ZGetOutputDAC';
function ZSetInputADC;                external Zadc name 'ZSetInputADC';
function ZSetOutputDAC;               external Zadc name 'ZSetOutputDAC';


// ------------- Функции для работы только с АЦП -------------
function ZGetModaADC;                 external Zadc name 'ZGetModaADC';
function ZSetModaADC;                 external Zadc name 'ZSetModaADC';

function ZGetAmplifyADC;              external Zadc name 'ZGetAmplifyADC';
function ZGetListAmplifyADC;          external Zadc name 'ZGetListAmplifyADC';
function ZSetNextAmplifyADC;          external Zadc name 'ZSetNextAmplifyADC';
function ZSetAmplifyADC;              external Zadc name 'ZSetAmplifyADC';

function ZGetPreAmplifyADC;           external Zadc name 'ZGetPreAmplifyADC';
function ZGetListPreAmplifyADC;       external Zadc name 'ZGetListPreAmplifyADC';
function ZSetNextPreAmplifyADC;       external Zadc name 'ZSetNextPreAmplifyADC';
function ZSetPreAmplifyADC;           external Zadc name 'ZSetPreAmplifyADC';

function ZFindHCPADC;                 external Zadc name 'ZFindHCPADC';
function ZGetHCPADC;                  external Zadc name 'ZGetHCPADC';
function ZSetHCPADC;                  external Zadc name 'ZSetHCPADC';

function ZGetInputDiffADC;            external Zadc name 'ZGetInputDiffADC';
function ZSetInputDiffADC;            external Zadc name 'ZSetInputDiffADC';


// ------------- Функции для работы только с ЦАП -------------
function ZSetExtCycleDAC;             external Zadc name 'ZSetExtCycleDAC';

function ZGetAttenDAC;                external Zadc name 'ZGetAttenDAC';
function ZSetAttenDAC;                external Zadc name 'ZSetAttenDAC';

function ZGetMaxSizeBufferDSPDAC;     external Zadc name 'ZGetMaxSizeBufferDSPDAC';
function ZGetSizeBufferDSPDAC;        external Zadc name 'ZGetSizeBufferDSPDAC';
function ZSetSizeBufferDSPDAC;        external Zadc name 'ZSetSizeBufferDSPDAC';


end.


