This is topic Обмен по DDE in forum Работа с приложениями (ODBC-SQL/OPC/DDE) at Форум TRACE MODE: техническая поддержка.


To visit this topic, use this URL:
http://forum.adastra.ru/ultimatebb.php/ubb/get_topic/f/41/t/000008.html

Posted by Grigorovskih (Участник № / Member № 1915) on :
 
Уважаемые Разработчики

Хотя мы обсуждали этот вопрос, не помню правда в каком разделе, вернусь опять к нему. Несколько вопросов:
1.Какая максимальная длина получаемой РТМом строки?
2.Как можно её увеличить?
3.Какой формат этой строки возможен, строго ли он задан?
4.Возможно ли получать эту строку в виде набора символов, а потом в программе производить разбор (интерпретацию и преобразование) этих данных?

Заранее благодарим!
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Теоретически строка может содержать 255 символов. Однако при обмене данными между внешним приложением и МРВ необходимо соблюдать соглашение о типе данных. Ваш п.4 реализуется разработкой пользовательского драйвера.
 
Posted by Grigorovskih (Участник № / Member № 1915) on :
 
Как ТМ интерпретирует получаемую строку?
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Конвертирует полученные символы (до служебного, завершающего строку) в тип данных, соответствующий классу канала или типу данных атрибута канала.
 
Posted by Grigorovskih (Участник № / Member № 1915) on :
 
Т.е. есть возможность привязать полученную строку ч/з атрибут канала - 80 (комментарий) и потом проделать с полученной строкой необходимые преобразования?
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Да, но с учетом максимальной длины строки комментария - 40 символов.
 
Posted by Grigorovskih (Участник № / Member № 1915) on :
 
Спасибо за ответ, но для нас это только теоретически!
А если практически:
Ещё вопрос тогда:
Как мне можно реально привязать этот атрибут 80 к источнику DDE, или передать в этот атрибут ч/з что нибудь? Каким способом это можно сделать?
 
Posted by Grigorovskih (Участник № / Member № 1915) on :
 
т.к. если нет привязки компонента DDE в источниках к каналу то нет и опроса по DDE соответственно!
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Добрый день, для передачи строки по DDE из приложения в атрибут Комментарий канала МРВ должен выступать в роли сервера. В документации - Распределенные системы/Обмен по DDE и NetDDE/Задание значений атрибутов приведены макросы VBA для Excel, реализующие данный механизм.
 
Posted by Grigorovskih (Участник № / Member № 1915) on :
 
Эксель нас не интересует. А МРВ работает в качестве клиента!
Есть DDE server. он возвращает стрковое значение длинна произвольная! Каким образом мне получить полученное значение в виде строки , для обработки программным методом! Может пора ввести канал STRING!

[ 02.05.2007, 08:40: Сообщение отредактировал / Message edited by AdAstra Technical Support ]
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Введение канала STRING не планируется.
 
Posted by ArguS (Участник № / Member № 3137) on :
 
На Topic: TECHNICAL SUPPORT TRACE MODE 5 » Работа в MS Windows (ODBC/DDE/OPC/NET) / Working under MS Windows » Обмен по NetDDE
обсуждалась тема "получать данные из Trace Mode по механизму NetDDE в Excel".
Прошу выслать настройки и формат запроса, вводимый в ячейку Excel на argus-2005@rambler.ru
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
У Вас идет обмен по NуеВВУ или просто по DDE? Т.е. Excel и узел Trace Mode у Вас запущены на одном компьютере или нет?

Если на одном, то вся процедура описана в нашем быстром старте.

Если на разных, то процедура настройки описана в нашей документации в главе "Настройка ОС для обмена по NetDDE". А формат запроса описан в главе "Обмен приложение - МРВ как NetDDE-сервер"
 
Posted by drooha (Участник № / Member № 3306) on :
 
Сделал проект где МРВ выступает в роли DDE-клиента, на примере "Быстрый старт". Но данные в МРВ не передаются. В чем может быть причина? (Версия Excel 2003 SP2).
 
Posted by drooha (Участник № / Member № 3306) on :
 
Спасибо Разобрался. Такой вопрос, Индивидуальный номер узла я так понимаю это и есть тот ID во всплывающем спеске,когда "мышкой" наводишь на узел? И тогда если МРВ выступает в роли сервера то в ячейку Excel мы должны написать =RTM_1-Название узла+196654-тот самый ID ну и тд.?
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Индивидуальный номер узла в данном случае это ординал. Т.е. та цифра, которая пишется на конце файлов узла в папке.
 
Posted by drooha (Участник № / Member № 3306) on :
 
Есть DDE server. Он возвращает строковое значение, длинна произвольная! Каким образом мне получить полученное значение в виде строки в МРВ, который выступает в качестве Клиента! Работаю в ТМ6.06, если в этом релизе нельзя это осуществить, может тогда в релизе ТМ6.06.3?

C уважением Андрей.
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
В Trace Mode не поддерживается обмен строками по DDE.
 
Posted by drooha (Участник № / Member № 3306) on :
 
Написал библиотеку, которая создаёт подключение к DDE серверу. При отладке программы в редакторе ТМ сервер показывает что соединение установленно, но при запуске МРВ соединения не происходит. В чём может быть причина?

С уважением Андрей.
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Библитека должна размещаться рядом с файлом rtc.exe (или rtcx.exe, если запускается МРВ).
Надо посмотреть в протоколе профайлера и в файле tm6_log.txt, нет ли сообщений об ошибках, связанных с соответствующей программой.
 
Posted by drooha (Участник № / Member № 3306) on :
 
Всё разместил как нужно, ошибок в в протоколе профайлера и в файле tm6_log.txt не обнаружено.
Все остальные функции библиотеки работают, но вот которая создаёт подключение к DDE серверу ни как не хочет к нему подключатся, хотя эта функция выполняется и возвращает значение о том что она выполнилась.(Извиняюсь, но если Вы меня не поняли, при трассировке программы в редакторе ТМ по шагам или при запуске программы там же, все функции из библиотеки выполняются втом числе и функция подключения к DDE серверу, а при запуске МРВ из под среды разработки подключение к DDE серверу не происходит)

С уважением Андрей.
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
И IDE и RTM работают с внешними библиотеками одинаково.
Вопрос в том, какие требования внешняя библиотека предъявляет к среде функционирования.
В частности, библиотека должна апеллировать к собственному окну, т.к. у RTM нет окна.
Вообще, следует посмотреть сообщения API, обслуживающего DDE-интерфейс.

Обычно DDE-серверы имеют и ODBC-интерфейс (например, Excel). В этом случае можно было бы использовать обращение через SQL-запросы.
 
Posted by drooha (Участник № / Member № 3306) on :
 
Буду очень признателен если приведёте пример такого запроса, например к Excel.

За ранее благодарю Андрей.
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Порядок установки связей с любыми приложениями, которые регистрируются в ОС в качестве ODBC-источников данных, описан в разделе "Распределенные АСУ/Обмен с базами данных".
 
Posted by drooha (Участник № / Member № 3306) on :
 
И всётаки возвращаюсь к DDE (к сожелению наш сервер не имеет ODBC-интерфейса).
У меня требования следующие требования к библиотеке:
-Подключиться к DDE серверу;
-Принять значение в виде строки;
-Сделать необходимые преобразования;
-Передать полученный результат в TM.
Да, и что Вы имели в виду говоря, что библиотека должна апеллировать к собственному окну?

С уважением Андрей.
 
Posted by Romсheg (Участник № / Member № 3792) on :
 
Что-от похожее может возникать при вызове функций из внешних DLL, если в ТМ их переменные типа int (или возвращаемые значения) не указаны как long. При чем в самой ИС отладка может работать прекрасно, а вот в МРВ потом все начнет сыпаться. Рекомендую все внешние переменные типа int указывать как long! Но это как одно из предположений.
 
Posted by drooha (Участник № / Member № 3306) on :
 
Конечно спасибо,но это не помогло.
 
Posted by Romсheg (Участник № / Member № 3792) on :
 
А при отладке программы в ИС все действительно работает и ваша DLL возвращает значение?
Вам остается только через удаленное подключение к приложению подключиться к МРВ из среды разработки вашей DLL и посмотреть где именно происходит ошибка. Если в вашей DLL - то тут же получите точку в коде. Если в МРВ - тоже получите соответствующее сообщение.
 
Posted by drooha (Участник № / Member № 3306) on :
 
Вот именно что ошибок ни каких не возникает. При отладке в ИС, всё замечательно, все функции возвращают свои значения ну и соответственно происходит подключение к DDE серверу.
Такое ощущение что при работе в МРВ сам МРВ блокирует подключение к DDE серверу хотя возвращает значение, о том, что функция выполнилась
 
Posted by drooha (Участник № / Member № 3306) on :
 
И всётаки хотелось бы немного помучить техподдержку.
У меня требования следующие требования к библиотеке:
-Подключиться к DDE серверу;
-Принять значение в виде строки;
-Сделать необходимые преобразования;
-Передать полученный результат в TM.
Да, и что Вы имели в виду говоряо том, что библиотека должна апеллировать к собственному окну?

С уважением Андрей!
 
Posted by drooha (Участник № / Member № 3306) on :
 
Уважаемая тех поддержка прошу ответить, на вопрос представленный выше.

С уважением Андрей!
 
Posted by drooha (Участник № / Member № 3306) on :
 
Возникла ещё одна проблема:
При посылке значения на сервер, например, числа 2 - на сервер приходит строка вида 2<<<<<<<<<<<<<<<<юою
В редакторе переменной DDE, параметр РЕЖИМ стоит в REQ/POKE[data] т.е. запрос не должен завершаться специальными символами и на сервер должно отправляться число 2.
В чем может быть причина?
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
1. DDE-сервер шлет свои строки в окно приложения. В ИС этим окном высупает сама ИС. В МРВ такого окна нет. Его Вам нужно создавать самим. При этом оно должно правильно работать со стеком сообщений Windows.

2. Так как запрос не завершается специальным символом, то считывается весь буфер, куда, возможно, попадают просто символы набранные с клавиатуры.
 
Posted by drooha (Участник № / Member № 3306) on :
 
Хорошо, получается так что это буфер клавиатуры? А как тогда этот буфер можно очистить?
Писать dll на очистку буфера перед загрузкой RTM или же очистку этого буфера можно организовать средствами ТМ?
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Сервер должен уметь отсекать "мусор", так как в лишние символы могут возникать не только до запуска RTM, но и в момент его работы.
 
Posted by raven999 (Участник № / Member № 4537) on :
 
Здравствуйте!
Можно выслать пример обмена по NetDDE между 2-мя МРВ. Попытался сделать самостоятельно, не получилось. На локальном компьютере обмен по DDE в обе стороны с Excel работает, а вот сетевой обмен не получился. И какие настройки Windows XP необходимо сделать!

Спасибо!
Вот только что понял, что надо включить службу NetDDE, так как он отключена по умолчанию.
Но все равно примерчик пожалуйста пришлите!
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Отправлено.

Топик закрываю.
 


Новости АСУ ТП / News | SCADA / HMI | Обучение / Trainings | Свяжитесь с нами / Contact Us



Powered by Infopop Corporation
UBB.classic™ 6.7.2