Взаимодействие с другими программами

Темы связанные с инженерными разработками, но не подходящие в другие ветки форума
Ответить
BIAs
beginner
beginner
Сообщения: 11
Зарегистрирован: 03 окт 2015, 20:07
Версия LabVIEW: 15
Контактная информация:

Взаимодействие с другими программами

Сообщение BIAs »

Добрый день дорогие форумчане!
Появился вопрос, как подружить LV с другой программой, написанной на C Sharp, я вижу только вариант переписать программу с C Sharp на LC, но это процесс не быстрый, так как придется вникать в код написанной программы.В самой программе на C sharp надо вбивать коэффициенты деления и нажимать одну кнопку. Скорее всего надо будет переписывать программу на LV, но все же, надежда умирает последней.
Заранее спасибо!
AlexanderKonoval
developer
developer
Сообщения: 257
Зарегистрирован: 03 янв 2014, 19:37
Версия LabVIEW: 2016
Откуда: Украина, Киев
Контактная информация:

Re: Взаимодействие с другими программами

Сообщение AlexanderKonoval »

что имеется ввиду "подружить"?
колдооооовствооооо! (С)
AndreyDmitriev

Activity Professionalism Tutorials Gold Black
VIP
VIP
Сообщения: 1327
Зарегистрирован: 03 фев 2010, 00:42
Награды: 6
Версия LabVIEW: 6.1 - 2024
Откуда: Германия
Благодарил (а): 1 раз
Поблагодарили: 38 раз
Контактная информация:

Re: Взаимодействие с другими программами

Сообщение AndreyDmitriev »

Есть целая куча способов, как это дело подружить.
Самый простой - дописываете на С# .net сборку, и её пользуете в LabVIEW для коммуникации. Можно и наоборот поступить - сделать сборку на LabVIEW, и её использовать в C#, таким образом сведёте взаимодействие к LabVIEW<->LabVIEW. Другие способы тоже есть - можно сделать классическую DLL и юзать её (ну, тут придётся чуть повозиться с вызовом неуправляемого кода из управляемого (managed я имею ввиду). Можно использовать банально tcp через localhost - тут плюс в том, что это будет работать, даже если две программы будут разнесены на разные компьютеры. Можно и udp использовать, если передаётся что-то типа видеопотока. Можно Pipes использовать. Разделяемую память (shared memory) тоже никто не отменял - тут знание WinAPI потребуется. Можно и Shared Variables использовать (библиотеку для C# можно стащить из CVI), а можно и на LabVIEW ответную часть сделать. DataSocket - тоже будет работать. В принципе можно исхитриться и в C# даже интерфейс встроить. В С++ такое я делал однажды, когда к программе на плюсах подключается LabVIEW DLL, интерфейс из которой вставляется в форму как дочернее окно, так что пользователь даже не догадывается, что части программы на разных языках написаны.
Аватара пользователя
dadreamer

Activity Professionalism Автор
professor
professor
Сообщения: 3926
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Версия LabVIEW: 2.5 — 2022
Благодарил (а): 11 раз
Поблагодарили: 126 раз
Контактная информация:

Re: Взаимодействие с другими программами

Сообщение dadreamer »

BIAs писал(а):В самой программе на C sharp надо вбивать коэффициенты деления и нажимать одну кнопку.
То есть, из :labview: нужно передать эти коэффициенты и нажать кнопку, а после - забрать результат вычислений? Тогда проще всего в виде динамической библиотеки оформить или на худой конец как консольное приложение.
BIAs
beginner
beginner
Сообщения: 11
Зарегистрирован: 03 окт 2015, 20:07
Версия LabVIEW: 15
Контактная информация:

Re: Взаимодействие с другими программами

Сообщение BIAs »

Всем спасибо за ответы.
Переговорив с разработчиком программы С#, он сказал, что переписывать прогу под DLL достаточно запарно, ну и на первый момент мы решили задачу весьма вульгарным способом, но в дальнейшем я думаю напишу приложение аналог на LV.
Ну и кому интересно решение, вкратце опишу его:
Сразу же скажу что решение весьма грубое и не рациональное , но в поставленные сроки, и этот вариант кажется допустимым.
В качестве контроллера мы используем Ethernet модуль (http://www.kernelchip.ru/Jerome.php), это не реклама, хотя, может кто и заинтересуется, весьма простой и доступный вариант. Ну и у данного модуля есть система CAT с помощью которой, можно настроить реакцию модуля на определенные события на входных линиях модуля.
Благодаря этому, наш человек модернизировал прогу на C#, что бы, при поступления импульса на вход контроллера, коэффициент деления инкрементировался или декрементировался, и затем происходила запись данных.
Таким образом, в LV будет использоваться помимо основных приборов измерения, еще один источник питания, который будет формировать управляющий импульс на контроллер.
Если что то не понятно, спрашивайте, всегда рад вопросам. Ну и конечно от советов никогда не откажусь.
Ответить
  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Общие»