WWW.DISS.SELUK.RU

БЕСПЛАТНАЯ ЭЛЕКТРОННАЯ БИБЛИОТЕКА
(Авторефераты, диссертации, методички, учебные программы, монографии)

 

Pages:     || 2 |

«ni.com/russia Содержание О руководстве пользователя Условные обозначения..4 Дополнительная литература..5 Глава 1 Введение в LabWindows/CVI Обзор среды разработки приложений LabWindows/CVI.6 Организация компонентов ...»

-- [ Страница 1 ] --

LabWindows/CVI

Вводный курс

ni.com/russia

Содержание

О руководстве пользователя

Условные обозначения…………………………………………………...…………...4

Дополнительная литература………………………………………………...………..5

Глава 1

Введение в LabWindows/CVI

Обзор среды разработки приложений LabWindows/CVI……………….....………..6

Организация компонентов приложения…………………………......………8

Среда разработки LabWindows/CVI…………………………………….....…......….10 Стандартные библиотеки……………………………………………..…………........11 Разработка интерфейса пользователя………………………………..……......……..11 Создание оболочки программы с помощью Генератора кода…………..….............11 Разработка и редактирование исходного кода……………………..…………..........12 Управление приборами и сбор данных……………………..…………….......…....... Использование библиотек для управления приборами и сбора данных..... Использование Помощника по управлению приборами..…………............ Использование Помощника по сбору данных..……………….................… Разработка драйверов приборов..…………………

Изучение LabWindows/CVI…………………………………………

Глава Создание графического интерфейса пользователя Редактор интерфейса пользователя……………………………..…………………… Ассоциация с исходным кодом…………………………………………….………… Генератор кода………………………………………………………………………… Пример проекта………………………………………………….………………..…… Подготовка……………………………………………………………………………... Создание файла интерфейса пользователя………………………………………...… Создание файла.uir……………………………………………………………. Добавление логических кнопок управления……………………………..….. Добавление графического индикатора…………………………………..…... Сохранение файлов проекта……………………………………………..….... Создание шаблона программы с помощью генератора кода……………………..… Анализ исходного кода……………………………………………………………...… Функция main………………………………………………………….…….… Функция AcquireData………………………………………………….……… Функция QuitCallback………………………………………………………… Запуск созданного кода……………………………………………………..………… Глава Использование панелей функций и библиотек Кратко о панелях функций………………………………………………………….… Вызов панелей функций…………………………………………………….… Элементы управления на панели функций………………………………...… Справочные ресурсы для панели функции……………………………...…… Подготовка……………………………………………………………………………… Создание массива данных……………………………………………………………… Создание кода вызова функции PlotY………………………………………………… Запуск выполненного проекта………………………………………………………… Глава Средства редактирования и отладки Подготовка……………………………………………………………………..……… Средства редактирования………………………………………..…………………… Пошаговое выполнение…………………………………………….………………… Контрольные точки…………………………………………………………………… Фиксированные контрольные точки………………………………………… Контрольные точки по условию………………………………………...…… Отображение и редактирование данных…………………………………..………… Окно переменных………………………………………………………..…… Редактирование переменных………………...……………………… Окно просмотра массива……………………………………………….…..… Окно просмотра памяти……………………………………………………… Окно просмотра строки……………………………………………………… Окно наблюдения……………………………………………………..……… Всплывающие окна……………………………………………………...…… Окно просмотра массива в графическом виде……………………………… Глава Добавление анализа данных в программу Подготовка………………………………………………………………………..…… Изменение интерфейса пользователя……………………..………………… Создание функции обратного вызова………………………………..……… Запуск программы………………………………………………………..…… Глава Создание исполняемых файлов приложений Подготовка…………………………………………………………………………..… Создание дистрибутива………………………………………………….…………… Редактирование дистрибутива…………………………………..…………………… Загрузка приложения на целевой компьютер…………………..…………………… Глава Дополнительные упражнения Исходный проект……………………………………………………………………… Упражнение 1: Программное задание свойств интерфейса пользователя………… Задание………………………………………………………………………… Упражнение 2: Сохранение осциллограммы на диск…………….…………….…… Задание…………………………………………………………..………..…… Упражнение 3: Использование всплывающих панелей………………………..…… Задание………………………………………………………………………… Упражнение 4: Обработка дополнительных событий, возникающих на интерфейсе пользователя…………………………………………………………………………….……… Задание………………………………………………………………………… Упражнение 5: События таймера……………………………………………..……… Задание………………………………………………………………………… Глоссарий……………………………………………………………………………………..… О руководстве пользователя Введение в LabWindows/CVI представляет собой практическое пособие, обучающее основам программирования в среде LabWindows/CVI, и, прежде всего, предназначено для начинающих пользователей. Чтобы максимально эффективно использовать данное руководство, желателен опыт работы с операционными системами DOS, Microsoft Windows, а также языком программирования C.

Условные обозначения Следующие условные обозначения будут использоваться на страницах данного руководства:

Символ » обозначает последовательность вызова пунктов вложенных меню и разделов диалоговых окон для выполнения какого-либо действия. Например, последовательность File»Page Setup»Options обозначает, что сначала необходимо выбрать меню File, затем пункт Page Setup и, наконец, раздел Options в диалоговом окне.

Этот символ также обозначает навигацию к панели функции в дереве библиотек LabWindows/CVI. Например, выражение User Interface Library»Pop-up Panels»InstallPopup означает выбор интерфейса пользователя в дереве библиотек, затем класса всплывающих панелей и, наконец, панели InstallPopup.

Эта иконка обозначает дополнительную справочную информацию.



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

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

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

• Harbison, Samuel P. and Guy L. Steele, Jr. C: A Reference Manual. Englewood Cliffs, NJ:

Prentice-Hall, Inc. 1995.

• LabWindows/CVI Help • LabWindows/CVI Quick Reference • LabWindows/CVI Instrument Driver Developers Guide • LabWindows/CVI Release Notes • NI-DAQmx Help • DAQ Getting Started Guide • DAQ Assistant Help • Traditional NI-DAQ (Legacy) Function Reference Help • NI-VISA Help • NI-488.2 Help _ Введение в LabWindows/CVI В данной главе содержится обзор системы разработки программного обеспечения LabWindows/CVI. Приводится краткое описание среды LabWindows/CVI, стандартных библиотек, разработки интерфейса пользователя и средств редактирования исходного кода.

Указанные темы более детально рассматриваются в последующих главах. Кроме этого, данная глава содержит введение в использование аппаратного обеспечения совместно с LabWindows/CVI, а также предлагает дополнительные ресурсы для более глубокого изучения среды LabWindows/CVI.

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

С помощью среды LabWindows/CVI можно редактировать, компилировать, линковать и отлаживать программы, написанные на ANSI C. Кроме этого, при разработке программ вы можете использовать скомпилированные объектные модули, динамически разделяемые библиотеки (DLL), библиотеки С и инструментальные драйверы совместно с исходными файлами ANSI C.

Типичные приложения, написанные в LabWindows/CVI, содержат следующие элементы:

• Интерфейс пользователя • Сбор данных • Анализ данных • Программное управление выполнением кода На рисунке 1-1 приведена схема взаимосвязей различных элементов программы. Блок управления получает информацию из интерфейса пользователя, блоков сбора данных и анализа. При этом каждый элемент может содержать несколько компонентов.

- Диалоговые окна - Драйверы приборов GPIB - Печатные версии отчетов - RS- Рисунок 1-1. Взаимосвязи элементов программы, создаваемой в LabWindows/CVI Среда программирования LabWindows/CVI используется для создания интерфейса пользователя, который содержит графические индикаторы, развертки осциллограмм и другие элементы управления. Вы также можете создавать выпадающие меню, отображать графические элементы и запрашивать у пользователя ввод данных при помощи всплывающих диалоговых окон. Данные элементы можно создавать интерактивно с помощью Редактора интерфейса пользователя (User Interface Editor) либо программно при помощи библиотеки User Interface Library.

Созданный интерфейс пользователя применяется для управления сбором данных с помощью самостоятельных приборов либо встраиваемых многофункциональных устройств (УСД – устройство сбора данных). Интерфейс может также отображать получаемые данные.

После получения данных их необходимо проанализировать. Например, вам потребуется преобразовать их к определенному формату, промасштабировать, обработать, провести статистический анализ и выполнить аппроксимацию. LabWindows/CVI содержит набор библиотек, входящих в базовый набор, – Formatting and I/O Library и Analysis Library или Advanced Analysis Library (входит в Полную систему разработки – Full Development System), которые содержат функции, выполняющие указанные операции.

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

Для управления потоком приложений используются функции обратного вызова (callback functions), которые позволяют вашей программе выполнять код в ответ на действия пользователя, отсчеты таймера и события операционной системы.

Организация компонентов приложения Для организации файлов и управления разработкой приложения в LabWindows/CVI используются проекты (project) и рабочие окна (workspace). Проект (.prj) содержит файлы, необходимые для запуска приложения.

Проект должен включать, по крайней мере, один из следующих файлов:

• Исходные файлы (.c) • Объектные файлы (.obj) • Файлы библиотек (.lib) В проект вы также можете добавить следующие файлы:

• файлы заголовков (.h) • ресурсные файлы интерфейса пользователя (.uir) • файлы панелей функций для инструментальных драйверов (.fp) • программные файлы инструментального драйвера Рабочее окно может содержать один или несколько проектов. Файл рабочего окна (.cws) – конфигурационный файл, содержащий информацию о настройках, которые не оказывают влияния на способ компиляции проекта, такую как контрольные точки, расположения окон, информацию о тэгах и уровнях отладки. Для редактирования списка проектов в текущем рабочем окне выберите меню Edit»Workspace.

Среда разработки LabWindows/CVI Основой интерфейса среды разработки LabWindows/CVI является Рабочее окно (Workspace window), которое показано на следующем рисунке:

Рисунок 1-2. Рабочее окно Рабочее окно содержит следующие области:

• Project Tree (Дерево проекта) — Содержит список файлов каждого проекта, открытого в рабочем окне. Если щелкнуть правой кнопкой мыши на различных элементах дерева, будь то файл или папка, то можно увидеть список опций • Library Tree (Дерево библиотек) — Представляет собой древовидный список функций, входящих в состав библиотек LabWindows/CVI и инструментальных драйверов. Функции можно разместить в алфавитном порядке по их имени либо по заголовку панели, а также отобразить простой список вместо структурированного, разбитого на классы. Щелкните правой кнопкой мыши по дереву библиотек и выберите опцию Find, чтобы найти определенную функцию.

• Window Confinement Region (Область размещения окон) — Содержит открытые окна исходного кода (Source), редактора интерфейса пользователя (User Interface Editor), редактора дерева функций (Function Tree Editor) панели функции (function • Debugging Region (Область отладки кода) — Содержит окна переменных (Variables), текущих значений величин (Watch) и использования памяти (Memory).

Эти окна используются для просмотра и редактирования значений переменных и программной памяти во время отладки.

• Output Region (Область выходных данных) — Содержит окна ошибок компиляции (Build Errors), ошибок выполнения кода (Run-Time Errors), ошибок управления исходным кодом (Source Code Control Errors), выходных значений при отладке (Debug Output) и поиска результатов (Find Results).

• Source Code Browser (Обозреватель исходного кода) — Содержит информацию о местоположении файлов, функций, переменных, типов данных и макросов в Если в меню Window выбрать опцию Release Window, то можно перенести окно, находящееся в областях размещения окон, отладки кода, выходных данных или обозревателя исходного кода, за пределы Рабочего окна.

Примечание. Вы не сможете вынести дерево проекта и дерево библиотек из Рабочего окна.

Однако, зайдя в меню Options»Environment и включив опцию Auto hide Project and Library Trees, можно убирать дерево проекта и дерево библиотек из Рабочего окна, когда они не активны.

Меню и кнопки на панели инструментов в Рабочем окне среды LabWindows/CVI меняются в зависимости от того, какое из окон активно. Щелкните правой кнопкой мыши по меню и выберите опцию Menu Help, чтобы узнать, какую функцию выполняет каждый из пунктов данного меню. При этом LabWindows/CVI покажет раздел справки LabWindows/CVI Help, описывающий пункты выбранного меню.

Стандартные библиотеки LabWindows/CVI содержит большой набор встроенных библиотек, которые можно использовать для разработки приложений. Определенную библиотечную функцию можно найти в дереве библиотек либо в окне исходного кода, нажав сочетание клавиш.

LabWindows/CVI содержит следующие стандартные библиотеки:

• User Interface (Интерфейс пользователя) — Функции для создания и управления графическим интерфейсом пользователя.

• Analysis (Base Package)/Advanced Analysis (Full Development System) (Анализ/Расширенный анализ) — Функции для выполнений операций с массивами, например, быстрое и эффективное моделирование и анализ больших наборов данных.

• Formatting and I/O (Форматирование и Ввод/Вывод) — Функции для записи и считывания данных из файлов, а также манипулирования форматом данных в • Utility (Утилиты) — Функции для выполнения различных операций, включая использование системного таймера, управление файлами на диске, запуск исполняемых файлов и включение многопоточности при выполнении программы.

• ANSI C — Функции из стандартной библиотеки ANSI C.

• VXI — Функции для коммуникации и управления VXI устройствами.

• GPIB/GPIB 488.2 — Функции для коммуникации и управления устройствами посредством GPIB шины.

• RS-232 — Функции для управления портами RS-232 с помощью операций ввода/вывода, управляемых по прерыванию.

• VISA — Функции для управления приборами с различными интерфейсами коммуникации, включая VXI, GPIB, последовательный порт и др.

• TCP — Функции, обеспечивающие независимый от платформы интерфейс для работы с протоколом сетевого обмена, представляющего собой поток байтов и подчиняющегося модели на основе соединений.

• Internet — Функции для коммуникации с удаленными серверами с целью получения • DDE Support — Функции, применяющиеся для создания интерфейса обмена данными с другими приложениями Windows на основе стандарта DDE.

• ActiveX — Функции для создания и управления серверами ActiveX.

• DIAdem Connectivity — Функции для записи измерительных данных в файл формата National Instruments DIAdem (.tdm).

•.NET — Функции, помогающие вызывать узлы.NET.

Разработка Интерфейса пользователя Среда LabWindows/CVI может использоваться для разработки графических интерфейсов пользователя, который может включать панели, кнопки управления, выпадающие меню, графики, диаграммы, поворотные ручки, стрелочные индикаторы и многие другие элементы управления и индикаторы. Для интерактивного создания интерфейса пользователя можно использовать специальный редактор User Interface Editor, поддерживающий технологию dragand-drop и содержащий инструменты для создания, размещения и редактирования объектов интерфейса пользователя.

Для программного создания интерфейса пользователя вы можете использовать библиотеку User Interface в LabWindows/CVI. Она представляет собой набор функций для добавления, изменения либо полного создания интерфейса пользователя при запуске приложения.

Для получения дополнительной информации о доступных элементах интерфейса пользователя и функциях, которые вы можете использовать для взаимодействия с ним из различных участков кода, обратитесь к справке LabWindows/CVI Help, а именно к разделам Using LabWindows/CVI»Developing a Graphical User Interface и Library Reference»User Interface Library.

Создание оболочки программы с помощью Генератора кода После создания интерфейса пользователя с помощью редактора User Interface Editor вы можете использовать генератор кода Code Builder для автоматического создания оболочки программы из компонентов интерфейса пользователя. Генератор создаст код для всех управляющих функций обратного вызова, а также шаблон программы, которая при своём запуске будет загружать и отображать окна интерфейса пользователя. Таким образом, генератор кода экономит время разработки, автоматизируя создание кода для множества распространенных задач при написании программы под Windows. В последующих упражнениях, описываемых в данном пособии, вы будете использовать генератор кода.

Разработка и редактирование исходного кода Для разработки файлов с исходным кодом используется окно Source среды LabWindows/CVI.

Данная среда полностью совместима со спецификациями языка программирования ANSI C, поэтому при написании кода вы можете использовать любые структуры ANSI C и стандартные библиотеки функций. Кроме этого, LabWindows/CVI содержит средства генерации кода, упрощающие создание программы.

Пункты меню в окне Source можно использовать для редактирования и компиляции файлов, отладки кода и т.д. В последующих упражнениях, описываемых в данном пособии, вы будете использовать возможности окна исходного кода Source. Дополнительную информацию об этом окне вы можете найти в справке LabWindows/CVI Help в разделе Using LabWindows/CVI»Writing Source Code.

Управление приборами и сбор данных Среда LabWindows/CVI может использоваться для разработки приложений управления приборами и сбора данных. Библиотеки среды содержат все необходимые функции, позволяющие взаимодействовать с приборами через интерфейсы GPIB, RS-232, последовательный порт, Ethernet, а также многофункциональными устройствами сбора данных и модульными приборами компании National Instruments. Для генерации соответствующего кода и создания/редактирования задач NI-DAQmx можно использовать интерактивных помощников, которые содержатся в LabWindows/CVI.

Использование библиотек для управления приборами и сбора данных При установке среды LabWindows/CVI происходит установка библиотек GPIB/GPIB 488.2, VISA и VXI. Однако никакие драйверы для этих протоколов не устанавливаются. Поэтому, хотя указанные библиотеки будут находиться в списке Library Tree, вам необходимо установить соответствующие драйверы, чтобы использовать библиотечные функции в приложении. Драйверы можно установить с CD диска NI Device Drivers. Аналогичным образом, при установке LabWindows/CVI не ставятся ни библиотеки, ни драйверы NIDAQmx, Traditional NI-DAQ и IVI. Вам также необходимо поставить их с диска NI Device Drivers.

Если вы хотите использовать библиотеки LabWindows/CVI для управления приборами и сбора данных, необходимо так настроить среду, чтобы при запуске эти библиотеки загружались. Для этого зайдите в меню Library»Customize и выделите библиотеки для использования. По умолчанию все библиотеки выделены.

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

Использование Помощника по управлению приборами Для генерации кода, осуществляющего коммуникацию с устройствами типа приборов с интерфейсами RS-232, Ethernet и GPIB, можно использовать Помощника по управлению приборами (Instrument I/O Assistant). При этом не надо использовать какой-либо инструментальный драйвер. Для запуска Помощника из среды LabWindows/CVI выберите меню Tools»Create Instrument I/O Task. Дополнительную информацию об использовании Помощника по управлению приборами можно найти в разделе Using LabWindows/CVI»Wizards and Tools»Creating an Instrument I/O Task справки LabWindows/CVI Help.

Примечание. Помощник по управлению приборами устанавливается с CD диска NI Device Drivers.

Использование Помощника по сбору данных Помощник по сбору данных (DAQ Assistant) используется для настройки измерительных задач, каналов и масштабов. Кроме этого вы можете использовать Помощник для генерации NI-DAQmx кода из задачи. Для запуска Помощника из среды LabWindows/CVI выберите меню Tools»Create/Edit DAQmx Tasks. Дополнительную информацию об использовании Помощника по сбору данных можно найти в разделе Using LabWindows/CVI»Data Acquisition»Taking an NI-DAQmx Measurement in LabWindows/CVI справки LabWindows/CVI Help.

Примечание. Чтобы использовать Помощника по сбору данных необходимо установить драйвер NI-DAQmx с CD диска NI Device Drivers.

Разработка драйверов приборов Если вы планируете создать свой собственный драйвер какого-либо прибора, обратитесь к руководству LabWindows/CVI Instrument Driver Developers Guide. Этот документ специально написан и содержит подробную информацию о разработке и добавлении инструментальных драйверов в LabWindows/CVI. Вы также можете изучить раздел Using LabWindows/CVI»Instrument Drivers справки LabWindows/CVI Help для получения основной информации по созданию и модификации драйверов.

Изучение LabWindows/CVI Упражнения в данном учебном пособии предназначены для изучения методов создания, отладки и загрузки приложений в среде LabWindows/CVI.В папке tutorial\solution содержатся решения упражнений, которые вы можете использовать для сравнения.

По мере изучения пособия не забывайте обращаться к документации по LabWindows/CVI для получения дополнительной информации о принципах, изложенных в пособии. Используйте раздел Guide to LabWindows/CVI Documentation справки LabWindows/CVI Help, чтобы узнать о том, как найти определенные документы по LabWindows/CVI. Для запуска справки LabWindows/CVI Help зайдите в меню Help»Contents.

После изучения данного пособия посмотрите примеры программ, находящихся в папке \samples директории установки LabWindows/CVI. В этих примерах иллюстрируются принципы и особенности использования среды LabWindows/CVI. Для поиска примеров программ в директории установки LabWindows/CVI и на сайте ni.com вы можете воспользоваться поисковиком NI Example Finder, который запускается из меню Help»Find Examples.

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

Редактор интерфейса пользователя (User Interface Editor) Редактор интерфейса пользователя – интерактивный редактор, поддерживающий технологию drag-and-drop, для создания интерфейсов пользователя. Он позволяет выбирать различные элементы из меню Create и размещать их на создаваемых панелях. Каждый из элементов вы можете настроить с помощью набора диалоговых окон, которые позволяют задать внешний вид, поведение элемента и его ярлыка, а также задать ассоциацию с исходным кодом.

Ассоциация с исходным кодом После того как в редакторе User Interface Editor был создан интерфейс пользователя, вы можете написать исходный код для управления этим интерфейсом. Чтобы ассоциировать элементы интерфейса пользователя с исходным кодом, необходимо назначить постоянные имена каждой панели, меню и элементу управления/индикатору. В результате вы сможете использовать эти имена в исходном коде, различая, таким образом, элементы интерфейса пользователя. Кроме этого, вы можете назначить какому-либо элементу управления функцию обратного вызова. Эта функция будет автоматически вызываться при выполнении действий с данным элементом во время работы программы. Для ассоциации имени и функции обратного вызова с элементом управления используйте диалоговое окно Edit в редакторе User Interface Editor.

После сохранения интерфейса пользователя в файл.uir LabWindows/CVI автоматически сгенерирует включаемый (заголовочный) файл (.h), определяющий все константы и назначенные функции обратного вызова.

Генератор кода (CodeBuilder) После сохранения интерфейса пользователя в файл.uir вы можете использовать генератор кода CodeBuilder для создания исходного файла, который будет содержать шаблон кода для графического интерфейса пользователя. Генератор автоматически включит в исходный файл функции обратного вызова, которые вы задали в файле.uir. Дополнительную информацию об использовании CodeBuilder вы можете найти в разделе Using LabWindows/CVI»Developing a Graphical User Interface»Generating Code from the GUI справки LabWindows/CVI Help.

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

1. Создание интерфейса пользователя в редакторе User Interface Editor (данная глава).

2. Генерация исходного файла с шаблоном кода с помощью CodeBuilder (данная глава).

3. Добавление кода для генерации и отображения осциллограммы (Глава 3, Использование панелей функций и библиотек).

4. Редактирование и отладка приложения (Глава 4, Средства редактирования и отладки).

5. Разработка функции обратного вызова для вычисления максимального и минимального значений сигнала (Глава 5, Добавление анализа данных в программу).

6. Создание дистрибутива для развертывания приложения на другом компьютере (Глава Создание исполняемых файлов приложений).

Подготовка Запустите LabWindows/CVI, выбирая в меню Start»Programs»National Instruments»LabWindows CVI x.x»NI LabWindows CVI. После запуска LabWindows/CVI появится пустое рабочее окно проекта.

Создание файла интерфейса пользователя Выполните следующие шаги для создания интерфейса пользователя, показанного на рисунке 2-1.

Создание файла.uir 1. Выберите опцию New»User Interface (*.uir) в меню File для создания нового файла интерфейса пользователя с пустой лицевой панелью.

2. Дважды щелкните кнопкой мыши по панели для открытия диалогового окна редактирования панели Edit Panel. В качестве имени панели Panel Title в этом диалоговом окне введите Sample 1.

3. Нажмите OK для закрытия окна.

Добавление кнопок управления 1. Выберите меню Create»Command Button»Square Command Button.

LabWindows/CVI разместит на панели кнопку с ярлыком OK.

2. Для редактирования свойств кнопки дважды щелкните по ней или нажмите клавишу 3. Присвойте кнопке постоянное имя. Это имя будет использоваться при написании кода для идентификации кнопки. В качестве имени LabWindows/CVI присваивает значение по умолчанию, однако вы можете ввести произвольное имя. Введите ACQUIRE в поле Constant Name.

4. Присвойте имя функции, которую будет вызывать программа при нажатии пользователем кнопки Acquire.

В качестве функции обратного вызова Callback Function введите AcquireData. В третьей главе, Использование панелей функций и библиотек, вы напишите исходный код для функции AcquireData.

5. Для изменения ярлыка кнопки управления в поле Label введите Acquire вместо существующей надписи OK. Если вы введете двойное подчеркивание перед любой буквой в поле Label, эта буква будет подчеркнута в ярлыке элемента на интерфейсе пользователя. Теперь пользователь может выбрать данный элемент, нажимая сочетание клавиш. Этот метод работает, если нет такого меню, название которого бы содержало ту же подчеркнутую букву.

6. (Необязательно) Нажмите на кнопку... рядом с полем Label для изменения шрифта кнопки. После окончания работы нажмите OK в диалоговом окне Edit Label Attributes.

7. Нажмите на кнопку OK в диалоговом окне Edit Command Button.

8. Для добавления кнопки выхода из программы QUIT выберите меню Create»Custom Controls»Quit Button. В пользовательских элементах управления часто используются уже готовые настройки. Так, например, кнопке QUIT уже назначена функция обратного вызова QuitCallback. Поэтому изменять настройки кнопки QUIT нет никакой необходимости.

Добавление графического индикатора 1. Ещё один способ добавления элементов на панель заключается в вызове контекстного меню панели и выборе подходящего элемента управления или индикатора. Щелкните правой кнопкой мыши по панели и выберите опцию Graph в меню Graph.

LabWindows/CVI поместит на панель графический индикатор с именем Untitled.

2. Чтобы изменить размер панели щелкните и потяните кнопкой мыши за её угол. В режиме редактирования можно использовать команды меню Edit и Arrange для удаления, копирования, вставки, выравнивания и распределения элементов управления/индикаторов. В результате интерфейс должен выглядеть, как показано на рисунке 2-1. Для выравнивания элементов управления можно использовать линии сетки.

3. Дважды щелкните по графическому индикатору, чтобы открыть диалоговое окно редактирования графика Edit Graph, которое можно использовать для изменения его свойств.

4. В качестве имени Constant Name введите WAVEFORM.

Примечание. Поскольку график служит только в качестве индикатора для отображения осциллограммы, для него нет необходимости использовать функцию обратного вызова.

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

5. В качестве ярлыка Label введите Acquired Data (полученные данные).

6. Используйте кнопки Bottom X-axis и Left Y-axis для назначения имён Time и Voltage для осей x и y, соответственно. Убедитесь, что диалоговое окно Edit Graph выглядит, как показано на рисунке 2-2.

7. После настроек свойств графика нажмите кнопку OK в диалоговом окне Edit Graph.

8. Окончательный вариант интерфейса пользователя должен выглядеть, как показано на рисунке 2-1.

Сохранение файлов проекта 1. Выберите меню File»Save Untitled.uir As, в обозревателе откройте папку \tutorial и введите sample1.uir в качестве имени файла интерфейса пользователя. После этого нажмите Save.

2. Выберите меню View»Preview User Interface Header File для отображения заголовочного файла, который был автоматически создан и сохранен LabWindows/CVI при сохранении вами.uir файла.

3. Закройте заголовочный файл.

4. Выберите меню File»Save Untitled.prj As, в обозревателе откройте папку \tutorial и введите sample1.prj в качестве имени файла проекта. После этого нажмите Save.

5. Теперь необходимо добавить файл.uir в проект. Выберите меню Edit»Add Files to Project»User Interface (*.uir). В диалоговом окне Add Files to Project выберите sample1.uir и нажмите Add. Затем нажмите OK для выхода из диалогового окна.

Обратите внимание, что теперь LabWindows/CVI отобразит файл sample1.uir в дереве проекта Project Tree.

6. Теперь сохраните рабочее окно проекта, выбрав меню File»Save Workspace.

Создание шаблона программы с помощью генератора кода После создания интерфейса пользователя с помощью редактора User Interface Editor используйте генератор кода CodeBuilder для автоматической генерации шаблона программы.

1. Прежде чем использовать CodeBuilder, необходимо задать события, на которые ваша программа должна реагировать. Для этого выберите меню Code»Preferences»Default Control Events. В диалоговом окне Control Callback Events, показанном на рисунке 2-3, отмечены события для обратного вызова EVENT_COMMIT и EVENT_TIMER_TICK.

Примечание. LabWindows/CVI генерирует событие EVENT_TIMER_TICK только для функций обратного вызова для элементов управления таймером.

Рисунок 2-3. Диалоговое окно Control Callback Events 2. В главе 7, Дополнительные упражнения, вы разработаете код, вызывающий справку при нажатии пользователем правой кнопки мыши на элементе управления. Для этого необходимо выделить пункт EVENT_RIGHT_CLICK в списке Control Callback Events.

Нажмите OK для сохранения настроек.

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

• EVENT_COMMIT— Событие подтверждения (commit) (щелчок кнопкой мыши или нажатие клавиши ), которое инициализирует генерацию данных и их отображение на графике.

• EVENT_RIGHT_CLICK— Событие нажатия правой кнопки мыши для отображения 3. Выберите меню Code»Generate»All Code для диалогового окна Generate All Code. В этом окне необходимо задать несколько опций.

4. В разделе Target Files (целевые файлы) выберите Add to Current Project.

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

Выберите её.

Примечание. В данном упражнении имя переменной для панели должно быть panelHandle. Введите его в поле Panel Variable Name, если это необходимо.

6. В разделе Program Termination приводится список функций обратного вызова из файла.uir. Выберите функцию, которая отвечает за остановку выполнения программы.

В нашем случае такой функцией должна быть QuitCallback. Убедитесь, что диалоговое окно вашей программы повторяет показанное на рисунке 2-4.

Рисунок 2-4. Диалоговое окно Generate All Code 7. Нажмите OK. CodeBuilder сгенерирует исходный код для проекта sample1.prj.

LabWindows/CVI создаст новый исходный файл и добавит его в проект.

Анализ исходного кода Исходный код, сгенерированный в первом примере, представляет собой шаблон программы.

Теперь к шаблону необходимо добавить код для определения отклика программы на возникновение событий. Шаблон sample1.c содержит три функции, которые будут использоваться в будущем при написании ваших собственных программ в LabWindows/CVI.

Функция main При создании программ первое, с чем вы столкнетесь, будет написание функции main. Код с использованием функции main приведен в следующем примере:

int main (int argc, char *argv[]) if (InitCVIRTE (0, argv, 0) == 0) return –1; /* out of memory */ if ((panelHandle = LoadPanel (0, "sample1.uir", PANEL)) < 0) return –1;

DisplayPanel (panelHandle);

RunUserInterface ();

DiscardPanel (panelHandle);

return 0;

Чтобы пользователь мог взаимодействовать с созданным интерфейсом, программа должна выполнить следующие шаги:

• LoadPanel загружает панель из файла.uir в оперативную память.

• DisplayPanel отображает панель на экране.

• RunUserInterface по этой команде LabWindows/CVI начинает посылать события от интерфейса пользователя в программу С. Функция завершит выполнение после выполнения команды QuitUserInterface.

Если на определенном этапе необходимости в интерфейсе пользователя нет, вызовите функцию DiscardPanel для удаления панели из памяти компьютера и с экрана монитора.

Функция AcquireData Функция AcquireData выполняется автоматически при нажатии кнопки Acquire на интерфейсе пользователя и служит для генерации массива данных, которые будут изображаться на графическом индикаторе. Эту функцию вы добавите позже на упражнениях данной главы. Пример использования функции 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;

Функция QuitCallback Функция QuitCallback выполняется автоматически при нажатии кнопки QUIT на интерфейсе пользователя. Эта функция запрещает интерфейсу пользователя отправлять информацию о событиях функции обратного вызова и, кроме этого, завершает вызов функции RunUserInterface, находящейся в теле main. Пример использования функции QuitCallback приведен ниже:

int CVICALLBACK QuitCallback (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;

Запуск созданного кода Код, сгенерированный с помощью CodeBuilder, естественно, синтаксически и программно правилен, поэтому перед тем как добавлять к нему что-то своё, вы можете попробовать его скомпилировать и запустить. Выберите меню Run»Debug sample1_dbg.exe для запуска сгенерированного кода. Программа отобразит панель интерфейса пользователя и закроет её после того, как вы нажмете кнопку QUIT.

_ Использование панелей функций и библиотек В данной главе вы научитесь использовать панели функций LabWindows/CVI для генерации кода. Этот код будет затем использоваться для отображения массива данных на графическом индикаторе интерфейса пользователя, который был создан во второй главе, Создание графического интерфейса пользователя.

Кратко о панелях функций Панель функции – это графическое представление библиотечной функции в LabWindows/CVI. Использование панелей преследует следующие цели:

• С помощью панели функции вы можете выполнить функцию LabWindows/CVI, перед тем как поместить её в программу. Это позволяет поэкспериментировать со значениями параметров, добиваясь от функции требуемого поведения.

• Панели содержат справочную информацию о назначении библиотечных функций LabWindows/CVI, а также о параметрах вызова функций.

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

Вызов панелей функций Дерево библиотек (Library Tree) содержит панели для всех библиотечных функций LabWindows/CVI. Чтобы найти необходимую функцию, вы может осуществлять быстрый поиск по иерархии библиотек, или щелкнуть правой кнопкой мыши по дереву и, выбрав опцию Find, ввести имя конкретной функции.

Элементы управления на панели функций Элементы управления на панели представляют параметры функций. Чтобы задать параметры, введите значения в элементы управления. Существует восемь типов элементов управления, с которыми вы познакомитесь по мере изучения примеров данной главы. Некоторые элементы управления содержат рядом кнопку..., которая служит для вызова дополнительных диалоговых окон, помогающих выбрать вход для параметров.

Справочные ресурсы для панели функции Используя панели функций, вы можете получить справочную информацию о функциях и их параметрах. В таблице 3-1 приведен список методов вызова справки.

Таблица 3-1. Вызов справочной информации о панели функции Информация о функции Выберите меню Help»Function.

Информация о параметре Поместите курсор мыши на элемент управления, затем Полная информация Выберите меню Help»Online Function Help.

Примечание. Чтобы получить полную информацию с помощью панели функции, последняя должна быть документирована в справочной системе LabWindows/CVI Help.

Подготовка Если вы не выполнили задания второй главы, Создание графического интерфейса пользователя, сделайте это сейчас.

Создание массива данных В данном упражнении вы завершите создание исходного кода файла sample1.c, заставляя программу генерировать синусоиду в виде массива чисел, а также строить этот массив на графике. Основная часть работы будет проходить с функцией AcquireData. После нажатия кнопки Acquire программа сгенерирует случайное число при помощи функций ANSI C srand и rand и будет использовать это число в качестве амплитуды синусоиды.

1. Откройте sample1.c, если это ещё не было сделано.

2. В строке, следующей за case EVENT_COMMIT: функции AcquireData, введите следующие строки кода для генерации случайных чисел.

srand (time(NULL));

amp = rand ()/32767.0;

3. Поместите курсор в строку, следующую за amp = rand ()/32767.0.

4. Щелкните правой кнопкой мыши по дереву библиотек Library Tree, выберите опцию Find, введите SinePattern в поле Find What и нажмите Find Next для нахождения панели функции Sine Pattern. Дважды щелкните по панели для её открытия.

Примечание. Если LabWindows/CVI не может найти соответствие, вызовите контекстное меню дерева библиотек и выберите опцию Show Function Names, затем повторите шаг 4.

5. Выберите Code»Set Target File. Выберите sample1.c и нажмите OK.

6. Введите 100 для элемента управления Number of Elements.

7. Введите amp для элемента Amplitude. Выберите меню Code»Declare Variable и разрешите опцию Add declaration to current block in target file “sample1.c”. Нажмите 8. Введите 180.0 для элемента управления фазой Phase (Degrees).

9. Введите 2.0 для элемента управления количеством циклов Number of Cycles.

10. Введите sine для элемента управления Sine Pattern. Выберите Code»Declare Variable.

11. В диалоговом окне Declare Variable введите 100 в качестве числа элементов Number of Elements и разрешите опцию Add declaration to top of target file “sample1.c”. Нажмите OK.

12. Выберите меню Code»Insert Function Call. LabWindows/CVI поместит функцию SinePattern из её панели в исходный файл sample1.c в место, где находится текстовый курсор.

Совет. В окне исходного кода Source можно поместить курсор в вызове любой библиотечной функции LabWindows/CVI, а затем выбрать меню View»Recall Function Panel для открытия панели этой функции. После повторного вызова панели, её элементы управления будут автоматически отражать состояние функции в окне исходного кода.

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

1. В окне исходного кода поместите курсор в строку, следующую за вызовом функции SinePattern, который осуществляется в теле функции AcquireData.

2. Введите PlotY и нажмите для открытия панели функции Plot Y.

3. Для элемента управления Panel Handle выберите Code»Select Variable. Появившееся диалоговое окно будет содержать список имен переменных, используемых в вашей программе. Выберите panelHandle и нажмите OK.

Если переменной panelHandle не окажется в списке, разрешите опцию Show Project Variables и нажмите Build The Project. Во время процесса компиляции LabWindows/CVI обнаружит, что не может выполнить директивы включения файлов ansi_c.h и analysis.h. Нажмите Yes, чтобы добавить эти заголовочные файлы в вашу программу.

4. Для элемента управления Control ID необходимо задать имя постоянной, назначаемой графическому индикатору. Поместив курсор в элементе Control ID, нажмите для вызова диалогового окна с полным списком имен переменных, записанных в файлах.uir. В разделе User Interface Resource Files (файлы ресурсов интерфейса пользователя) выберите \sample1.uir. Из списка констант выберите PANEL_WAVEFORM и нажмите OK.

5. Введите sine для элемента управления Y Array. Это имя указывает, какой массив в памяти программа будет отображать на графическом индикаторе.

6. Введите 100 в элемент управления Number of Points. Это число задает количество элементов массива для отображения на графике. Для остальных элементов управления оставьте значения по умолчанию. Если панель функции Plot Y повторяет показанную на рисунке 3-1, перейдите к следующему шагу.

7. Выберите меню Code»Insert Function Call для включения вызова функции PlotY в исходный код. LabWindows/CVI выведет сообщение о том, что соответствующий текст выделен в текущей строке. Нажмите Replace для замены текста PlotY, введенного вами, полностью готовым вызовом данной функции.

8. Убедитесь, что функция AcquireData имеет следующий вид:

int CVICALLBACK AcquireData (int panel, int control, int event, void *callbackData, int eventData1, int eventData2) double amp;

switch (event) { case EVENT_COMMIT:

srand (time(NULL));

amp = rand ()/32767.0;

SinePattern (100, amp, 180.0, 2.0, sine);

PlotY (panelHandle, PANEL_WAVEFORM, sine, 100, VAL_DOUBLE, VAL_THIN_LINE, VAL_EMPTY_SQUARE, VAL_SOLID, 1, VAL_RED);

break;

case EVENT_RIGHT_CLICK:

break;

return 0;

9. Сохраните исходный файл.

Запуск выполненного проекта Теперь проект завершен и сохранен в файл sample1.prj. Выберите меню Run»Debug sample1_dbg.exe для выполнения кода. На вопрос о включении ansi_c.h и analysis.h в начало файла нажмите Yes. При запуске программы будут выполняться следующие действия:

1. LabWindows/CVI скомпилирует исходный код из файла sample1.c и скомпонует необходимые библиотеки.

2. В начале выполнения программы LabWindows/CVI запустит интерфейс пользователя, который будет готов к вводу данных с помощью клавиатуры или мыши.

3. При нажатии Acquire LabWindows/CVI передаст это событие функции обратного вызова AcquireData.

4. Функция AcquireData сгенерирует массив данных и отобразит их на графическом индикаторе.

5. После нажатии кнопки QUIT LabWindows/CVI передаст это событие функции QuitCallback, которая остановит выполнение программы.

_ Средства редактирования и отладки В данной главе вы познакомитесь со средствами редактирования и отладки программ, написанный в среде LabWindows/CVI.

• Окно исходного кода (Source window) • Пошаговое выполнение • Контрольные точки (Breakpoints) • Окно переменных (Variables window) • Array Display window (Окно просмотра массива) • Memory Display window (Окно просмотра памяти) • String Display window (Окно просмотра строки) • Watch window (Окно наблюдения) • Graphical Array View (Окно просмотра массива в графическом виде) Подготовка В данной главе используется проект, созданный в предыдущей главе Использование панелей функций и библиотек. Если вы не выполнили задания третьей главы, сделайте это сейчас.

Средства редактирования Окно исходного кода LabWindows/CVI содержит целый набор простейших средств редактирования, помогающих при работе с исходным кодом. Выполните следующие шаги, чтобы познакомиться с некоторыми из этих инструментов.

1. Откройте sample1.c, если это ещё не было сделано. Выберите меню View»Line Numbers для отображения колонки с номерами строк у левой границы окна.

2. Программы, разрабатываемые в среде LabWindows/CVI, часто ссылаются на другие файлы, такие как заголовочные файлы или файлы интерфейса пользователя. Для быстрого просмотра этих вспомогательных файлов поместите курсор на имя файла в окне исходного кода и выберите меню File»Open Quoted Text, либо нажмите сочетание клавиш, или же щелкните правой кнопкой мыши по имени файла и выберите в контекстном меню опцию Open Quoted Text.

В исходном коде sample1.c поместите курсор на имени файла userint.h и нажмите. LabWindows/CVI откроет заголовочный файл userint.h а отдельном окне исходного кода. Просмотрите его и закройте.

3. Если вы хотите просмотреть участок кода и при этом вносить изменения в другом месте того же файла, вы можете разделить на верхнюю и нижнюю половины, как показано на рисунке 4-1.

Для разделения окна щелкните по двойной линии вверху окна исходного кода кнопкой мыши и, удерживая её нажатой, потяните к середине экрана.

Обратите внимание, что обе части окна имеют независимые прокрутки для отображения различных участков одного и того же кода. Введите текст в шестую строку. Вы увидите, что он отобразится в обеих частях окна.

4. В случае если при редактировании исходного кода вы допустите ошибки, LabWindows/CVI позволяет отменить сделанные изменения. По умолчанию LabWindows/CVI может отменить 100 операций, однако вы можете настроить отмену до 1000 операций. Выберите меню Edit»Undo. Текст, введенный в шестой строке, исчезнет.

5. Переместите линию, разделяющую окно, назад кверху, восстановляя его целостность.

6. Для быстрого перемещения к определенной строке кода можно использовать два различных метода. Если вы знаете номер строки, выберите меню View»Line и введите номер строки.

7. Второй метод – установка тэгов на определенные строки кода. Поместите курсор на третью строку и выберите меню View»Toggle Tag. Напротив строки в левом столбце окна исходного кода появится зеленый квадратик.

Поместите курсор на двенадцатую строку программы в окне исходного кода и добавьте ещё один тэг. Выберите меню View»Next Tag, и курсор переместится на следующую строку, имеющую тэг. С этой целью можно использовать также клавишу. Для удаления тэгов из исходного файла выберите меню View»Clear Tags, убедитесь, что все теги выделены, и затем нажмите OK.

8. В окне исходного кода вы можете выполнять поиск определенного текста. Для этого выберите меню Edit»Find. Откроется диалоговое окно Find, в котором необходимо ввести требуемый текст и задать различные параметры поиска. Введите panelhandle в строке Find What, а остальные параметры оставьте по умолчанию. Теперь нажмите Find Next. LabWindows/CVI выделит первое совпадение в тексте и отобразит все результаты в окне Find Results. Вы можете щелкнуть кнопкой мыши по любому из результатов поиска в окне Find Results, чтобы перейти к соответствующему тексту в окне исходного кода.

Выберите меню Edit»Quick Search и введите disc. При использовании команды Quick Search LabWindows/CVI осуществляет последовательный поиск. Обратите внимание, что LabWindows/CVI находит совпадения символов, которые вы ввели.

Пошаговое выполнение Пошаговое выполнение – это полезный инструмент для отладки программ. Рассмотрим применение данного метода на примере файла sample1.c:

1. Выберите меню Run»Break on»First Statement для приостановки выполнения программы на первой инструкции.

2. Выберите меню Run»Debug sample1_dbg.exe для запуска выполнения программы.

После компиляции строка с объявлением функции main будет подсвечена, свидетельствуя о том, что выполнение программы временно приостановлено.

3. Для выполнения выделенной строки выберите меню Run»Step Into.

Совет. Чтобы при работе в пошаговом режиме каждый раз не обращаться к меню Run, используйте клавишные комбинации, приведенные в Таблице 4-1. Для этой цели вы также можете использовать кнопки с соответствующими иконками на линейке инструментов.

Таблица 4-1. Клавишные комбинации запуска режимов пошагового выполнения Перейти к курсору инструкцию 4. Чтобы найти определение функции SinePattern, поместите курсор на этой функции в файле sample1.c и выберите меню Edit»Go to Definition. Другой способ – вызовите контекстное меню данной функции и выберите опцию Go to Definition.

Команда Go to Definition сразу же находит определение функции, даже если функция размещается в другом исходном или заголовочном файле. Однако при этом искомый исходный файл должен быть скомпилирован в общем проекте. Данная команда может применяться и для поиска описаний переменных.

В нашем случае LabWindows/CVI откроет файл analysis.h и выделит описание функции SinePattern. После окончания просмотра analysis.h выберите Edit»Go Back, чтобы вернуться в место редактирования исходного кода.

Совет. Многие из команд, рассмотренных в данном упражнении, можно найти в контекстном меню объектов в окне исходного кода.

5. Команда Step Into используется для запуска пошагового выполнения программы.

Обратите внимание, что после начала выполнения функции main подсветка перейдет внутрь функции, отслеживая выполнение её инструкций. Продолжите пошаговое выполнение программы до тех пор, пока не будет подсвечена инструкция DisplayPanel (panelHandle);.

6. Теперь вы можете выбрать следующую инструкцию для выполнения с помощью команды Run»Set Next Statement. Поместите курсор в строку с вызовом функции DiscardPanel (panelHandle);. Выберите меню Run»Set Next Statement.

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

Контрольные точки Контрольные точки (breakpoints) – ещё одно средство отладки программ в LabWindows/CVI.

Контрольная точка представляет собой строку программы, на которой LabWindows/CVI приостанавливает выполнение программы. Активировать контрольную точку можно несколькими способами:

• Постоянно — Контрольная точка на определенной строке в окне исходного кода.

Такую точку можно активировать и отключать даже во время выполнения программы.

• На время выполнения — Если окно LabWindows/CVI активно, нажмите во время выполнения программы.

• При ошибке выполнения библиотеки — Выберите меню Run»Break on»Library Errors для приостановки выполнения программы в определенной точке при условии возвращения ошибки библиотечной функцией.

• По условию — LabWindows/CVI приостанавливает выполнение программы в определенной точке, если выполнится заданное пользователем условие.

• Программно — При написании кода используйте вызов функции Breakpoint.

• По событию — LabWindows/CVI приостанавливает выполнение программы, когда значение определенного выражения изменится.

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

1. Если необходимо, остановите выполнение программы с помощью меню Run»Terminate Execution.

2. Отключите опцию Run»Break on»First Statement. Отметка напротив пункта First Statement исчезнет.

3. В окне исходного кода щелкните кнопкой мыши слева от строки, содержащей инструкцию:

SinePattern (100, amp, 180.0, 2.0, sine);

Рядом со строкой появится красный ромбик, представляющий контрольную точку, как показано на рисунке 4-2.

Рисунок 4-2. Индикатор контрольной точки рядом со строкой кода Примечание. При установке контрольной точки нет необходимости прерывать выполнение программы. Если это действие совершается во время работы программы, LabWindows/CVI временно приостановит программу, когда её выполнение достигнет контрольной точки.

4. Начните выполнение программы, выбирая меню Run»Debug sample1_dbg.exe.

Нажмите кнопку Acquire, чтобы сгенерировать событие для функции AcquireData.

Когда LabWindows/CVI достигнет контрольной точки, она приостановит выполнение программы и подсветит соответствующую строку.

5. Нажмите для продолжения выполнения. Программа продолжит выполнение до следующей контрольной точки или до своего завершения. Начиная с этой точки, вы можете включить пошаговое выполнение, выбирая меню Run»Step Over или Run»Step 6. Оставить программу в контрольной точке можно с помощью меню Run»Terminate Execution либо сочетания клавиш.

7. Для удаления контрольной точки щелкните кнопкой мыши по красному ромбику.

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

1. Выберите меню Run»Breakpoints для открытия диалогового окна Breakpoints.

2. В этом окне нажмите Add/Edit Item для открытия диалогового окна Edit Breakpoint.

3. В поле Line в диалоговом окне Edit Breakpoint введите 32, а в качестве условия Condition введите amp > 0. Остальные опции оставьте со значениями по умолчанию и нажмите Add.

4. Нажмите OK для выхода из диалогового окна Breakpoints. LabWindows/CVI отобразит желтый квадратик слева от линии 32, что свидетельствует об установке контрольной точки с условием.

5. Выберите меню Run»Debug sample1_dbg.exe для начала выполнения программы.

Нажмите кнопку Acquire, чтобы сгенерировать событие commit для функции AcquireData. LabWindows/CVI приостановит выполнение программы на строке 32, поскольку будет выполнено условие для контрольной точки. Наведите курсор мыши на переменную amp, чтобы убедиться, что её значение больше нуля.

6. Для остановки программы зайдите в меню Run»Terminate Execution.

7. Щелкните правой кнопкой мыши по иконке контрольной точки слева от строки 32 и выберите опцию Breakpoints для открытия диалогового окна Breakpoints.

8. Нажмите Add/Edit Item для открытия диалогового окна редактирования контрольной точки Edit Breakpoint. Замените условие Condition на amp < 0 и нажмите Replace.

Затем нажмите OK для выхода из этого диалогового окна.

9. Повторите шаг 5. Обратите внимание, что LabWindows/CVI не остановит выполнения программы на строке 32, поскольку условие для контрольной точки теперь не будет выполнено.

10. Дважды нажмите для остановки программы. Для удаления контрольной точки выберите Run»Breakpoints, убедитесь, что нужная контрольная точка выделена, и нажмите Delete Item. Затем нажмите OK для выхода из диалогового окна.

Дополнительную информацию о контрольных точках можно найти в справке LabWindows/CVI Help в главе breakpoints.

Отображение и редактирование данных Режим пошагового выполнения и контрольные точки – средства высокоуровневой проверки приложения. В ряде случаев вам потребуется более детально исследовать поведение программы. Интерактивная среда разработки LabWindows/CVI содержит целый набор различных окон для наблюдения и редактирования данных вашей программы.

• Окно переменных (Variables window) • Окно просмотра массива (Array Display window) • Окно просмотра памяти (Memory Display window) • Окно просмотра строки (String Display window) • Окно наблюдения (Watch window) • Всплывающие окна (Tooltips) • Окно просмотра массива в графическом виде (Graphical Array View) Окно переменных Окно переменных (Variables window) отображает все переменные, которые к настоящему моменту объявлены в программе. Чтобы вызвать окно переменных, выберите меню Window»Variables.

В окне переменных перечисляются имена, значения и типы активных переменных.

LabWindows/CVI отображает переменные по категориям в соответствии с их определением, таким, например, как глобальная или локальная. В разделе Stack Trace приводится текущий стек вызовов функций. Для просмотра переменных, которые активны и перечислены в стеке вызовов, дважды щелкните кнопкой мыши по соответствующей функции в разделе Stack Trace.

Для проверки значений переменных вы всегда можете открывать окно Variables. Данная возможность особенно полезна при пошаговом выполнении программы. Выполните следующие действия, чтобы начать пошаговое выполнение программы и одновременный просмотр окна переменных на различных этапах работы программы.

1. Выберите меню Run»Break on»First Statement.

2. Выберите меню Run»Debug sample1_dbg.exe либо нажмите для запуска программы. Когда программа начнет выполняться LabWindows/CVI подсветит функцию main в окне исходного кода.

3. Выберите меню Window»Variables для вызова окна переменных, которое показано на рисунке 4-3.

Рисунок 4-3. Окно переменных во время выполнения функции main Примечание. Значения, которые вы увидите, могут отличаться от показанных на рисунке 4-3.

4. Установите контрольную точку в строке со следующим кодом:

SinePattern (100, amp, 180.0, 2.0, sine);

5. Нажмите для продолжения выполнения программы и затем кнопку Acquire.

LabWindows/CVI приостановит программу на инструкции с контрольной точкой. В разделе Stack Trace окна Variables LabWindows/CVI покажет переменную AcquireData. В самом окне Variables будут показаны переменные, которые объявлены специально для этой функции.

6. Перейдите к следующему параграфу, Редактирование переменных.

Редактирование переменных Кроме просмотра переменных окно Variables может использоваться и для редактирования содержимого переменной. Следующее упражнение продемонстрирует вам эту возможность.

1. Убедитесь, что выполнение программы sample1.c приостановлено на следующей SinePattern (100, amp, 180.0, 2.0, sine);

2. Выделите переменную amp в окне исходного кода и выберите меню Run»View Variable Value. LabWindows/CVI подсветит переменную amp в окне Variables.

3. Находясь в окне переменных, нажмите для редактирования значения amp.

Введите.2 в столбце value и нажмите.

4. В окне исходного кода выберите Run»Continue. Обратите внимание, что амплитуда синусоиды теперь равна 0.2. Т.е. изменение, которое было сделано в окне переменных, немедленно повлияло на выполнение программы.

Окно просмотра массива (Array Display window) Другим полезным средством просмотра данных в LabWindows/CVI является окно просмотра массива (Array Display window), которое показывает содержимое массива данных. Точно так же, как окно Variables использовалось для редактирования переменных, окно просмотра массива может применяться для редактирования элементов массива.

1. Нажмите кнопку Acquire, чтобы снова перевести программу в режим с контрольной 2. Щелкните правой кнопкой мыши по sine в окне переменных и выберите опцию View»Array Display для просмотра значений массива, как показано на рисунке 4-4.

Примечание. Значения элементов вашего массива могут отличаться от тех, что показаны на рисунке 4-4.

Окно Array Display показывает значения элементов массива в табличном виде. На рисунке 4-4 массив sine – одномерный, поэтому в окне отображается один столбец чисел. Числа в столбце в левой части окна – порядковые номера элементов. Первый элемент имеет номер ноль.

Точно так же, как окно Variables использовалось для редактирования переменных, окно просмотра массива может применяться для редактирования отдельных элементов массива.

3. Закройте окно Array Display.

Окно просмотра памяти (Memory Display Window) Окно просмотра памяти может использоваться для просмотра и редактирования памяти отлаживаемой программы. Данное окно используется следующим образом:

1. Когда работа программы приостановлена, выберите меню Window»Memory для вызова окна Memory Display.

2. Нажмите вкладку Variables для возвращения к окну просмотра переменных.

3. Щелкните кнопкой мыши по переменной sine в окне Variables и перетащите её во вкладку Memory.

LabWindows/CVI покажет содержимое памяти для массива sine.

Для редактирования памяти программы щелкните правой кнопкой мыши по окну Memory Display и выберите в контекстном меню опцию Edit Mode, затем дваждя щелкните по значению, которое хотите отредактировать.

4. После окончания работы нажмите для прекращения выполнения программы.

Окно просмотра строки (String Display Window) Другим полезным средством просмотра данных в LabWindows/CVI является окно просмотра строки (String Display). Для его вызова достаточно выбрать строковую переменную в окне переменных (Variables window). Окно просмотра строки похоже на окно просмотра массива, исключая, конечно, то, что оно предназначено для просмотра и редактирования элементов строки. Все операции в этом окне выполняются аналогично окну просмотра массива.

Дополнительную информацию об окне просмотра строки можно найти в разделе Using LabWindows/CVI»Debugging Tools»Using the Array and String Display Windows справки LabWindows/CVI Help.

Окно наблюдения (Watch window) Окно наблюдения – очень полезное средство отладки, позволяющее динамически просматривать значения переменных по мере выполнения программы. Оно также применяется для просмотра значений выражения и установки контрольных точек по условию, когда переменная или значение выражения изменяется. Выполните следующие действия, чтобы просматривать значения переменных во время выполнения программы.

1. Загрузите проект sample1.prj, если это ещё не было сделано. Убедитесь, что опция Run»Break on»First Statement включена. Чтобы удалить контрольную точку в строке SinePattern, щелкните по ней кнопкой мыши.

2. Выберите меню Run»Debug sample1_dbg.exe либо нажмите для запуска выполнения программы. После этого выполнение программы прервётся, а функция main подсветится.

3. В окне переменных щелкните правой кнопкой мыши по переменной sine и выберите в контекстном меню опцию Add Watch Expression для добавления этой переменной в окно наблюдения. Появится диалоговое окно Add/Edit Watch Expression.

4. Разрешите опцию Break when value changes. Диалоговое окно должно совпадать с показанным на рисунке 4-5. Теперь нажмите Add. LabWindows/CVI покажет переменную sine в окне Watch. Раскройте переменную, чтобы увидеть отдельные элементы массива.

Рисунок 4-5. Диалоговое окно Add/Edit Watch Expression 5. Выберите меню Run»Continue для продолжения выполнения программы. Нажмите кнопку Acquire на интерфейсе пользователя. Выполнение программы прервётся после вызова функции SinePattern, поскольку значение переменной sine изменится.

Снова раскройте переменную sine, чтобы просмотреть обновленные значения элементов. После этого выберите меню Run»Continue для продолжения выполнения программы и нажмите кнопку QUIT на интерфейсе пользователя для закрытия приложения. Удалите переменную, за которой велось наблюдение, выбирая её в окне Watch и нажимая.

Всплывающие окна (Tooltips) Для редактирования переменных вы также можете использовать следующий метод:

1. Отключите опцию Break on»First Statement и установите контрольную точку на строке с вызовом функции SinePattern. Затем выберите меню Run»Debug sample1_dbg.exe.

2. Нажмите кнопку Acquire на интерфейсе пользователя. Выполнение программы остановится на инструкции SinePattern.

3. Поместите курсор мыши на переменную amp инструкции SinePattern.

4. Значение переменной появится во всплывающем окне (tooltip). Выделите текущее значение и введите 3.0.

5. Выберите меню Run»Continue для продолжения выполнения программы. Обратите внимание, что амплитуда синусоиды на графике равна значению, введенному вами во всплывающем окошке, а не вычисленному самой программой. Нажмите кнопку QUIT на интерфейсе пользователя для выхода из программы.

Окно просмотра массива в графическом виде (Graphical Array View) Это окно показывает значения 1D и 2D массива в графическом виде. Для открытия окна выполните следующие шаги:

1. Удалите существующие контрольные точки. Затем установите контрольную точку в строку с вызовом функции PlotY.

2. Выберите меню Run»Debug sample1_dbg.exe и нажмите кнопку Acquire на интерфейсе пользователя.

3. В окне переменных выделите переменную sine и выберите меню View»Graphical Array View для просмотра значений sine в графическом виде. Вы также можете щелкнуть правой кнопкой мыши по имени переменной в окне исходного кода и выбрать опцию Graphical Array View. Окно Graphical Array View покажет значения массива в графическом виде.

4. Выберите меню Run»Continue, чтобы завершить выполнение программы. Затем нажмите кнопку QUIT для выхода из приложения.

_ Добавление анализа данных в программу В главе 3, Использование панелей функций и библиотек, вы сгенерировали код для построения массива данных на графике. Функция, строящая график, размещалась в теле функции обратного вызова, которая вызывалась нажатием кнопки Acquire. В данной главе вы научитесь добавлять код для вычисления максимального и минимального значений элементов массива случайных чисел.

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

1. Удалите все контрольные точки и закройте все окна, кроме рабочего окна проекта.

2. Запустите проект sample1.prj, чтобы проверить работоспособность программы.

Для остановки выполнения нажмите кнопку QUIT.

Изменение интерфейса пользователя Выполните следующие шаги для изменения интерфейса пользователя:

1. Откройте файл sample1.c. Поместите курсор в конец файла. Позже генератор кода поместит в это место новую функцию обратного вызова.

2. Не закрывая sample1.c, откройте файл sample1.uir. Ваша цель заключается в изменении этого файла, чтобы интерфейс пользователя совпадал с показанным на рисунке 5-1.

3. Добавьте кнопку управления на интерфейс пользователя.

4. Дважды щелкните по новой кнопке для открытия диалогового окна редактора Edit Command Button.

В этом окне введите следующую информацию и нажмите OK.

Constant Name (Идентификатор) MAXMIN обратного вызова) 5. Вы можете использовать генератор кода CodeBuilder для добавления шаблона функции обратного вызова в программу. Вызовите контекстное меню кнопки Max & Min и выберите в нем опцию Generate Control Callback.

На время генерации кода курсор мыши примет вид молнии. После обновления интерфейса пользователя необходимо добавить код в функцию обратного вызова FindMaxMin для вычисления и индикации максимального и минимального значений массива.

6. В редакторе интерфейса пользователя выберите Create»Numeric»Numeric.

7. Дважды щелкните кнопкой мыши по числовому элементу управления для вызова диалогового окна Edit Numeric. В этом окне введите следующую информацию и нажмите OK.

Constant Name (Идентификатор) MAX 8. Добавьте ещё один числовой элемент управления.

9. Дважды щелкните кнопкой мыши по новому числовому элементу управления для вызова диалогового окна Edit Numeric. В этом окне введите следующую информацию и нажмите OK.

Constant Name (Идентификатор) MIN 10. Расположите элементы управления так, чтобы интерфейс пользователя был похож на изображенный на рисунке 5-1.

Совет. Для размещения элементов на панели можете воспользоваться командой меню Arrange»Alignment.

11. Сохраните измененный файл.uir.

Создание функции обратного вызова После обновления интерфейса пользователя в сгенерированный шаблон функции обратного вызова FindMaxMin необходимо добавить код. Для этого выполните следующие действия:

1. Чтобы быстро найти функцию FindMaxMin, вызовите контекстное меню кнопки Max & Min в редакторе интерфейса пользователя и выберите опцию View Control Callback.

LabWindows/CVI откроет исходный файл sample1.c и подсветит функцию FindMaxMin.

2. Расположите курсор в пустой строке после инструкции case EVENT_COMMIT:.

3. Кроме панелей функций LabWindows/CVI содержит ещё один инструмент, помогающий при написании кода. Это – специальная опция Show Completions в меню Edit окна исходного кода. При её использовании появляется список потенциальных совпадений функций или переменных, которые вы ввели. Напечатайте Max и нажмите сочетание клавиш для просмотра списка совпадений. Выберите MaxMin1D.

4. Введите открытую скобку после имени функции, чтобы увидеть её прототип. Если прототип функции не отображается, выберите пункт Show Prototype меню Edit.

Как и панель функции, прототип предоставляет многие из возможностей по её настройке. По мере ввода LabWindows/CVI будет подсвечивать имя соответствующего параметра во всплывающем окне прототипа. При нажатии клавиши LabWindows/CVI вызовет справку для подсвеченного параметра.

Функция MaxMin1D находит максимальный и минимальный элементы массива.

Введите следующие значения параметров:

5. Прежде чем продолжить, необходимо объявить переменные max, max_index, min и min_index. Поместите курсор мыши над именем переменной max, чтобы она подсветилась во всплывающем окне прототипа, и нажмите. LabWindows/CVI объявит переменную max в начале блока исходного кода, в котором в данный момент находится курсор.

6. Повторите пятый шаг для переменных max_index, min и min_index.

7. Создайте чистую строку после обращения к функции MaxMinID и введите SetCtrlVal ( для вызова прототипа функции SetCtrlVal. Если LabWindows/CVI не покажет прототип, нажмите.

8. Функция SetCtrlVal задает значение элемента управления, расположенного на интерфейсе пользователя. Введите panelHandle в качестве параметра PanelHandle.

Затем введите запятую для подсветки параметра ControlID в прототипе.

9. Когда параметр ControlID будет подсвечен, LabWindows/CVI покажет кнопку...

рядом с именем этого параметра. Данная кнопка свидетельствует о том, что LabWindows/CVI предоставляет диалоговое окно или список постоянных величин для задания значения текущего параметра.

Нажмите эту кнопку или сочетание клавиш для запуска диалогового окна Select UIR Constant. Выберите \sample1.uir в списке User Interface Resource Files, а затем PANEL_MAX из списка констант. Нажмите OK.

10. Введите max в качестве значения параметра, обозначенного троеточием в прототипе функции.

11. Для задания значения элемента управления Minimum сразу же за первым вызовом SetCtrlVal функции поместите второй со следующими значениями параметров:

12. Убедитесь, что исходный код совпадает с приведенным ниже:

int CVICALLBACK FindMaxMin (int panel, int control, int event, *callbackData, int eventData1, int eventData2) int min_index;

double min;

int max_index;

double max;

switch (event) case EVENT_COMMIT:

MaxMin (sine, 100, &max, &max_index, &min, &min_index);

SetCtrlVal (panelHandle, PANEL_MAX, max);

SetCtrlVal (panelHandle, PANEL_MIN, min);

case EVENT_RIGHT_CLICK:

return 0;

Запуск программы Вы только что успешно завершили создание функции обратного вызова. Во время работы программы при нажатии кнопки Max & Min произойдет вызов функции FindMaxMin. Но перед этим будут обработаны три события:

• Сначала нажатие левой кнопки мыши сгенерирует событие EVENT_LEFT_CLICK.

• Затем отпускание левой кнопки мыши вызовет событие EVENT_COMMIT. Вы так запрограммировали функцию, что она находит и отображает минимальное и максимальное значения только, когда программа получит событие EVENT_COMMIT.

• В конце, эта кнопка получает фокусировку на ввод, и генерируется событие EVENT_GOT_FOCUS. Чтобы попрактиковаться с событиями на интерфейсе пользователя, выполните упражнение 4, Добавление событий, возникающих на интерфейсе пользователя, которое находится в седьмой главе, Дополнительные 1. Сохраните файл.

2. Запустите проект.

3. Закройте файл, перед тем как перейти к шестой главе, Создание исполняемых файлов приложений.

_ Создание исполняемых файлов приложений В этой главе описывается создание исполняемых файлов приложений в LabWindows/CVI.

Данную способность LabWindows/CVI наряду с её функциями управления можно использовать для разработки и редактирования нескольких дистрибутивов приложения. В этом учебном курсе будет рассмотрено создание инсталлятора для Windows (.msi).

Дополнительную информацию о создании исполняемых файлов приложений можно найти в разделе Using LabWindows/CVI»Managing Projects»Building a Project»Distributing Applications»Step-by-Step Guide to Creating and Editing an Installer справки LabWindows/CVI Help.

Подготовка На этом занятии вы создадите дистрибутив проекта, выполненного в предыдущих главах.

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

Создание дистрибутива Выполните следующие шаги, чтобы создать дистрибутив для вашего приложения.

1. Выберите меню Build»Distributions»Manage Distributions для открытия диалогового окна Manage Distributions. В этом окне перечислены возможные варианты дистрибутивов для текущего рабочего окна.

2. Нажмите New для запуска диалогового окна New Distribution. По умолчанию, в качестве типа Type дистрибутива выбран Windows Installer (.msi). В поле Name введите Sample Distribution. Убедитесь, что в качестве файла настройки Settings file стоит \tutorial\Sample1.cds. Теперь нажмите OK.

Редактирование дистрибутива При создании дистрибутива LabWindows/CVI открывает диалоговое окно Edit Installer.

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

1. На вкладке General убедитесь, что в качестве папки Output Directory, где будет создан дистрибутив, указана \tutorial\cvidistkit.Sample Distribution.

2. Убедитесь, что опция Auto-increment включена. В этом случае LabWindows/CVI будет увеличивать номер версии каждый раз при создании инсталлятора.

Примечание. National Instruments рекомендует ставить всегда последнюю версию инсталлятора, поскольку при установке приложения на другой компьютер может оказаться, что версии инсталляторов не совпадают. При обновлении инсталлятора его предыдущая версия удаляется.

3. Переключитесь на вкладку Files. По умолчанию, LabWindows/CVI добавляет исполняемый файл проекта (sample1.exe) и все зависимости в дистрибутив. Эти файлы перечисляются в разделе Installation Files & Directories данного диалогового Примечание. Обратите внимание, что исполняемый файл sample1.exe выделен красным шрифтом. Это свидетельствует о том, что LabWindows/CVI не может обнаружить этот файл на вашем компьютере. В этом случае исполняемый файл необходимо сначала создать. И для этого не обязательно выходить из диалогового окна Edit Installer. LabWindows/CVI автоматически создаст его при построении дистрибутива.

4. Переключитесь на вкладку Shortcuts. Обратите внимание, что, по умолчанию, LabWindows/CVI помещает ярлык быстрого запуска файла sample1.exe, ссылаясь на директорию [Start»Programs]\Sample Distribution.

5. Переключитесь на вкладку Drivers & Components. Обратите внимание, что LabWindows/CVI добавит полный модуль Run-Time Engine.

6. Нажмите кнопку Check Module Dependencies, чтобы убедиться, что все общие модули, от которых зависят выбранные драйверы и компоненты, включены в инсталлятор. При этом индикатор на кнопке станет зеленым, свидетельствуя, что все зависимости были учтены.

7. (Необязательно) Посмотрите опции на вкладках Registry Keys и Advanced. Для нашего приложения нет необходимости менять какие-либо из этих настроек.

8. После окончания проверки настроек диалогового окна Edit Installer, нажмите OK. И затем нажмите OK для выхода из диалогового окна Manage Distributions.

9. Выберите меню Build»Distributions»Build Sample Distribution. Нажмите Yes в окне сообщений, которое вызовет LabWindows/CVI при создании дистрибутива проекта. В некоторых случаях LabWindows/CVI может попросить установочный диск с продуктами NI. Во время компиляции LabWindows/CVI вызовет диалоговое окно, в котором будет отображаться статус процесса. После создания инсталлятора нажмите Close. Теперь у вас есть всё необходимое для загрузки приложения на целевой компьютер.

Загрузка приложения на целевой компьютер После создания инсталлятора вы можете загрузить приложение на целевой компьютер.

Выполните следующие действия для копирования файлов инсталлятора и его запуска на целевом компьютере.

1. На предыдущих этапах вы создали инсталлятор, файлы которого разместились в директории \tutorial\cvidistkit.Sample Distribution. Эта директория содержит одну или несколько папок Volume, количество которых зависит от размера инсталлятора и размера носителя, на который этот дистрибутив будет записан. В данном упражнении папка будет единственной – Volume1.

2. Скопируйте папку Volume1 и её компоненты на целевой компьютер. В нашем случае это может быть ваш рабочий компьютер.

3. Дважды щелкните кнопкой мыши по файлу setup.exe для начала установки вашего приложения.

4. В процессе инсталляции будут появляться всплывающие панели, в которых пользователь может задавать параметры установки. После окончания процесса нажмите 5. Для удаления приложения используйте пункт Add or Remove Programs панели управления Windows. Если же вы хотите удалить LabWindows/CVI Run-Time Engine и другое программное обеспечение National Instruments, которое содержал инсталлятор, выберите National Instruments Software из списка установленных программ и нажмите Remove. Затем выберите продукты NI для удаления и нажмите Remove.

_ Дополнительные упражнения В этой главе содержатся дополнительные упражнения для закрепления тех концепций, которые представлены на страницах данного учебного пособия. В каждом новом упражнении будет добавляться код к предыдущему.

Решения всех упражнений этой главы можно найти в папке \tutorial\solution. Если по каким-то причинам вы не сможете завершить одно из упражнений, но хотите продолжить обучение, возьмите уже готовое решение.

Исходный проект Все упражнения этой главы базируются на примере проекта, который был завершен в пятой главе, Добавление анализа данных в программу. Если этот проект не был выполнен, то вы можете вернуться назад и сделать это сейчас. Если же с выполнением проекта возникают сложности, вы можете воспользоваться файлом sample1.prj из директории solution.

Проект Sample 1 генерирует осциллограмму и отображает её на графическом индикаторе при нажатии на кнопку Acquire. После построения данных вы можете найти их максимальное и минимальное значения, нажимая кнопку Max & Min. Для генерации данных в проекте используется функция SinePattern. Интерфейс пользователя приведен на рисунке 7-1.

Упражнение 1: Программное задание свойств интерфейса пользователя Каждый из элементов управления, описываемых в файле.uir, имеет набор свойств (атрибутов), которые можно настраивать, изменяя внешний вид и поведение элемента. При создании интерфейса пользователя вы настраиваете атрибуты элементов управления с помощью диалогового окна Edit. Например, в редакторе User Interface Editor вы можете выбрать тип, размер и цвет шрифта для текста ярлыка, которые являются атрибутами интерфейса пользователя.

Для считывания и установки атрибутов элемента управления во время работы программы используются функции GetCtrlAttribute и SetCtrlAttribute. Они применяются похожим образом, что и функции для задания значения элементу управления. Таким образом вы можете создать графический интерфейс пользователя в редакторе User Interface Editor и динамически менять его вид и поведение во время работы программы.

В библиотеке интерфейса пользователя User Interface Library сотни атрибутов определяются в виде констант, как например ATTR_LABEL_BGCOLOR, задающая цвет фона для ярлыка элемента управления. Эти константы можно использовать в аргументах функций GetCtrlAttribute и SetCtrlAttribute.

Задание В данном упражнении используется функция SetCtrlAttribute для изменения режима работы кнопки на интерфейсе пользователя. Поскольку кнопка Max & Min работает неправильно, не получая данных, её можно заблокировать, пока пользователь не нажмет кнопку Acquire. Используйте функцию SetCtrlAttribute для активации кнопки Max & Min.

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

Подсказки • Прежде всего, заблокируйте (dimming) кнопку Max & Min в редакторе интерфейса пользователя User Interface Editor.

• Используйте функцию SetCtrlAttribute из библиотеки User Interface для активации кнопки Max & Min.

• Атрибут, который необходимо задать, – dimmed.

Решение: exer1.prj Упражнение 2: Сохранение осциллограммы на диск Пользователи часто работают с большими объемами данных и хотят сохранить их на диск, чтобы в дальнейшем проанализировать или сравнить. LabWindows/CVI содержит набор функций из библиотеки ANSI C для считывания и записи данных в файл. Если вы знакомы с языком ANSI C, то, наверное, догадались, что речь идет о библиотеке stdio. Кроме неё LabWindows/CVI имеет собственный набор функций ввода/вывода в файл из библиотеки Formatting and I/O.

Совет. При необходимости сохранять очень большие объемы данных National Instruments рекомендует использовать библиотеку DIAdem Connectivity Library, которая оптимизирована для этих целей.

Задание Используйте функции ввода/вывода в файл из библиотеки ANSI C для сохранения массива sine в текстовый файл. Напишите программу таким образом, чтобы файл переписывался каждый раз при сохранении данных, а не добавлял бы новые данные к старым.

Подсказки • Помните, что перед тем как записать данные в файл, его необходимо открыть.

• Типом файла выберете текстовый, поскольку, его можно просмотреть в любом текстовом редакторе.

• Открывайте файл с флагом Create/Open, а не Append, чтобы файл переписывался • Для записи данных на диск используйте функцию fprintf в цикле.

• Используйте функции GetProjectDir и MakePathname из библиотеки Utility Library для формирования пути к файлу.

Решение: exer2.prj Упражнение 3: Использование всплывающих панелей Библиотека User Interface Library содержит набор уже сконфигурированных панелей, называемых всплывающими панелями (pop-up panels). Они представляют собой способ быстрого вывода информации на экран без разработки.uir файла. Всплывающие панели могут применяться для запроса пользователя о вводе данных, подтверждения выбора либо отображения сообщений.

Одно из наиболее полезных применений всплывающих панелей – это окно выбора файла File Select Popup. С этой функцией могут использоваться диалоговые окна File Load или File Save, показанные на рисунке 7-2, для запроса или выбора пользователем имени файла для сохранения или записи.

Задание Добавьте в файл.uir кнопку Save, чтобы после её нажатия массив данных сохранялся в файл. Но сначала программа должна вызвать диалоговое окно, в котором пользователь мог бы задать диск, директорию и имя файла для сохранения данных. После окончания работы файл.uir должен выглядеть, как показано на рисунке 7-3.

Рисунок 7-3. Окончательный вид интерфейса пользователя Подсказки • При создании кнопки Save, не забудьте назначить ей функцию обратного вызова.

• Вам потребуется переместить исходный код, разработанный в упражнении 2, в функцию обратного вызова для записи массива на диск.

• Перед записью данных на диск запросите у пользователя имя файла с помощью функции FileSelectPopup, расположенной в библиотеке User Interface Library.

Решение: exer3.prj Упражнение 4: Добавление событий, возникающих на интерфейсе пользователя На протяжении данного курса вы разрабатывали событийно-управляемую программу. Когда вы помещали какой-либо элемент управления в файл.uir, вы определяли область экрана, которая могла генерировать события во время работы программы. Исходные файлы на C и существуют, большей частью, для обработки этих событий с помощью функций обратного вызова.

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

Элементы управления могут генерировать много различных типов событий. Например, событием может быть щелчок левой либо правой кнопкой мыши, либо двойной щелчок левой кнопкой мыши. Событиями в LabWindows/CVI могут быть не только щелчки кнопками мыши, а нажатия клавиш клавиатуры либо операции сдвига или изменения размера над панелями. При возникновении таких событий будет выполняться функция обратного вызова, ассоциированная с интерфейсом пользователя.

Для просмотра событий, которое генерирует каждое из действий пользователя, щелкните кнопкой мыши по иконке, показанной слева, что приведет к переводу редактора User Interface Editor в режим выполнения. При этом во время работы с элементом управления LabWindows/CVI будет показывать события на панели меню. Полный список событий, которые генерируются при работе с интерфейсом пользователя, можно найти в разделе Events Overview справки LabWindows/CVI Help.

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

Сначала функция обратного вызова обработает событие EVENT_LEFT_CLICK. Затем, событие EVENT_COMMIT. И, наконец, событие EVENT_GOT_FOCUS, если кнопка не была сфокусирована на ввод перед нажатием. Поэтому, в нашем случае, при работе с функциями обратного вызова сначала проверяйте тип события и программируйте выполнение, только если событием было EVENT_COMMIT.

Задание Часто, пользователь, работающий с программой LabWindows/CVI, не является её разработчиком. При этом, хотя графический интерфейс может быть очень прост, но всё же желательно, чтобы элементы управления были снабжены небольшой справкой. Измените проект exer4.prj таким образом, чтобы при щелчке правой кнопкой мыши по элементу, вызывалось бы его краткое описание.

Подсказки • Используйте функцию MessagePopup для вызова справки.

• Помните, что тип события передается в функцию обратного вызова через параметр.

• Событие, которое необходимо обработать, – EVENT_RIGHT_CLICK.

Совет. Если вы хотите вызывать всплывающее окно с документацией для элемента управления, используйте функцию SetCtrlToolTipAttribute. Эту функцию можно найти, раскрывая дерево библиотек Library Tree: Programmer’s Toolbox»User Interface Utilities»SetCtrlToolTipAttribute.

Решение: exer4.prj Упражнение 5: События таймера До сих пор вы создавали программу, которая обрабатывала события, сгенерированные нажатием кнопки мыши или клавиши клавиатуры. Используя таймеры LabWindows/CVI, вы можете генерировать события через определенные интервалы времени для синхронизации действий программы без привлечения пользователя.

Таймеры создаются с помощью редактора User Interface Editor, и их видно только в режиме редактирования. На время работы эти элементы управления скрываются. Имя константы, функция обратного вызова и интервал генерации можно задать в диалоговом окне Edit Timer.

При этом LabWindows/CVI автоматически вызывает функцию обратного вызова по событию типа EVENT_TIMER_TICK, каждый раз, когда истекает заданный интервал времени.

Временной интервал задается в секундах, а временное разрешение составляет 1 мс.

Задание Добавить элемент управления в виде термометра и использовать таймер для генерации и отображения на термометре случайного числа с частотой раз в секунду.

Подсказки • Интервал таймера задайте равным 1.

• Используйте генератор кода CodeBuilder, чтобы создать шаблон функции обратного вызова для таймера.



Pages:     || 2 |


Похожие работы:

«ПРОГРАММА-ПРИГЛАШЕНИЕ ГЛУБОКОУВАЖАЕМЫЕ КОЛЛЕГИ Научный совет РАН по проблемам обогащения полезных ископаемых, Федеральное государственное бюджетное учреждение науки Институт геологии Карельского научного центра РАН приглашают 10-14 сентября 2012 г. принять участие в Международном совещании Современные методы технологической минералогии в процессах комплексной и глубокой переработки минерального сырья (Плаксинские чтения - 2012) Совещание состоится по адресу: 185910, г. Петрозаводск, ул....»

«НЕГОСУДАРСТВЕННОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ СМОЛЕНСКИЙ ГУМАНИТАРНЫЙ УНИВЕРСИТЕТ КАФЕДРА ГУМАНИТАРНЫХ НАУК УТВЕРЖДАЮ: Проректор по научной работе и международным связям А.П. Катровский _ __2014 г. ПРОГРАММА вступительного экзамена в аспирантуру по специальности 10.02.20 – Сравнительно-историческое, типологическое и сопоставительное языкознание Введение К экзамену допускаются лица, завершившие полный курс обучения по основной образовательной программе...»

«МИНОБРНАУКИ РОССИИ ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ ВОРОНЕЖСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ (ФГБОУ ВПО ВГУ) УТВЕРЖДАЮ Заведующий кафедрой финансового права _ Сенцова М. В. 02.09.2013 г. РАБОЧАЯ ПРОГРАММА УЧЕБНОЙ ДИСЦИПЛИНЫ Б.3.Б.14 ФИНАНСОВОЕ ПРАВО 1. Шифр и наименование направления подготовки / специальности: 030900 Юриспруденция 2. Профиль подготовки: Государственное право 3. Квалификация (степень) выпускника: бакалавр 4....»

«Оригинал подписан и заверен печатью Муниципальное бюджетное общеобразовательное учреждение средняя общеобразовательная школа № 121 Академическая Утверждено Директор МБОУ СОШ №121 Т.В.Ведяева Пр. № 31 от 08 2012г. Основная образовательная программа начального общего образования (с изменениями) МБОУ СОШ №121 Академическая на 2012 – 2015 годы. Оглавление. 1. Целевой раздел... 1.1. Пояснительная записка.. 3- 1. 2. Планируемые результаты освоения обучающимися основной образовательной программы...»

«Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования Российская академия народного хозяйства и государственной службы при Президенте Российской Федерации Северо-Западный институт управления Рекомендовано для использования в учебном процессе Социальная работа с молодежью [Электронный ресурс]: учебно-методический комплекс / ФГБОУ ВПО Российская академия народного хозяйства и государственной службы при Президенте Российской Федерации,...»

«Министерство сельского хозяйства Российской Федерации ФГБОУ ВПО Ульяновская ГСХА им. П.А.Столыпина Экономический факультет Кафедра Статистика и организация предприятий АПК Рабочая программа по дисциплине Организация сельскохозяйственного производства Ульяновск - 2012г. 1.Цель и задачи дисциплины Цель изучения дисциплины Организация сельскохозяйственного производства - овладение будущими экономистами по специальности Бухгалтерский учет, анализ и аудит научными знаниями построения и ведения...»

«МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ Санкт-Петербургский Национальный исследовательский университет информационных технологий, механики и оптики Утверждаю: Ректор _ 200 г. Номер внутривузовской регистрации ПРИМЕРНАЯ ОСНОВНАЯ ОБРАЗОВАТЕЛЬНАЯ ПРОГРАММА ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ Направление подготовки 200401 Электронные и оптико-электронные приборы и системы специального назначения ФГОС ВПО утвержден приказом Минобрнауки России от 14.01.2011 г. № 17 Квалификация...»

«U Генеральная конференция com V Confrence gnrale 33-я сессия 33e session Комиссия V Commission V Paris 2005 General Conference 33rd session Commission V Conferencia General a 33 reunin V Comisin V 33 C/8 COM.V 8 октября 2005 г. Оригинал: английский Пункт 4.2 повестки дня Проекты резолюций, в которых предлагаются поправки к Проекту программы и бюджета на 2006-2007 гг. (33 С/5) АННОТАЦИЯ В настоящем документе содержится резюме поправок, которые были предложены государствами-членами к Крупной...»

«МИНИСТЕРСТВО СЕЛЬСКОГО ХОЗЯЙСТВА РОССИЙСКОЙ ФЕДЕРАЦИИ Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования КУБАНСКИЙ ГОСУДАРСТВЕННЫЙ АГРАРНЫЙ УНИВЕРСИТЕТ Р а б о ча я п р о гр а м м а по дисциплине: Б3.В.ДВ.6. Ветеринарно-санитарный контроль при производстве ветеринарных препаратов (наименование дисциплины) Направление – Ветеринарноподготовки санитарная экспертиза Рабочая программа Ветеринарно-санитарная экспертиза Квалификация Бакалавр...»

«СОЮЗ Беларусь 3 Четверг 12 (592) 28 марта 2013 россия Государственный заказчик-координатор — Федеральная служба по техни- 31000, Программа Перспективные полупроводниковые гетероструктуры и 212 07 05 004 039 141300,0 Велопробег Союзного государства Молодежь России и Беларуси — до- 777 17 03 027 132 800, ческому и экспортному контролю приборы на их основе рога в будущее Союзного государства Государственный заказчик — Оперативно-аналитический центр при Пре- 27000, Финансирование отраслей...»

«Муниципальное бюджетное общеобразовательное учреждение Таксимовская средняя общеобразовательная школа № 1 имени А.А.Мезенцева УТВЕРЖДАЮ Председатель НМС Фалилеева И.Н. Приказ №_от_ Рабочая программа по русскому языку. Курс Русский язык 11 класс учителя русского языка и литературы Сердкиной Натальи Ивановны РАССМОТРЕНО Руководитель МО учителей гуманитарных наук _Середкина Н.И. __2013 г. СОГЛАСОВАНО Зам. директора по УВР Анашкина И.В. __2013 г. 2013/14 учебный год Рабочая программа по русскому...»

«Силовая элементная база Силовая Электроника, № 2’2010 Новые отечественные высоковольтные p-i-n GaAs-диоды С Виктор Войтович, д. т. н. овсем недавно в Ханты-Мансийске Президент Свыше 90% от всего потребляемого в России России нажал кнопку запуска в эксплуатацию объема силовых приборов — импорт. На отече[email protected] новейшей ТЭЦ, работающей на сжигаемом ственный рынок ввозится продукции данного вида попутном газе. Ему отрапортовали — экономика (причем отнюдь не самой лучшей и не самой...»

«МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РФ Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования Тверской государственный университет УТВЕРЖДАЮ Декан биологического факультета _ С.М. Дементьева 2012 г. УЧЕБНО-МЕТОДИЧЕСКИЙ КОМПЛЕКС по дисциплине Охрана живой природы для студентов 4 курса очной формы обучения специальность 020801.65 ЭКОЛОГИЯ Обсуждено на заседании кафедры экологии Составитель: К.Б.Н., доцент _ 2012г. Протокол № _А.С.Сорокин Зав. кафедрой...»

«R ВОИС A/36/15 ОРИГИНАЛ: английский ДАТА: 3 октября 2001 г. ВСЕМИРНАЯ ОРГАНИЗАЦИЯ ИНТЕЛЛЕКТУАЛЬНОЙ СОБСТВЕННОСТИ ЖЕНЕВА АССАМБЛЕИ ГОСУДАРСТВ–ЧЛЕНОВ ВОИС Тридцать шестая серия заседаний Женева, 24 сентября – 3 октября 2001 г. ОБЩИЙ ОТЧЕТ принят Ассамблеями СОДЕРЖАНИЕ Пункты ВВЕДЕНИЕ. ПУНКТЫ ОБЪЕДИНЕННОЙ ПОВЕСТКИ ДНЯ (см. документ A/36/1) Пункт 1: ОТКРЫТИЕ СЕССИЙ Пункт 2: ПРИНЯТИЕ ПОВЕСТКИ ДНЯ Пункт 3: ВЫБОРЫ ДОЛЖНОСТНЫХ ЛИЦ Пункт 4: РЕЗОЛЮЦИИ, КАСАЮЩИЕСЯ УЧАСТИЯ ЮГОСЛАВИИ В ЗАСЕДАНИЯХ ВОИС...»

«Сельскохозяйственнопродовольственная ярмарка в Польше 2008 Министерство сельского хозяйства и развития села с 1 мая 2004 г. реализует программу под названием ПсХП – Познакомься с хорошим продуктом. Эта программа служит для передачи информации о продуктах питания, обладающих выделяющими их свойствами в области качества. Владельцем знака ПсХП – Познакомься с хорошим продуктом является министр сельского хозяйства и развития села. В целях соблюдения независимости оценок при предоставлении права на...»

«МИНИСТЕРСТВО СЕЛЬСКОГО ХОЗЯЙСТВА РОССИЙСКОЙ ФЕДЕРАЦИИ УЛЬЯНОВСКАЯ ГОСУДАРСТВЕННАЯ СЕЛЬСКОХОЗЯЙСТВЕННАЯ АКАДЕМИЯ ФАКУЛЬТЕТ ВЕТЕРИНАРНОЙ МЕДИЦИНЫ Кафедра микробиологии, вирусологии, эпизоотологии и ветсанэкспертизы Утверждаю Утверждаю Проректор по научной работе, доцент Декан факультета, профессор С.Н.Золотухин _М.В.Постнова 20 г. 20 г. РАБОЧАЯ ПРОГРАММА ПО ДИСЦИПЛИНЕ ТЕХНОЛОГИЯ МЯСА И МЯСНЫХ ПРОДУКТОВ ДЛЯ СТУДЕНТОВ ФАКУЛЬТЕТА ВЕТЕРИНАРНОЙ МЕДИЦИНЫ специальность...»

«МИНИСТЕРСТВО СЕЛЬСКОГО ХОЗЯЙСТВА РОССИЙСКОЙ ФЕДЕРАЦИИ Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования Саратовский государственный аграрный университет имени Н.И. Вавилова СОГЛАСОВАНО УТВЕРЖДАЮ Заведующий кафедрой Декан факультета /Никишанов А.Н./ _ /Соловьев Д.А./ _ _2013 г. _ 2013 г. РАБОЧАЯ ПРОГРАММА ДИСЦИПЛИНЫ (МОДУЛЯ) КАЧЕСТВО МЕЛИОРАТИВНЫХ Дисциплина СИСТЕМ 280100.68 Природообустойство и Направление подготовки водопользование Профиль...»

«Программа вступительного экзамена в аспирантуру по иностранному языку разработана в соответствии с государственными образовательными стандартами высшего профессионального образования ступеней специалист, магистр. Цель экзамена определить уровень развития у студентов – коммуникативной компетенции. Под коммуникативной компетенцией понимается умение соотносить языковые средства с конкретными сферами, ситуациями, условиями и задачами общения, рассматривать языковой материал как средство реализации...»

«Министерство образования и науки Российской Федерации Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования Ярославский государственный технический университет УТВЕРЖДАЮ Проректор по научной работе ПРОГРАММА КАНДИДАТСКОГО ЭКЗАМЕНА по специальности 25.00.36 Геоэкология (по отраслям))) Ярославль, 2011 Программа составлена на основании паспорта специальности 25.00.36Геоэкология и программы-минимум кандидатского экзамена по специальной дисциплине,...»

«Программа и бюджет Агентства на 2014–2015 годы ^ GC(57)/2 В электронном виде документ размещен на веб-сайте МАГАТЭ www.iaea.org Программа и бюджет Агентства на 2014–2015 годы GC(57)/2 ^ Отпечатано Международным агентством по атомной энергии Август 2013 года GC(57)/2 Стр. i Содержание Стр. Введение Программа и бюджет на 2014-2015 годы – общая информация ЧАСТЬ I ОБЩИЙ ОБЗОР Общий обзор Определение приоритетности Возможности повышения эффективности Синергия Среднесрочная стратегия Оценочные...»






 
2014 www.av.disus.ru - «Бесплатная электронная библиотека - Авторефераты, Диссертации, Монографии, Программы»

Материалы этого сайта размещены для ознакомления, все права принадлежат их авторам.
Если Вы не согласны с тем, что Ваш материал размещён на этом сайте, пожалуйста, напишите нам, мы в течении 1-2 рабочих дней удалим его.