Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лаб3_ММССД.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
1 Мб
Скачать
☆

7.2 Руководство программиста программного модуля hostdaq

Разработка программного обеспечения (ПО) для ПЭВМ проводится с использованием управляющей библиотеки Brd60 (Bardy). Формирование и компиляция исходного кода разработанного приложения с помощью любого доступного компилятора для Win32 или DOS (Например Borland C#/С++ for DOS, Microsoft Visual Studio C++).

Для взаимодействия с управляющей программой DSP платы ADP60PCI программа ПЭВМ использует функции библиотеки Brd60, которая входит в состав Deasy Tools (DT60PCI). Данная библиотека реализует API взаимодействия с драйвером нижнего уровня базового модуля ADP60PCI (PCI host-PC) на стороне ПЭВМ. PCI host-PC предварительно устанавливается на ПЭВМ. Состав API PCI host-PC модуля описан в [5] и в заголовочном файле библиотеки Brd60 – brd.h.

Заголовочный файл библиотеки brd.h и объектный модуль (Brd60.dll) должны быть включены в процесс компоновки приложения.

Загрузку исполняемого кода библиотеки Brd60.dll в адресное пространство приложения ПЭВМ рекомендуется выполнять неявно. Для выполнения неявной загрузки необходимо в составе компонуемых файлов для линкера Visual Studio указать lib-файл библиотеки Brd60.lib (вкладка “Link” диалогового окна “Project Settings”), указать расположение этих файлов в структуре каталогов диска ПЭВМ.

Пример программы для ЭВМ, работающей с платой ADP60PCI, изображен во Вставке 7.2.

#include «Brd.h» //заголовочный файл, содержащий определения функций BRD

#include «ConfigADC.c» //функция настройки АЦП

#include «hostdaq.h» // заголовочный файл, содержащий используемые константы

//и макроопределения

int main(int Argc, char *Argv[])

{

BRD_Board brd; //дескриптор платы

long* p = NULL;

long* ptr = NULL;

long* pl = NULL;

/*Board Driver Inicialization*/

printf(“Board initialization\n”); //Блок, реализующий инициализацию платы,

if(BRD_init(NULL)<=0 ) //возвращает 0 или 1

{

fprintf(stderr, “Board initialization error”);

return 0;

}

/*Opening the DSP Board*/

printf(«Opening the DSP Board\n»); //Блок, реализующий открытие платы,

brd = BRD_open(0, 0); //Возвращает 0 или 1

if(brd == NULL)

{

fprintf(stderr,”Can’t open the DSP board”);

BRD_close(brd);

return 0;

}

/*Loading the Board*/

printf(“Loading the DSP Board\n”);

//Блок, реализующий загрузку программы

if(BRD_load(brd, 0, BrdProgramFileName, 0, NULL) == FALSE) { //Возвращает 0 или 1

fprintf(stderr,”Can’t load the DSP board”);

printf(“Can’t find file %s1\n”, BrdProgramFileName);

BRD_close(brd);

return 0;

}

/*Starting the DSP Board program*/

//Блок, реализующий старт программы

printf(“Start the DSP board program\n”);

if(BRD_start(brd, Timeout) == FALSE) //Возвращает 0 или 1

{

fprintf(stderr,”Can’t start the DSP board program”);

BRD_close(brd);

return 0;

}

//Блок, реализующий чтение и передачу

//параметров инициализации АЦП

if(!ConfigADC(“adc.ini”, brd)) { fprintf(stderr,”Can’t initialize board”); //Возвращает 0 или 1

BRD_close(brd);

fcloseall();

return 0;

}

/* Здесь размещается блок выделения памяти для буферов данных, взаимодействия ЭВМ с платой АЦП

ADP60PCI, сбора данныхс АЦП ADP60PCI, обмена сигналами */

BRD_close(brd); //Закрытие платы

return 1;

}

Вставка 7.2 Общий вид программы для ЭВМ (hostdaq)

. Описание используемых функций для СПО ЭВМ библиотеки Bardy находится в Приложении А.

После запуска на начальном этапе программа hostdaq проводит инициализацию платы ADP60PCI, передает на DSP процессор программный модуль dspdaq. Далее программа подает сигнал на старт выполнения программного модуля на DSP процессоре и затем производит запуск модуля настройки АЦП на стороне ЭВМ. После успешного завершения настройки программа выделяет память для буферов данных и посылает сигнал на сбор данных. После сбора необходимого количества данных программа останавливает сбор данных и закрывает плату, сохранив данные в файле data.dat в рабочем каталоге программы.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]