Добрый день. У меня возник такой вопрос. Можно ли связать Trace Mode 6.07 с Delphi и как это организовать. Основная задача сейчас, которая меня интересует, это переброс вычисленных значений переменных в файл Delphi. Как это можно реальзовать? Желательно получение в итоге файла с расширением dll. Спасибо.
Posted by Romсheg (Участник № / Member № 3792) on :
вы сами поняли, что спросили?
Лучше поясните, что вообще вы хотите сделать, а то по описанию - Вы пытаетесь скрестить носорога с петухом, да так, чтобы полученный гибрид вам еще и яйца нес...
Posted by iliouchine (Участник № / Member № 4686) on :
Спасибо за ответ. Поясню более подробно, какая имеется проблема. Просто есть 2 проекта. Один составлен в Delphi, другой на Trace Mode 6.07. Необходимо, чтобы вычисленные данные в Trace Mode 6.07 использовались в другой программе, написанной на Delphi. К примеру есть две переменные, вычисленные в программме в Trace Mode 6.07 в реальном времени передавались либо в файл, доступный для прочтения в Delphi, либо хотя бы в текстовый файл, откуда можно было забрать эти переменные. То есть алгоритм написан на языке Техно ST, а передать вычисленные значения переменных в реальном времени нужно в программу, написанную на Delphi. Так понятнее написано, ничего скрещивать не собираюсь, просто использовать данные одной системы в другой. Можно даже назвать это в каком то смысле конвертацией.
Posted by Romсheg (Участник № / Member № 3792) on :
Не важно на чем приложение написано, вам надо из ТМ6 данные в другое внешнее приложение передать. Сделать такое можно следующими путями: 1) через штатные интерфейсы вашего внешнего приложения (которое на Дельфи). Если в нем есть расшаренные функции для внешних вызовов в формате WinAPI, то вы можете напрямую их вызывать из программы ST в МРВ ТМ6 через механизм внешней библиотеки. Либо написать свою шлюзовую dll с функцией Shared Memory, которая будет некоторым транзактором данных между двумя приложениями. Если вышесказанное вам на 50 или более % не понятно, то лучше не спрашивайте меня как это сделать, это не для любителей метод - тут надо будет быть профи в программировании. 2) через стандартные логические протоколы. Ваше внешнее ПО поддерживает какой-либо протокол, например - ModBusTCP или ODBC? Если да - из проекта ТМ6 обращаемся по этому интерфейсу к нему. Если это приложение само в себе - что-то вроде черного ящика, то идем дальше. 3) через внешний файл - файл может формировать сам ТМ6: у канала Call есть режим работы в котором он может значения своих аргументов сохранять\подчитывать через внешний текстовый файл (читайте справку). Структура этого файла простейшая, так что если у вас есть исходный код вашего внешнего приложения, то легко сделаете его поддержку на подчитывание. Тогда из МРВ формируете таким каналом данные по аргументам, привязанным к нужным параметрам проекта в файл, а в приложении подчитываете этот файл.
Posted by iliouchine (Участник № / Member № 4686) on :
Большое спасибо за ответ и за помощь. Теперь хоть более понятно, как можно осуществить связь с другим проектом. Если у вас есть программа-пример по организации записи в файл атрибута WFile канала CALL, то буду очень признателен. Просто уже пробывал организовывать привязку канала Float с вычисленной выходной переменной в Trace Mode 6.07 к атрибуту WFile канала CALL. В итоге, как в справке написано создается файл канала CALL, но привязанное значение вычисленной выходной переменной там отсутствует, то есть текстовый файл пустой. Какого типа должны быть связанные каналы, а именно CALL и Float, чтобы значения перекидывались в текстовый файл. В принципе, я думаю, если эти значения можно будет перебрасывать в текстовый файл, то проблемы связи с Delphi не будет. Но первые два способа тоже буду пробывать, но через внешний файл просто проще будет, хотя бы для начала. Удачного дня.
Posted by Romсheg (Участник № / Member № 3792) on :
По вопросам работы канала Call - это уже лучше к техподдержке, у них наверняка есть и примеры проектов и ответы, почему у вас не работает как надо.
Posted by iliouchine (Участник № / Member № 4686) on :
Большое спасибо. Удачи.
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Аргумент канала CALL надо привязать к каналу FLOAT с вычисленной переменной.
В атрибут WFile канала CALL надо посылать управление из программы или с экрана. Надо иметь в виду, что этот атрибут обнуляется автоматически по исполнении экспорта. Если Вы будете осуществлять программное управление экспортом в текстовый файл, необходимо предусмотреть, чтобы управление осуществлялось однократно по выбранному Вами событию. Один из вариантов - условный оператор в ST-программе, в котором при фиксации условия оператор THEN выдает нужное управление, а оператор ELSE никакого управления не выдает.
Posted by iliouchine (Участник № / Member № 4686) on :