Attribute VB_Name = "Zadc_intModule"
Option Explicit

' Поддерживаемые типы устройств
Global Const KD1610 = 0		' ADC 16/200
Global Const KD216 = 1		' APC 216
Global Const KD500 = 2		' ADC 16/500
Global Const KD500P = 3		' ADC 16/500P
Global Const KD816 = 4		' ADC 816
Global Const KD1002 = 5		' ADC 1002
Global Const KDU216 = 6		' APC 216 USB
Global Const KD24 = 7		' ADC 24
Global Const KD1432 = 8		' ADC 1432
Global Const KDUACPB = 9	' ACPB USB
Global Const KDU1616 = 10	' ADC 1616 USB
Global Const KDUPD14 = 11	' PD14 USB
Global Const KDUVN = 12
Global Const KDUOSC = 13


' Функция ожидания
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
' Функция чтения памяти
Public Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" _
 (lpDest As Any, lpSrc As Any, ByVal Length As Long)


'Все функции возвращают код ошибки. 0 - нет ошибки, иначе - код ошибки


' ------------- Общие функции -------------
' подключиться к драйверу
Public Declare Function ZOpen Lib "Zadc.dll" _
(ByVal typeDevice As Long, ByVal numberDSP As Long) As Long
' отключиться от драйвера
Public Declare Function ZClose Lib "Zadc.dll" _
(ByVal typeDevice As Long, ByVal numberDSP As Long) As Long

' сброс и останов сигнальных процессоров (влияет на все DSP одного устройства)
Public Declare Function ZResetDSP Lib "Zadc.dll" _
(ByVal typeDevice As Long, ByVal numberDSP As Long) As Long
' проинициализировать сигнальный процессор
Public Declare Function ZInitDSP Lib "Zadc.dll" _
(ByVal typeDevice As Long, ByVal numberDSP As Long, ByVal filename As String) As Long
' получить версии ПО
Public Declare Function ZGetVersion Lib "Zadc.dll" _
(ByVal typeDevice As Long, ByVal numberDSP As Long, ByVal verDSP As String, ByVal verDRV As String, ByVal verLIB As String) As Long
' прочитать код ошибки
Public Declare Function ZGetError Lib "Zadc.dll" _
(ByVal typeDevice As Long, ByVal numberDSP As Long, ByRef error As Long) As Long
' определить кол-во изменений параметров с момента загрузки
Public Declare Function ZGetModify Lib "Zadc.dll" _
(ByVal typeDevice As Long, ByVal numberDSP As Long, ByRef modify As Long) As Long

' прочитать флаг - количество прерываний с момента ZStartADC()
Public Declare Function ZGetFlag Lib "Zadc.dll" _
(ByVal typeDevice As Long, ByVal numberDSP As Long, ByRef Flag As Long) As Long

' прочитать статус синхронизации по внешней частоте
Public Declare Function ZGetEnableExtFreq Lib "Zadc.dll" _
(ByVal typeDevice As Long, ByVal numberDSP As Long, ByRef enable As Long) As Long
' вкл./выкл. синхронизации по внешней частоте
Public Declare Function ZSetEnableExtFreq Lib "Zadc.dll" _
(ByVal typeDevice As Long, ByVal numberDSP As Long, ByVal enable As Long) As Long
' прочитать статус внешнего запуска
Public Declare Function ZGetEnableExtStart Lib "Zadc.dll" _
(ByVal typeDevice As Long, ByVal numberDSP As Long, ByRef enable As Long) As Long
' вкл./выкл. внешнего запуска
Public Declare Function ZSetEnableExtStart Lib "Zadc.dll" _
(ByVal typeDevice As Long, ByVal numberDSP As Long, ByVal enable As Long) As Long

' Запросить маску выходов порта
Public Declare Function ZGetDigOutEnable Lib "Zadc.dll" _
(ByVal typeDevice As Long, ByVal numberDSP As Long, ByRef digitalOutEnableMask As Long) As Long
' Установить маску выходов порта
Public Declare Function ZSetDigOutEnable Lib "Zadc.dll" _
(ByVal typeDevice As Long, ByVal numberDSP As Long, ByVal digitalOutEnableMask As Long) As Long
' Прочитать данные со входов порта
Public Declare Function ZGetDigInput Lib "Zadc.dll" _
(ByVal typeDevice As Long, ByVal numberDSP As Long, ByRef digitalInput As Long) As Long
' Прочитать данные, выдаваемые на выходы порта
Public Declare Function ZGetDigOutput Lib "Zadc.dll" _
(ByVal typeDevice As Long, ByVal numberDSP As Long, ByRef digitalOutput As Long) As Long
' Записать данные в порт
Public Declare Function ZSetDigOutput Lib "Zadc.dll" _
(ByVal typeDevice As Long, ByVal numberDSP As Long, ByVal digitalOutput As Long) As Long


' ------------- Парные функции для работы с АЦП или ЦАП -------------
' поддержка АЦП в текущем режиме DSP
Public Declare Function ZGetEnableADC Lib "Zadc.dll" _
(ByVal typeDevice As Long, ByVal numberDSP As Long, ByRef enable As Long) As Long
' поддержка ЦАП в текущем режиме DSP
Public Declare Function ZGetEnableDAC Lib "Zadc.dll" _
(ByVal typeDevice As Long, ByVal numberDSP As Long, ByRef enable As Long) As Long
' установить сигнальный процессор в режим АЦП/ЦАП
Public Declare Function ZSetTypeADC Lib "Zadc.dll" _
(ByVal typeDevice As Long, ByVal numberDSP As Long) As Long
Public Declare Function ZSetTypeDAC Lib "Zadc.dll" _
(ByVal typeDevice As Long, ByVal numberDSP As Long) As Long
' чтение в каком состоянии находится АЦП/ЦАП
Public Declare Function ZGetStartADC Lib "Zadc.dll" _
(ByVal typeDevice As Long, ByVal numberDSP As Long, ByRef status As Long) As Long
Public Declare Function ZGetStartDAC Lib "Zadc.dll" _
(ByVal typeDevice As Long, ByVal numberDSP As Long, ByRef status As Long) As Long
' запуск процедуры ввода/вывода сигнала
Public Declare Function ZStartADC Lib "Zadc.dll" _
(ByVal typeDevice As Long, ByVal numberDSP As Long) As Long
Public Declare Function ZStartDAC Lib "Zadc.dll" _
(ByVal typeDevice As Long, ByVal numberDSP As Long) As Long
' останов процедуры ввода/вывода
Public Declare Function ZStopADC Lib "Zadc.dll" _
(ByVal typeDevice As Long, ByVal numberDSP As Long) As Long
Public Declare Function ZStopDAC Lib "Zadc.dll" _
(ByVal typeDevice As Long, ByVal numberDSP As Long) As Long

' кол-во каналов АЦП/ЦАП
Public Declare Function ZGetQuantityChannelADC Lib "Zadc.dll" _
(ByVal typeDevice As Long, ByVal numberDSP As Long, ByRef quantityChannel As Long) As Long
Public Declare Function ZGetQuantityChannelDAC Lib "Zadc.dll" _
(ByVal typeDevice As Long, ByVal numberDSP As Long, ByRef quantityChannel As Long) As Long
' прочитать вес младшего разряда АЦП/ЦАП
Public Declare Function ZGetDigitalResolutionADC Lib "Zadc.dll" _
(ByVal typeDevice As Long, ByVal numberDSP As Long, ByRef digitalResolution As Double) As Long
Public Declare Function ZGetDigitalResolutionDAC Lib "Zadc.dll" _
(ByVal typeDevice As Long, ByVal numberDSP As Long, ByRef digitalResolution As Double) As Long
' прочитать кол-во бит в одном отсчете АЦП/ЦАП
Public Declare Function ZGetBitsADC Lib "Zadc.dll" _
(ByVal typeDevice As Long, ByVal numberDSP As Long, ByRef numberBits As Long) As Long
Public Declare Function ZGetBitsDAC Lib "Zadc.dll" _
(ByVal typeDevice As Long, ByVal numberDSP As Long, ByRef numberBits As Long) As Long
' прочитать кол-во слов в одном отсчете АЦП/ЦАП
Public Declare Function ZGetWordsADC Lib "Zadc.dll" _
(ByVal typeDevice As Long, ByVal numberDSP As Long, ByRef numberWords As Long) As Long
Public Declare Function ZGetWordsDAC Lib "Zadc.dll" _
(ByVal typeDevice As Long, ByVal numberDSP As Long, ByRef numberWords As Long) As Long

' прочитать частоту дискретизации
Public Declare Function ZGetFreqADC Lib "Zadc.dll" _
(ByVal typeDevice As Long, ByVal numberDSP As Long, ByRef freq As Double) As Long
Public Declare Function ZGetFreqDAC Lib "Zadc.dll" _
(ByVal typeDevice As Long, ByVal numberDSP As Long, ByRef freq As Double) As Long
' прочитать частоту из списка возможных частот дискретизации
Public Declare Function ZGetListFreqADC Lib "Zadc.dll" _
(ByVal typeDevice As Long, ByVal numberDSP As Long, ByVal nextFreq As Long, ByRef freq As Double) As Long
Public Declare Function ZGetListFreqDAC Lib "Zadc.dll" _
(ByVal typeDevice As Long, ByVal numberDSP As Long, ByVal nextFreq As Long, ByRef freq As Double) As Long
' установить следующую из списка частоту дискретизации
Public Declare Function ZSetNextFreqADC Lib "Zadc.dll" _
(ByVal typeDevice As Long, ByVal numberDSP As Long, ByVal nextFreq As Long, ByRef freq As Double) As Long
Public Declare Function ZSetNextFreqDAC Lib "Zadc.dll" _
(ByVal typeDevice As Long, ByVal numberDSP As Long, ByVal nextFreq As Long, ByRef freq As Double) As Long
' установить частоту дискретизации
Public Declare Function ZSetFreqADC Lib "Zadc.dll" _
(ByVal typeDevice As Long, ByVal numberDSP As Long, ByVal FreqIn As Double, ByRef FreqOut As Double) As Long
Public Declare Function ZSetFreqDAC Lib "Zadc.dll" _
(ByVal typeDevice As Long, ByVal numberDSP As Long, ByVal FreqIn As Double, ByRef FreqOut As Double) As Long

' прочитать значение текущей опорной частоты
Public Declare Function ZGetExtFreqADC Lib "Zadc.dll" _
(ByVal typeDevice As Long, ByVal numberDSP As Long, ByRef OporFreq As Double) As Long
Public Declare Function ZGetExtFreqDAC Lib "Zadc.dll" _
(ByVal typeDevice As Long, ByVal numberDSP As Long, ByRef OporFreq As Double) As Long
' установить значение внешней опорной частоты
Public Declare Function ZSetExtFreqADC Lib "Zadc.dll" _
(ByVal typeDevice As Long, ByVal numberDSP As Long, ByVal extFreq As Double) As Long
Public Declare Function ZSetExtFreqDAC Lib "Zadc.dll" _
(ByVal typeDevice As Long, ByVal numberDSP As Long, ByVal extFreq As Double) As Long

' определить установленный размер буфера при прерывании
Public Declare Function ZGetInterruptADC Lib "Zadc.dll" _
(ByVal typeDevice As Long, ByVal numberDSP As Long, ByRef size As Long) As Long
Public Declare Function ZGetInterruptDAC Lib "Zadc.dll" _
(ByVal typeDevice As Long, ByVal numberDSP As Long, ByRef size As Long) As Long
' определить макс. возможный размер буфера при прерывании
Public Declare Function ZGetMaxInterruptADC Lib "Zadc.dll" _
(ByVal typeDevice As Long, ByVal numberDSP As Long, ByRef size As Long) As Long
Public Declare Function ZGetMaxInterruptDAC Lib "Zadc.dll" _
(ByVal typeDevice As Long, ByVal numberDSP As Long, ByRef size As Long) As Long
' установить размер буфера для перекачки при прерывании
Public Declare Function ZSetInterruptADC Lib "Zadc.dll" _
(ByVal typeDevice As Long, ByVal numberDSP As Long, ByVal size As Long) As Long
Public Declare Function ZSetInterruptDAC Lib "Zadc.dll" _
(ByVal typeDevice As Long, ByVal numberDSP As Long, ByVal size As Long) As Long

' установить однократное или циклическое накопление в буфер ОЗУ ПК
Public Declare Function ZSetCycleSampleADC Lib "Zadc.dll" _
(ByVal typeDevice As Long, ByVal numberDSP As Long, ByVal enable As Long) As Long
Public Declare Function ZSetCycleSampleDAC Lib "Zadc.dll" _
(ByVal typeDevice As Long, ByVal numberDSP As Long, ByVal enable As Long) As Long

' задать размер буфера АЦП в ОЗУ ПК
Public Declare Function ZSetBufferSizeADC Lib "Zadc.dll" _
(ByVal typeDevice As Long, ByVal numberDSP As Long, ByVal size As Long) As Long
Public Declare Function ZSetBufferSizeDAC Lib "Zadc.dll" _
(ByVal typeDevice As Long, ByVal numberDSP As Long, ByVal size As Long) As Long
' запросить буфер в ОЗУ ПК
Public Declare Function ZGetBufferADC Lib "Zadc.dll" _
(ByVal typeDevice As Long, ByVal numberDSP As Long, buffer As Any, ByRef size As Long) As Long
Public Declare Function ZGetBufferDAC Lib "Zadc.dll" _
(ByVal typeDevice As Long, ByVal numberDSP As Long, buffer As Any, ByRef size As Long) As Long
' освободить буфер в ОЗУ ПК
Public Declare Function ZRemBufferADC Lib "Zadc.dll" _
(ByVal typeDevice As Long, ByVal numberDSP As Long, buffer As Any) As Long
Public Declare Function ZRemBufferDAC Lib "Zadc.dll" _
(ByVal typeDevice As Long, ByVal numberDSP As Long, buffer As Any) As Long
' чтение указателя буфера в ОЗУ ПК
Public Declare Function ZGetPointerADC Lib "Zadc.dll" _
(ByVal typeDevice As Long, ByVal numberDSP As Long, ByRef pointer As Long) As Long
Public Declare Function ZGetPointerDAC Lib "Zadc.dll" _
(ByVal typeDevice As Long, ByVal numberDSP As Long, ByRef pointer As Long) As Long

' опрос количества включенных каналов
Public Declare Function ZGetNumberInputADC Lib "Zadc.dll" _
(ByVal typeDevice As Long, ByVal numberDSP As Long, ByRef workChannel As Long) As Long
Public Declare Function ZGetNumberOutputDAC Lib "Zadc.dll" _
(ByVal typeDevice As Long, ByVal numberDSP As Long, ByRef workChannel As Long) As Long
' опрос включен ли заданный канал
Public Declare Function ZGetInputADC Lib "Zadc.dll" _
(ByVal typeDevice As Long, ByVal numberDSP As Long, ByVal numberChannel As Long, ByRef enable As Long) As Long
Public Declare Function ZGetOutputDAC Lib "Zadc.dll" _
(ByVal typeDevice As Long, ByVal numberDSP As Long, ByVal numberChannel As Long, ByRef enable As Long) As Long
' включить/выключить заданный канал
Public Declare Function ZSetInputADC Lib "Zadc.dll" _
(ByVal typeDevice As Long, ByVal numberDSP As Long, ByVal numberChannel As Long, ByVal enable As Long) As Long
Public Declare Function ZSetOutputDAC Lib "Zadc.dll" _
(ByVal typeDevice As Long, ByVal numberDSP As Long, ByVal numberChannel As Long, ByVal enable As Long) As Long

' ------------- Функции для работы только с АЦП -------------
' получить оставшиеся данные АЦП
Public Declare Function ZGetLastDataADC Lib "Zadc.dll" _
(ByVal typeDevice As Long, ByVal numberDSP As Long, ByVal numberChannel As Long, ByRef buffer As Any, ByVal size As Long) As Long

' прочитать коэф. усиления
Public Declare Function ZGetAmplifyADC Lib "Zadc.dll" _
(ByVal typeDevice As Long, ByVal numberDSP As Long, ByVal numberChannel As Long, ByRef amplify As Double) As Long
' прочитать коэф. усиления из списка возможных коэф. усиления
Public Declare Function ZGetListAmplifyADC Lib "Zadc.dll" _
(ByVal typeDevice As Long, ByVal numberDSP As Long, ByVal nextAmpl As Long, ByRef amplify As Double) As Long
' установить следующий коэф. усиления
Public Declare Function ZSetNextAmplifyADC Lib "Zadc.dll" _
(ByVal typeDevice As Long, ByVal numberDSP As Long, ByVal numberChannel As Long, ByVal nextAmpl As Long, ByRef amplify As Double) As Long
' установить коэф. усиления
Public Declare Function ZSetAmplifyADC Lib "Zadc.dll" _
(ByVal typeDevice As Long, ByVal numberDSP As Long, ByVal numberChannel As Long, ByVal amplifyIn As Double, ByRef amplifyOut As Double) As Long

' прочитать коэф. усиления ПУ8/10
Public Declare Function ZGetPreAmplifyADC Lib "Zadc.dll" _
(ByVal typeDevice As Long, ByVal numberDSP As Long, ByVal numberChannel As Long, ByRef amplify As Double) As Long
' прочитать коэф. усиления из списка возможных коэф. усиления ПУ8/10
Public Declare Function ZGetListPreAmplifyADC Lib "Zadc.dll" _
(ByVal typeDevice As Long, ByVal numberDSP As Long, ByVal nextPreAmpl As Long, ByRef amplify As Double) As Long
' установить следующий коэф. усиления ПУ8/10
Public Declare Function ZSetNextPreAmplifyADC Lib "Zadc.dll" _
(ByVal typeDevice As Long, ByVal numberDSP As Long, ByVal numberChannel As Long, ByVal nextAmpl As Long, ByRef amplify As Double) As Long
' установить коэф. усиления ПУ8/10
Public Declare Function ZSetPreAmplifyADC Lib "Zadc.dll" _
(ByVal typeDevice As Long, ByVal numberDSP As Long, ByVal numberChannel As Long, ByVal amplifyIn As Double, ByRef amplifyOut As Double) As Long

' проверить поддерживается и подключен ли модуль HCP
Public Declare Function ZFindHCPADC Lib "Zadc.dll" _
(ByVal typeDevice As Long, ByVal numberDSP As Long, ByRef present As Long) As Long
' прочитать о состоянии заданного канала модуля HCP
Public Declare Function ZGetHCPADC Lib "Zadc.dll" _
(ByVal typeDevice As Long, ByVal numberDSP As Long, ByVal numberChannel As Long, ByRef enable As Long) As Long
' установить состояние заданного канала модуля HCP
Public Declare Function ZSetHCPADC Lib "Zadc.dll" _
(ByVal typeDevice As Long, ByVal numberDSP As Long, ByVal numberChannel As Long, ByVal enable As Long) As Long

' опрос дифференциального режима заданного канала для ввода
Public Declare Function ZGetInputDiffADC Lib "Zadc.dll" _
(ByVal typeDevice As Long, ByVal numberDSP As Long, ByVal numberChannel As Long, ByRef enable As Long) As Long
' установить-сбросить заданный канал для ввода в дифференциальный режим
Public Declare Function ZSetInputDiffADC Lib "Zadc.dll" _
(ByVal typeDevice As Long, ByVal numberDSP As Long, ByVal numberChannel As Long, ByVal enable As Long) As Long

' ------------- Функции для работы только с ЦАП -------------
' установить внешнюю (из памяти ПК) или внутреннюю (только из памяти DSP) загрузку в ЦАП
Public Declare Function ZSetExtCycleDAC Lib "Zadc.dll" _
(ByVal typeDevice As Long, ByVal numberDSP As Long, ByVal enable As Long) As Long

' прочитать коф. затухания аттенюатора
Public Declare Function ZGetAttenDAC Lib "Zadc.dll" _
(ByVal typeDevice As Long, ByVal numberDSP As Long, ByVal numberChannel As Long, ByRef reduction As Double) As Long
' установить коф. затухания аттенюатора
Public Declare Function ZSetAttenDAC Lib "Zadc.dll" _
(ByVal typeDevice As Long, ByVal numberDSP As Long, ByVal numberChannel As Long, ByVal reductionIn As Double, ByRef reductionOut As Double) As Long
