как общаться между labview и программным обеспечением DM

Здравствуйте, мне нужно использовать программное обеспечение DM для анализа текстового файла и получения чисел. Каждое число было отправлено в программное обеспечение Labview, которое управляет движущейся сценой. Затем Labview сообщит, что все готово, после чего DM сделает снимок и сохранит файлы. Итак, как это можно сделать? Я нашел несколько образцов со сценарием DM. Пожалуйста, дайте направление. Спасибо.


person DS.Li    schedule 08.07.2017    source источник


Ответы (2)


Если скорость не проблема, вы можете заставить Labview сохранять пустой .txt. Ваше программное обеспечение dm может проверить, существует ли файл, и сделать снимок, как только он появится. Конечно, существуют лучшие, более быстрые и безопасные методы, но я не знаю, насколько универсально ваше программное обеспечение dm. Виртуальный com-порт например, ActiveX, есть много вариантов заставить программы общаться друг с другом.

person Gelliant    schedule 08.07.2017

В текущем DigitalMicrograph не так много возможностей «внешнего» или «внутреннего» общения, а некоторые параметры доступны только в более поздних версиях GMS. Я также не знаю, какие опции есть в Labview, поэтому вам нужно выяснить, что работает, а что нет. Предложения:

Если вы используете GMS 2.3 или более позднюю версию, вы можете использовать команду LaunchExternalProcess() для запуска любой процедуры из DigitalMicrograph точно так же, как из командной строки.

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

Если вы используете GMS 3.1 или более позднюю версию, вы можете сделать наоборот и заставить внешнюю программу вызвать DigitalMicrograph.exe с параметром командной строки, чтобы запустить сценарий DM.

По сути, это обратная сторона первого предложения. Labview нужно будет «вызывать» DigitalMicrograph всякий раз, когда требуется выполнить следующее действие. Я недостаточно знаю Labview, чтобы судить, возможно это или нет.

Существуют скриптовые команды для последовательной связи через COM-порт (RS232) при условии, что в вашей установке есть SerialControl.dll в папке плагинов.

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

Number SPOpen( Number port, Number baud, Number stop, Number parity, Number data )
Number SPOpen( String prefix )
void SPClose( Number serialPortL )
Number SPSendString( Number serialPortL, String string )
Number SPSendHex( Number serialPortL, String string )
void SPFlushInput( Number serialPortL )
Number SPGetPendingBytes( Number serialPortL )
Number SPGetTime(  )
String SPReceiveString( Number serialPortL, Number maxLength, NumberVariable actual )
String SPReceiveHexString( Number serialPortL, Number maxLength, NumberVariable actual )
void SPSetRTS( Number serialPortL, Boolean on )
void SPSetDTR( Number serialPortL, Boolean on )

Вы также можете установить «связь» с обходным путем, как предложил Геллиант в своем ответе. DM-скрипт может «отслеживать» определенную папку на жестком диске и запускать определенные действия всякий раз, когда (конкретный) файл в этой папке создается или изменяется.

Если Labview способен на что-то подобное, этот метод «записи на диск» и «отслеживания изменений» можно использовать для того, чтобы две программы работали синхронно друг с другом.

Если Labview не поддерживает это напрямую, вы можете добиться аналогичной «взломанной» синхронизации, используя сторонний «скриптовый» язык для общей системы. Я лично использовал программное обеспечение под названием AutoIt в прошлом для синхронизации несовместимого программного обеспечения для управления аппаратное обеспечение.

Если вы знаете программирование на C++, вы можете получить "Software Development Kit (SDK)" для DigitalMicrograph и создать свой собственный подключаемый модуль Labview-коммуникаций для DigitalMicrograph.

Этот вариант, конечно, самый универсальный, так как вы ограничены только тем, чего можете достичь с помощью собственного кода C++. Недостатком является то, что вам может потребоваться перекомпилировать плагин-DLL для разных версий DigitalMicrograph.

person BmyGuest    schedule 09.07.2017
comment
Labview может вызывать стороннюю программу через командную строку и прикреплять к ней два параметра. - person D.J. Klomp; 10.07.2017