Библиотека написана на VC++6.0, хотя совместима с
другими версиями VC++, а также Builder C++.
Интерфейс
Исходники
Использование
Библиотека для ИПС-6 версия
1.10
+ Обработка прерываний
+ Максимальная скорость работы по одному каналу
- Односредовая версия библиотеки, то есть вся ответственность
по синхронизации доступа к ресурсам карточки из одного приложения
ложится на плечи пользователя.Доступ из разных приложений
одновременно к одной карточке - просто невозможен.
- отсутствует проверка параметров в функциях
Библиотека для ИПС-6 версия
1.20
+ Обработка прерываний
+ повышанная устойчивость за счет проверки параметров
- Односредовая версия библиотеки, то есть вся ответственность
по синхронизации доступа к ресурсам карточки из одного приложения
ложится на плечи пользователя.Доступ из разных приложений
одновременно - просто невозможен.
Описание функций библиотеки:
typedef int
crate; - идентификатор
крейта(id)
crate OpenCrate(unsigned
int CardN,
unsigned int CrateN);
-----------------------------------------------------------------------------
Параметры:
CardN - порядковый номер карточки,
считая не от проц ессора.
CrateN - номер канала(крейта), отсчитывая от основания
разъема.
Возвращаемое значение:
crate - идентификатор канала в слувае удачи.
"-1" - при ошибке.
Замечания: функция OpenCrate открывает необходимый канал.
Идентификатор канала используется во всех
остальных операциях с КАМАК'ом.
int CloseCrate(crate
CN);
-----------------------------------------------------------------------------
Параметры:
crate - идентификатор
канала.
Возвращаемое значение:
"0" - ок, "-1" - ошибка.
Замечания: закрывает канал, в дальнейшем использование
идентификатора не допустимо.
WORD cam16write(crate CN, int N,
int A, WORD *data);
WORD cam24write(crate CN, int
N, int A, DWORD *data);
WORD cam16read(crate CN, int N,
int A, WORD *data);
WORD cam24read(crate CN, int N,
int A, DWORD *data);
-----------------------------------------------------------------------------
Параметры:
crate - идентификатор
канала
N - номер позиции в крейте
A - субадрес
data - указатель
на данные.
Возвращаемое значение:
статусный регистр ИПС-6(на каждый канал),
младших 2 байта:
-----------------------------------------
| | | | | | | | |X|Q|Er|To|AX|AQ|AEr|ATo|
-----------------------------------------
To - Time Out
Er - Error(ошибка контрольной суммы)
A - накопленные ошибки.
Замечания: функции производят соответственно по порядку
1.запись 16 битов
2.запись 24 битов
3.чтение 16 битов
4.чтение 24 битов
При записи/чтении данные счтитываются/записываются по указателю
data. Функции cam16write,cam16read,cam24write,cam24read
не производят запись номера фукнции в крейт контроллер,
т.е. если вы их используете, то позоботьтесь о том чтобы
в регистре статуса крейт контроллера был записан номер функции.
Эти функции сделаны для быстрой работы с КАМАКом. Если вы
не хотите заботиться об этом, используйте функции cam16
или cam24, которые каждый раз прописывают номер функции.
WORD cam16(crate CN, int N, int A, int F, WORD *data);
WORD cam24(crate CN, int N, int A, int F, DWORD *data);
-----------------------------------------------------------------------------
Параметры:
crate - идентификатор канала
N - номер позиции в крейте
A - субадрес
F - функция
data - указатель на данные.
Возвращаемое значение:
статусный регистр ИПС-6(на каждый канал),
младших 2 байта:
-----------------------------------------
| | | | | | | | |X|Q|Er|To|AX|AQ|AEr|ATo|
-----------------------------------------
To - Time Out
Er - Error(ошибка контрольной суммы)
A - накопленные ошибки.
Замечания: выполняется запись функции в статусный регистр
контроллера и запуск КАМАК-цикла.
При записи/чтении данные счтитываются/записываются
по указателю data.
WORD cam16Block(crate CN, int N, int A, int F,unsigned
long NWORD, WORD *data);
WORD cam24Block(crate CN, int N, int A, int F, unsigned
int NDWORD, DWORD *data);
-----------------------------------------------------------------------------
Параметры:
crate - идентификатор канала
N - номер позиции в крейте
A - субадрес
F - функция
NWORD(NDWORD) - число слов в массиве
data - указатель на массив из NWORD(NDWORD) слов.
Возвращаемое значение:
статусный регистр ИПС-6(на каждый канал),
младших 2 байта:
-----------------------------------------
| | | | | | | | |X|Q|Er|To|AX|AQ|AEr|ATo|
-----------------------------------------
To - Time Out
Er - Error(ошибка контрольной суммы)
A - накопленные ошибки.
Замечания: выполняется запись функции в статусный регистр
контроллера и запуск КАМАК-цикла NWORD(NDWORD) раз.
При записи/чтении данные счтитываются/записываются
по указателю data с инкрементом.
WORD camZ(crate CN);
WORD camC(crate CN);
-----------------------------------------------------------------------------
Параметры:
crate - идентификатор канала
Возвращаемое значение:
статусный регистр ИПС-6(на каждый канал),
младших 2 байта:
-----------------------------------------
| | | | | | | | |X|Q|Er|To|AX|AQ|AEr|ATo|
-----------------------------------------
To - Time Out
Er - Error(ошибка контрольной суммы)
A - накопленные ошибки.
Замечания: выполняется запись бита С или Z в статусный
регистр
контроллера и запуск КАМАК-цикла.
При записи/чтении данные счтитываются/записываются
по указателю data с инкрементом.
int ClearStatus(crate
CN);
-----------------------------------------------------------------------------
Параметры:
crate - идентификатор
канала
Возвращаемое значение:
статусный регистр ИПС-6(на каждый канал),
младших 2 байта:
-----------------------------------------
| | | | | | | | |X|Q|Er|To|AX|AQ|AEr|ATo|
-----------------------------------------
To - Time Out
Er - Error(ошибка контрольной суммы)
A - накопленные ошибки.
Замечания: стирает накопленный статус
int GetChannels(unsigned int CardN);
-----------------------------------------------------------------------------
Параметры:
CardN - Номер карточки
Возвращаемое значение:
количество запаянных каналов
Замечания:
возвращает количество каналов
typedef void (*INTLAMFUNC)(crate CN, PVOID param); // определение
функции обработчика
int SetIntOnLAMfunc(crate CN, INTLAMFUNC _intf);
-----------------------------------------------------------------------------
Параметры:
crate CN - идентификатор канала
Возвращаемое значение:
"0" - ок, "-1" - ошибка.
Замечания:
Устанавливает функцию обработки прерываний.
При срабатывании прерывания происходит автоматическая
маскировка(запрещение) прерывания.
int LAMIntEnable(crate CN, PVOID param);
-----------------------------------------------------------------------------
Параметры:
crate CN - идентификатор канала
PVOID param - параметр, который передается в
функцию обработчик.
Возвращаемое значение:
"0" - ок, "-1" - ошибка.
Замечания:
Включает прерывания для соответствующего канала.
int LAMIntDisable(crate CN);
-----------------------------------------------------------------------------
Параметры:
crate CN - идентификатор канала
Возвращаемое значение:
"0" - ок, "-1" - ошибка.
Замечания:
Выключает прерывания для соответствующего канала.
int LAMIntIsEnabled(crate
CN);
-----------------------------------------------------------------------------
Параметры:
crate CN - идентификатор
канала
Возвращаемое значение:
"0" - прерывание выключено, "1" - включено.
Замечания:
Проверка прерывания.
void GetErrStr(char * str);
-----------------------------------------------------------------------------
Параметры:
char * str - указтель на строку из 1024 байт.
Замечания:
Копирует сообщение последней ошибки по str.На допустимость
не проверяется
-----------------------------------------------------------------------------
Исходные тексты:
В директории sources в каждой из библиотек приведены исходные
тексты библиотек, а также готовый проект на MS Visual C++
6.0. Если вы хотите использовать библиотеку с проектами
в других средах программирования, то :
1. Создайте проект в вашей среде программирования для статической
библиотеки
2. Добавьте туда файлы из директории \slilib_vx.xx\source\
3. Откомпилируйте проект.
4. Теперь вы можете использовать библиотеку созданную вами.
Использование библиотеки:
Для того чтобы использовать функции библиотеки надо:
1. Скопировать файлы sli6_ext.h и opsli.lib в директорию
проекта
2. В исходные тексты добавить строчку #include "sli6_ext.h"
3. Откомпилировать свою программу, подключив к списку библиотек
opsli.lib, или то имя под каким вы создали библиотеку.
Для программирования в среде LabWindowsCVI 6.0 может использоваться
dll.zip
|