Обучающая программа — Создание прикладной программы в LabWindows/CVI, страница 4

Основная функция.

Основная функция очень проста и представляет первый шаг который вам понадобится для построения собственного приложения. Основная функция показывается в следующей иллюстрации:

int main (int argc, char *argv[])

{

if (InitCVIRTE (0, argv, 0) == 0)

return –1; /* out of memory */

if ((panelHandle = LoadPanel (0, "sample4.uir", PANEL)) < 0)

return –1;

DisplayPanel (panelHandle);

RunUserInterface ();

return 0;

}

Прежде, чем вы сможете отобразить или обслуживать интерфейс с пользователем, эксплуатировать интерфейс пользователя, который вы создали в последнем сеансе, вы должны сначала загрузить панели из файла .uir на вашем жестком диске в память.

• функция LoadPanel выполняет эту операцию в основной функции.

• функция DisplayPanel отображает панель на экране.

• функция RunUserInterface активизирует LabWindows/CVI, чтобы начать посылать события от интерфейса пользователя в разрабатываемой программе C.

Функция AcquireData

Функция AcquireData автоматически выполняется всякий раз, когда Вы нажимаете на кнопку Acquire из интерфейса пользователя. Пока функция AcquireData просто генерирует массив произвольных данных. Теперь вы добавите к этой функции, так что вы можете вычерчивать график массив на управлении графа, который вы создали на интерфейсе пользователя. Функция AcquireData показывается в следующем коде:

int CVICALLBACK AcquireData (int panel, int control, int event,

void *callbackData, int eventData1, int eventData2)

{

switch (event) {

case EVENT_COMMIT:

break;

case EVENT_RIGHT_CLICK:

break;

}

return 0;

}

ФункцияShutdown (выключения).

Функция Shutdown автоматически выполняется всякий раз, когда Вы нажимаете на кнопку Quit из интерфейса пользователя. Эта функция отключает интерфейс пользователя из посылки информации случае возвращающей функции, и выполненяет остановов программы. Функция Shutdown показывается в следующем коде.

int CVICALLBACK Shutdown (int panel, int control, int event,

void *callbackData, int eventData1, int eventData2)

{

switch (event) {

case EVENT_COMMIT:

QuitUserInterface (0);

break;

case EVENT_RIGHT_CLICK:

break;

}

return 0;

}

Генерация произвольного массива данных.

Ваша задача состоит в том, чтобы завершить исходный текст для sample4.c так, чтобы программа генерировала массив случайных чисел и вычерчивать массив на управлении графа. Большинство действий произойдет в функции AcquireData. Когда пользователь нажимает на кнопку Acquire, программа генерирует произвольный массив внутри для цикла.

1. Объявите переменную типа массив datapoints и индексируйте переменную i вверху исходного окна вводя следующие строки текста программы.

int i;

double datapoints[100];

2. Поставте курсор в исходном окне в пустой строке следующей за EVENT_COMMIT в функции AcquireData.

3. LabWindows/CVI имеет утилиты, помогающие генерировать код для общего C, создания циклов, циклов с условием продолжения, и утверждением переключателя. Выберите Insert Construct из меню Edit и выбирает For Loop, чтобы отобразить диалоговое окно, показанное на Рисунке 6-1.

Рисунок 6-1. Диалговое окно для цикла.

4. Введите следующие значения в диалоговом окне для цикла:

Initialization: i=0

Condition: i<100

Update: i++

Нажмите ОК.

5. Введите следующую строку программы внутри конструкции для цикла, чтобы генерировать случайные числа:

datapoints[i] = rand()/32767.0;

Определение PlotY функции

Следуйте этим шагам, чтобы генерировать строку текста программы, которая выдаст произвольный массив данных в графе управления на интерфейсе пользователя.

1. Поместите курсор в исходное окно на пустой строке следующей за заключительной скобкой только после обращания к функции datapoints[i] = rand()/32767.0 внутри функции AcquireData.

2. Войдите в меню Library, и выберите User Interface, чтобы отобразить показанное на рисунке 6-2 диалоговое окно:

Рисунок 6-2. Диалоговое окно выбора функциональной панели.

3. Используйте клавишу <Down> для перемещения курсора, чтобы выделить Controls/Graphs/Strip Charts и нажмите <Enter>.