Меню сайта

Главная страница

Блоки КАМАК

Платы ISA

Платы PCI

Встраиваемые платы

Документация и ПО

Ссылки

Страница создателя сайта

 
 
 

   Платы PCI

Программное обеспечение

Библиотека написана на VC++6.0, хотя совместима с другими версиями VC++, а также Builder C++.

LOAD !!!

Интерфейс

Исходники

Использование
 
 

Библиотека для ИПС-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