Как в labview создать exe файл

Обновлено: 05.07.2024

Прежде всего LabVIEW - среда программирования, но отличается она от большинства других принципом написания кода программы. Программа в этой среде является графическим представлением взаимосвязанных блоков, выполняющих определённые функции. Такой подход значительно упрощает написание приложений, т. к. нет необходимости вникать в тонкости синтаксиса текстовых языков программирования. По основным функциональным возможностям (работа с файлами, реестром, получением, обработкой данных, передачей их по сети и т.д.) LabVIEW не уступает другим языкам.

Также среда разработки LabVIEW очень удобна для радиоинженеров и научных работников, потому что имеет в своем составе множество готовых инструментов (для создания ПИД-регуляторов, обработки звука, изображений и множества других приложений), да и в целом работа в LabVIEW для людей, не посвящённых в тонкости программирования, намного проще, чем в том же Delphi или Visual Studio.

Изучая управление микроконтроллерами по шине USB на основе библиотек V-USB и LibUSB, у меня возник вопрос – как управлять разрабатываемым USB-устройством из LabVIEW, и возможно ли это вообще?

Выяснилось, что в LabVIEW можно просмотреть все доступные функции libusb0.dll (основная DLL библиотеки LibUSB). Чтобы начать использовать функции библиотеки libusb, нужно научиться работать с типом данных handle в LabVIEW. Довольно простое решение нашлось на одном англоязычном форуме – оно заключалось в преобразовании handle в числовой тип, см. [1]. Читая статью [2] об управлении макетной платой из программы на Delphi, я подумал, что наверно можно сделать такую dll-ку в Delphi, которую потом использовать в LabVIEW для управления устройством USB. Эта DLL (назовем её V-USB-LabVIEW.dll) будет обращаться к libusb0.dll и управлять микроконтроллером ATmega32 по протоколу USB. Все манипуляции с handl-ами, PID, VID, адресами, байтами и т. д. будут происходить внутри V-USB-LabVIEW.dll. Получается следующая схема взаимодействия:


За основу для создания V-USB-LabVIEW.dll взял почти без изменений пример программы useport от Vanoid-а [2], и готовую прошивку для контроллера от Сергея Кухтецкого [3]. Скомпилированную DLL, её исходный код и пример программы LabVIEW можно скачать по ссылке [4]. Теперь коротко о содержимом исходного кода DLL. Работу программ испытывал на макетной плате AVR-USB-MEGA16, на которой установлен микроконтроллер ATmega32A (в память микроконтроллера через USB-бутлоадер была залита прошивка Сергея Кухтецкого).

В начале кода V-USB-LabVIEW.dll объявлены используемые константы, функции и процедуры из проекта useport: usbGetStringAscii, usbOpenDevice, SendUSBControlMessage. Они нужны, чтобы обратиться к нужному устройству USB. В процедуре SendUSBControlMessage объявлены также PID и VID устройства USB в виде строковых констант. Я добавил функцию PortX_Write, которая будет вызываться в LabVIEW. На примере обращения к порту PB0, к которому подключен светодиод на макетной плате AVR-USB-MEGA16, эта дополнительная функция в проекте DLL на Delphi выглядит так:

function PortX_Write (Address:integer;on_off:integer): integer; stdcall;
var data: array [0..2] of char ; //AVR отправляет обратно max 3 байта
bit: byte ;
begin
// Порт PB0 со светодиодом
if Address = 0 then
begin
// Читаем состояние ножек порта В
SendUSBControlMessage(USB2PC,RQ_IO_READ, 0, aPORTB, 0, data);
bit := bit0;
if on_off = 1 then
data[0]:= char ( byte (data[0]) or bit)
else
data[0]:= char ( byte (data[0]) and ($FF-bit));
SendUSBControlMessage(PC2USB, RQ_IO_WRITE,
byte (data[0]), aPORTB, 0, data);
end;
result := 1;
end;

// Далее идет экспорт функций dll для последующего
// использования в LabVIEW
exports PortX_Write;

Функция PortX_Write имеет два аргумента: первый Address – определяет порт, которым нужно управлять. Светодиод на макетной плате подключен к порту PB0, и для него используется адрес 0. Для всех остальных портов P1..P22 макетной платы (которые подключены к разрядам портов A, B, C, D микроконтроллера ATmega32) используются значения от 1 до 22 соответствуют портам макетки P1..P22). Второй аргумент on_off – состояние, в которое порт нужно перевести. Например, чтобы подать питание на светодиод (зажечь его), в параметре on_off нужно передать 1, и чтобы погасить светодиод, надо передать 0. В параметре Address соответственно должен быть 0 (адрес порта светодиода).

LabVIEW - это среда разработки программ, разработанная National Instruments (NI), похожая на среды разработки C и BASIC, но существенная разница между LabVIEW и другими компьютерными языками заключается в том, что другие компьютерные языки используют текстовые языки для генерации кода. , И LabVIEW использует язык графического редактирования G для написания программы, и сгенерированная программа имеет форму блок-схемы.

Labview генерирует шаги exe-файла:

Каждый раз, когда мы используем LabVIEW для написания программы, нам часто требуется запустить программу на целевом компьютере.Как перенести программу с компьютера разработчика на целевой компьютер? Как Labview генерирует exe-файлы? Давайте посмотрим ниже.

После того, как мы напишем программу с помощью Labview, нам часто нужно запустить программу на целевом компьютере.Как перенести программу с компьютера разработчика на целевой компьютер? Скомпилируйте программу, написанную LabVIEW, на компьютере разработчика, чтобы сгенерировать независимую исполняемую программу (exe), а затем перенесите исполняемую программу на целевой компьютер. Поэтому здесь, чтобы научить вас создавать файлы exe в lavbiew.

1. Создайте проект LabVIEW или откройте уже построенный проект, проект содержит исполняемый файл vi.

labview exe

2, в спецификации создания программы браузера проекта щелкните правой кнопкой мыши, чтобы создать новое приложение (exe)

labview exe

3. Задайте имя целевого файла и целевой каталог. Щелкните информацию слева, имя целевого файла появится справа. Имя целевого файла - это имя exe-файла, который будет создан в будущем.

labview exe

4, выберите исходный файл

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

labview exe

Вы можете использовать значок LabVIEW по умолчанию в качестве значка приложения; вы также можете создать значок самостоятельно.

labview exe

6. Затем выберите и щелкните, чтобы сгенерировать. По окончании генерации будет предложен путь к созданному приложению. Нажмите «Готово», после чего вы сможете найти приложение в том месте, где оно находится.

labview exe

На что следует обратить внимание при использовании LabVIEW для создания exe-файла?

1. Добавьте все ВП и вспомогательные файлы в проект и сохраните все ВП в проекте.

2. Убедитесь, что все ВП могут нормально работать.

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

4. Если в программе используется библиотека динамической компоновки или .lvlib, в проект также необходимо добавить файл динамической компоновки или .lvlib.

5. Если вы используете узел MathScript, не используйте функции MathScript, которые не поддерживает LabVIEW Run-Time. При этом вам также необходимо добавить в проект M файлы.

Пришел ответ от NI, дословно: "Для использования программы с подключением драйверов Вам необходимо создать Installer (установочный файл), а не exe-файл. Вы можете создать установочный файл, который установит LabVIEW Run-Time Engine, любые драйверы устройств, и настройки оборудования в MAX, необходимые для запуска приложения". Вот так вот.


Professionalism
Tutorials
Gold
Black

kovn писал(а): Пришел ответ от NI, дословно: "Для использования программы с подключением драйверов Вам необходимо создать Installer (установочный файл), а не exe-файл. Вы можете создать установочный файл, который установит LabVIEW Run-Time Engine, любые драйверы устройств, и настройки оборудования в MAX, необходимые для запуска приложения". Вот так вот. Вам-то этот совет помог? Пакет инсталлятора не заменяет исполняемый файл - он его в себя включает. Помимо этого он может включать в себя все рантайнмы и драйвера, которые попросит пользователь (и это можно отключить). Им удобно осуществлять развёртывание, но все те же пакеты можно и по отдельности поставить. Включать доп драйвера и рантаймы таки желательно с пониманием того, что вы делаете, иначе получите просто многомегабайтную инсталляшку. Ответ помог тем, что сэкономил мне время. Я пол дня бился, пытаясь запихнуть необходимые мне драйвера в исполняемый файл. Оказывается такая функциональность просто не предусмотрена разработчиком. Получается,что при создании исполняемого файла из папки dependencies проекта компилируются только сами ссылки, но никак не объекты, на которые они ссылаются. Хотя, вот тоже вопрос! По сути драйвера управления приборами выполнены, как ВПП, но созданные пользователем ВПП компилируются целиком в исполняемый файл, а дрова почему то нет? Что мешает? Я могу, допустим написать ту же процедуру инициализации прибора средствами LabVIEW, оформить в виде ВПП и скомпилировать в exe, а готовый драйвер не могу?
Или я что то путаю? Да, кстати, может у кого есть, что почитать, кроме help на тему создания исполняемого приложения в LabVIEW, желательно на русском языке или корректный перевод helpa?


Professionalism
Tutorials
Gold
Black

kovn писал(а): Ответ помог тем, что сэкономил мне время. Я пол дня бился, пытаясь запихнуть необходимые мне драйвера в исполняемый файл. Оказывается такая функциональность просто не предусмотрена разработчиком. Получается,что при создании исполняемого файла из папки dependencies проекта компилируются только сами ссылки, но никак не объекты, на которые они ссылаются. Хотя, вот тоже вопрос! По сути драйвера управления приборами выполнены, как ВПП, но созданные пользователем ВПП компилируются целиком в исполняемый файл, а дрова почему то нет? Что мешает? Я могу, допустим написать ту же процедуру инициализации прибора средствами LabVIEW, оформить в виде ВПП и скомпилировать в exe, а готовый драйвер не могу?
Или я что то путаю?

Мне так думается, вы что-то делаете не так. Технически вроде бы ничто не препятствует тому, чтобы инструменты из instr.lib не попали в исполняемый файл. Скорее всего, либо там ещё сторонние библиотеки не находятся, либо вы пытаетесь запустить этот исполняемый файл на голой машине - там ведь помимо LabVIEW Run-Time ещё VISA скорей всего потребуется. Либо построение приложения, использующего драйвера имеет какие-то особенности, о которых мы не знаем. Надо бы разобраться.

А ответьте-ка, пожалуйста на вот такие вопросы (по идее это техподдержка NI должна была спросить):

- вы запускаете исполняемый файл на той же самой машине, где и компилировали или на другой?

"как только ему их подсовываешь, все работает"
- что именно и куда именно вы подсовываете, чтобы всё заработало?

- приложите пожалуйста сам драйвер из instr.lib как есть (там у Rohde&Schwarz целая куча драйверов).

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

Я это к тому, что там судя по всему где-то в другом месте грабли у вас. Ну просто любопытно, для расширения кругозора. так сказать.


Professionalism
Tutorials
Gold
Black

kovn писал(а): В прилагаемом .pdf описание в картинках.

А, теперь понятно. У вас есть динамическая библиотека - отсюда растут проблемы.

Ну, во-первых,, вы никогда не сможете засунуть dll в exe. Ну, то есть теоретически это возможно путём очень специальных ухищрений, но не в данном случае.
Соответственно при переносе исполняемого файла на другую машину вам также будет необходимо перенести и dll.
Кстати, очень рекомендую ознакомиться, что такое dll (это безотносительно LabVIEW)

По умолчанию все внешние dll попадают в папку \data, расположенную там же где и exe. Если такой папки нет, то можно попробовать добавить эту библиотеку в проект и указать расположение при создании приложения (support files кажется это там называется).

В данном случае произошло следующее - исполняемое приложение эту библиотеку не нашло, и выкатило диалог с просьбой указать место положение. Вы его указали, но оно отличается от того положение, которое записано в самих vi, в результате все vi, использующие эту библиотеку захотели перекомпилироваться. Но перекомпилироваться они никак не могут, ибо находятся в исполняемом файле - в результате приложение не нашло ничего лучшего, как сообщить, что загрузить их не смогло, потому что то ли передних панелей нет, то ли их там вообще нет (но на самом деле они там есть). Я сильно подозреваю, что вы просто папку data скопировать на другую машину забыли. Инсталлятор же про папку data знает и копирует также и требуемую dll - поэтому приложение после инсталляции работает.

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

На фоне этих подходов резко отличается концепция виртуальных приборов (vi). В этой статье пойдет речь о программном продукте LabView фирмы Nationals Instruments. Я только начинаю осваивать этот замечательный продукт, поэтому могу допускать неточности и ошибки. Спецы поправят :-)) Собственно что такое LabView?

Задача
У нас есть плата с микроконтроллером AVR, соединенная с компьютером по RS232. В контроллер залита прошивка, согласно которой контроллер измеряет значение напряжения на одном из входов АЦП, и передает код АЦП (от 0 до 1023) в компьютер по последовательному каналу. Необходимо написать программу для ПК, которая будет принимать поток данных от АЦП, отображать код АЦП, преобразовывать код АЦП в значение напряжения в вольтах, отображать значение напряжения в вольтах, строить график изменения напряжения во времени.

Ну наверное хватит лирики, начнем пожалуй!

Итак что нам потребуется для работы:


Запускаем LabView. В окне Getting Started выбираем пункт Blank Vi, тобишь новый виртуальный прибор.


Получаем вот такую штуку:


Итак что мы имеем. Рабочая область состоит из двух больших панелей Front Panel и Block Diagram. На лицевой панели мы будем составлять интерфейс нашей программы, используя элементы управления с панели Controls. Эти элементы представляют собой привычные нам ручки переменных резисторов, светодиоды, кнопки, стрелочные приборы, экран осциллографа и т.п. Они служат для ввода информации в программу и отображения результатов выполнения. На панели Block Diagram распологается непосредственно программный код. Тут надо немного отступить и пояснить принцип программирования на LabView. Небольшой пример. Принято работу над прогой начинать с оформления интерфейса, а затем реализации алгоритма работы на блок-диаграмме. Сделаем простейшую прогу умножения двух чисел. Для этого разместим на лицевой панели путем перетаскивания три элемента управления, скажем элементы Knob и Numeric Indicator для отображения результата.


Сформируем интерфейс как душа пожелает, например вот так:



Теперь нужно добавить на блок-диаграмму функцию умножения. Щелкаем ПКМ на блок-диаграмме и из палитры Numeric выбираем функцию умножения Multiply. Преносим ее на диаграмму. Стоит заметить, что LabView имеет просто огромный набор функций. Это и различная математика, статистика, анализ сигналов, PID регулирование, обработка видео, звука и изображений. Всего не перечислишь.


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

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

Для соединения элементов на блок-диаграмме используется инструмент Connect Wire с панели Tools. Выбираем его и рисуем наши соединения.


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


Как видно, ничего сложного вроде бы нет. Но в то же время LabView позволяет решать задачи любой сложности! Епт, система управления БАК на нем сделана! Так то.

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

Итак, что нам необходимо сделать. Сначала нужно настроить и проинициализировать последовательный порт. Запустить бесконечный цикл . В цикле мы используем функцию чтения из порта и принимаем информацию. Преобразуем инфу для отображения на графике, пересчитываем код АЦП в значение напряжения в вольтах. При выходе из цикла закрываем порт.
Так в интерфейсе нашей проги не будет никаких управляющих элементов кроме кнопки Стоп, а будет лишь отображение результата, мы поступим так: сначала создадим блок-диаграмму, а потом добавим недостающие элементы на лицевую панель. Хотя делать нужно наоборот! Но в данном случае так удобнее.

На панели блок-диаграммы помещаем из палитры Structures элемент While Loop, это наш бесконечный цикл. Обводим рамкой цикла область, достаточную для размещения внутри алгоритма. В правом нижнем углу есть красная точка, щелкнем по ней ПКМ и выберем Create Control. На лицевой панели у нас тут же появится кнопка Stop. При щелчке на ней наша прога завершится.



Нас интересуют два входа: Visa resourse name и Baud Rate (по умолчанию 9600). Таперь перейдем на лицевую панель и добавим необходимые компоненты, а именно экран отрисовки графика и метки для отображения кода АЦП и напряжения в вольтах.
Соответственно это элементы Waweform Chart c палитры Graph и два элемента Numeric Indicator с палитры Numeric.

Вернемся к блок-диаграмме и переместим появившиеся элементы внутрь цикла. Мы близимся к завершению! Единственное, нам нужно еще преобразовать строку символов, поступающих с выхода функции Read к формату, который переварят наши индикаторы. И еще реализовать простейшую математику по переводу кода АЦП в вольты. Ниже скрины лицевой панели и блок-диаграммы на данном этапе:



Для преобразования строки мы воспользуемся функцией Scan from string из палитры String. Помещаем ее внутрь цикла. Теперь математика. Для того чтобы преобразовать код АЦП в значение напряжения в вольтах нужно умножить код на величину опорного напряжения (в моем случае это пять вольт) и получившееся значение разделить на 1023 (так как АЦП имеет разрядность 10 бит). Необходимые функции умножения и деления, а также константы (5 и 1023) разместим в цикле. Скрины каждого соединения делать не буду, ибо и так картинок дофига. Приведу финальный скрин всех соединений. Там все предельно просто.


Я думаю все понятно, если будут вопросы спрашивайте в каментах. Вместе разберемся :-))) Тем временем прога готова.

Перейдем к нашему интерфейсу и немного настроим график. Выделим нижнее значение по оси Y и поставим 0. Выделем верхнее и поставим 5. Таким образом наша шкала по оси Y в диапазоне 0-5 вольт. Ну что, выбираем COM порт, вводим скорость обмена, запускаем по кнопке со стрелкой нашу прогу и яростно крутим резистор на плате, невозбранно наблюдая при этом на экране результат нашего труда. Щелкаем на кнопке Stop чтобы остановить прогу.


Как видите все достаточно просто. Данный пример это лишь мизерная часть всех возможностей LabView. Если кому поможет данная статья, буду рад. Только в коментах сильно не бейте я же не профи. Еще один маленький трюк. Если диаграмма стала похожа на Ктулху, можно попробовать воспользоваться кнопкой CleanUp Diagram. Она приведет диаграмму в более-менее божеский вид, но пользоваться надо осторожно. Вот результат ее работы


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

Спасибо. Вы потрясающие! Всего за месяц мы собрали нужную сумму в 500000 на хоккейную коробку для детского дома Аистенок. Из которых 125000+ было от вас, читателей EasyElectronics. Были даже переводы на 25000+ и просто поток платежей на 251 рубль. Это невероятно круто. Сейчас идет заключение договора и подготовка к строительству!

А я встрял на три года, как минимум, ежемесячной пахоты над статьями :)))))))))))) Спасибо вам за такой мощный пинок.

198 thoughts on “Знакомимся с LabView”

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

Автору Спасибо! Хорошая статья для начала.
Прочитал, и уже чтото да стало ясно.
Если я верно помню(не помню гто читал или говорили), то можно результаом делать в .EXE?

ТАм как то можно компилировать эти виртуальные приборы, что получается экзешник.

Это так, но для того чтобы перенести на другой комп нужно создавать не exe, а инсталлятор куда включен Run-Time Engine и другие используемые компоненты (если есть). Нужно поставить Run-Time Engine, а затем проинсталлировать прогу.

Разве? А у нас в виртуальной лаборатории оно работало экзешниками. Причем ничего предыварительно ставить не надо было.

Не не не, без Runtime engine на компе без LabView виртуальный прибор никогда не стартует. Видимо всетаки либо сама LabView, либо RT engine было там. Но более вероятно, что прога была написана не на LabView, а на LabWindows/ Там таки да, компилируется в exe, который можно запустить где угодно.

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

Возможно. Я не в курсе. Но, по моему проще поставить бесплатную RT Engine и дело в шляпе. Кроме того, есть такая вещь, как LabView Player, тоже вроде позволяет запускать программы на других компах, но я пока не пробовал. На днях постараюсь поэкспериментировать.

Спасибо большое за статью! У меня вопрос,
1.Количество байт что задает ? .
2.Если мы задали 200 то только когда Функции чтения приймет 200 байт дале будет выполняеться функция Scan from string ?

Большое спасибо ) Буду ждать с нетерпением следующих статей .

1. Ну собственно и задает количество байт, которое будет прочитано из порта. Я просто для примера 200 поставил. Эту константу можно заменить на контрол, и выбирать необходимое количество байт с лицевой панели.
2. Все верно, считывается заданное количество байт, и передается в буфер. Там данные доступны для других функций.

Риспект за статью!
Уже давно назревало испытать лаб вью для похожих дел.
Хотя, весьма успешно до этого юзал visual basic 6. Но там красивые контролы-приборы надо рисовать самому, а тут все годово! Кул!

О госпади. Наконец-то статья о LabView)))))
Очень полезная штука+к ней материала полно на официальном сайте!

Интересно, конечно. Только одного не пойму: она создает какой нить exe-шник, чтобы можно было не в среде запускать, а отдельно, без Lab?

Да, конечно. Можно прямо из LabView создать инсталлятор. Для того чтобы запускать программы, созданные в LabView на машине где она не установлена, необходимо установить на этот компьютер среду NI Run-Time Engine. Ее можно скачать с сайте National Instruments.

Спасибо! Хорошая статья для начала.
я уже больше года не могу приступить к изучению, из-за нехватки времени, хоть и тянет периодически. А тут раз прочитал, и уже чтото да стало ясно.
Чувство что как будто 30% сам уже сделал :) шучу.

Я года 3 назад тож взялся, накупил книг, потом как то забросил. Сейчас плотно занялся изучением.

Круче только !а_н_дронный! коллайдер.

А я уже 6 лет активно использую LabWindows от NI, вот только 8 и выше версии сильно не понравились, так и сижу на 7-ой. Очень удобная штука, и не очень сложная.

В принципе, если знать C, то почему бы и нет. А можно ужнать что не понравилось в версиях выше 7?

Спасибо за статью, если бы еще кто-то набрался храбрости и выдал подобное про Matlab, особенно в связке с DSP :).

Я считаю, что подобные пакеты нужны не разработчикам, а ученым, у которых есть какой-то прибор для измерения определённых параметров, подрубаемый к ПК, у которого нет определённого удобного способа вывода информации. Разработчик же всегда движется к уменьшению себестоимости и надёжности, в чем дорогие и нагруженные сторонние пакеты не помошники. Человеку, который способен быстро и качественно написать прошивку для сложного устройства не составляет большого труда разобраться в нужной теме и так же быстро и качественно написать легкую, стабильную и удобную программу выполняющую нужную задачу.
Это было имхо. не призываю этому свято следовать.
ЗЫ: Мне кажется, что я заболел программированием для любой архитектуры, с использованием наименьшего числа сторонних библиотек. У такого подхода есть большие плюсы в виде легковесности, скорости и простоте программ.

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

Здравствуйте, помогите пожалуйста новичку.

Возможно-ли сделать из vi файл.exe, чтобы при обращении к нему сразу открывался бы прибор без отображения menu bar(file,edit,view. help)?

Установка в File> Vi Properties>. ,как я понял, дает такую возможность, но к сожалению только после запуска самого прибора.

Файл будет запускаться на другой машине с LabVIEW Run-Time Engine.

Может есть варианты, как это сделать?

Здравствуйте, помогите пожалуйста новичку.

Возможно-ли сделать из vi файл.exe, чтобы при обращении к нему сразу открывался бы прибор без отображения menu bar(file,edit,view. help)?

Установка в File> Vi Properties>. ,как я понял, дает такую возможность, но к сожалению только после запуска самого прибора.

Файл будет запускаться на другой машине с LabVIEW Run-Time Engine.

Может есть варианты, как это сделать?

Для компиляции vi файла в exe есть пункт меню Tools -> Build Executable.
Для того что бы в откомпилированном файле не было меню бара, свойства Vi properties должны выглядеть вот так:

Спасибо за ответ.

Я так делал, но проблема в том, как я писал выше, что при обращении к ехе открывается прибор в котором menu bar отображается и лишь после запуска самого прибора кнопкой RUN or RUN CONT. вступают в действие те предустановки, которые были сделаны при создании ехе.

Мне нужно, если это возможно, чтобы при запуске ехе меню сразу не отображалось.

Тогда поставьте галочку в VI properties->Execution-> Run when opened

Спасибо. Ставил. Не помогает.

Меню бар исчезает только после старта прибора кнопкой "Run" or "Run cont"

Или я что-то делаю не так?

Может кто-нибудь сделает симуляцию у себя и сообщит результат?

Еxe стартуестся сразу после запуска, поэтому меню сразу не будет отображатся.

Большое Спасибо Всем. Советы очень помогли.

После restart и необходимых установок всё заработало как надо.

Правда остались еще вопросы. См. дальше по теме пожалуйста.

Например, если из прикрепленного файла сделать ехе с вышеоговоренными установками, запустить его, а затем нажать на кнопку
STOP, то появляется Menu bar. Как можно исключить этот момент?
А почему бы тебе не закрывать Front Panel после нажатия кнопки STOP?:confused:

Можно просто выключить комп. Даже мышки не надо.:)

Я новичок и хочу просто знать, это условие решаемо в принципе или нет.

Хотя реальная задача требует отсутствия в vi menu bar всё время пока он в работе.

Можно просто выключить комп. Даже мышки не надо.:)

Я новичок и хочу просто знать, это условие решаемо в принципе или нет.

Хотя реальная задача требует отсутствия в vi menu bar всё время пока он в работе.

Да. Я не могу сказать как обстоят дела с твоей версией LV, но с 8.х все это убирается!

B начале темы я указал, что у меня LV 8.0.

B начале темы я указал, что у меня LV 8.0.

Сорр. Прочитал внимательно тему и похоже что я тебя обманул, убрать менюбар после завершения работы top level vi не получиться.:(
Хотя можешь попробовать в ini файл, раздел Application, вставить следующею строчку: useWindowMenuBars=False

Можно просто выключить комп. Даже мышки не надо.:)

Я новичок и хочу просто знать, это условие решаемо в принципе или нет.

Хотя реальная задача требует отсутствия в vi menu bar всё время пока он в работе.

Решаемо. Добавь параллельно второй цикл - ничего выскакивать не будет

Решаемо. Добавь параллельно второй цикл - ничего выскакивать не будет


Спасибо. Я очень извиняюсь, но параллельно это как?
Цикл в цикл или есть ещё как то ?

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

Спасибо. Я очень извиняюсь, но параллельно это как?
Цикл в цикл или есть ещё как то ?

Да, как писалось выше - два цикла друг над другом.
Смысл в том, что по классическому представлению в GUI кпопка должна останавливать какой-нибудь процесс, а выход из приложения осуществляется нажатием на крестик в правом верхнем углу. Но поскольку у тебя процесс один - выход получается следующим: добавить еще один процесс. Простейший вариант это холостой цикл с задержкой внутри (чтобы процессорный ресурс не сильно жрал). Можно опять же, как уже говорилось закрывать окно при нажатии на кнопку Stop, это помимо предложенных вариантов можно сделать еще и с помощью Application Control -> Quit LabView.

Читайте также: