Как происходит обмен данными между различными приложениями Windows

Обновлено: 02.07.2024

Динамический обмен данными (DDE)

MATLAB предоставляет функции, которые позволяют MATLAB получать доступ к другим приложениям Windows, а другим приложениям Windows — получать доступ к MATLAB в широком диапазоне контекстов. Эти функции используют динамический обмен данными (DDE) — программное обеспечение, которое позволяет приложениям Microsoft Windows взаимодействовать друг с другом путем обмена данными.

В этом разделе описывается использование DDE в MATLAB:

Концепции и терминология DDE

Приложения взаимодействуют друг с другом, устанавливая диалог DDE. Приложение, которое инициирует диалог, называется клиент. Приложение, которое отвечает клиентскому приложению, называется сервером.

Когда клиентское приложение инициирует диалог DDE, оно должно указать два параметра DDE, определенные сервером:

    Имя приложения, с которым оно намеревается вести диалог, называемое название службы. Тема диалога, называемая topic.

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

Во время диалога DDE клиентское и серверное приложения обмениваются данными, касающимися элементов. Элемент – это ссылка на данные, которые важны для обоих приложений в диалоге. Любое приложение может изменить элемент во время разговора. Эти концепции более подробно обсуждаются ниже.

Имя службы

Каждое приложение, которое может быть сервером DDE, имеет уникальное имя службы. Имя службы обычно представляет собой имя исполняемого файла приложения без расширения. Имена сервисов не чувствительны к регистру. Вот некоторые часто используемые названия служб:

    Имя службы для MATLAB — Matlab. Имя службы для Microsoft Word для Windows — WinWord. Имя службы для Microsoft Excel — Excel.

Названия служб других приложений Windows см. в документации по приложениям.

Тема определяет тему диалога DDE и обычно имеет значение как для клиентского, так и для серверного приложений. Названия тем не чувствительны к регистру. Темы MATLAB — System и Engine — обсуждаются в разделе Доступ к MATLAB как к серверу. Большинство приложений поддерживают тему Система и как минимум еще одну тему. Обратитесь к документации вашего приложения для получения информации о поддерживаемых темах.

Каждая тема поддерживает один или несколько элементов. Элемент идентифицирует данные, передаваемые во время диалога DDE. Чувствительность элементов к регистру зависит от приложения. Элементы MATLAB Engine чувствительны к регистру, если они относятся к матрицам, потому что имена матриц чувствительны к регистру.

Форматы буфера обмена

DDE использует форматы буфера обмена Windows для форматирования данных, пересылаемых между приложениями. Как клиент, MATLAB поддерживает только текстовый формат. В качестве сервера MATLAB поддерживает форматы Text, Metafilepict и XLTable, описанные ниже:

В Windows предусмотрено несколько способов передачи данных между приложениями. Одним из способов является использование протокола динамического обмена данными (DDE). Протокол DDE представляет собой набор сообщений и указаний. Он отправляет сообщения между приложениями, которые совместно используют данные, и использует общую память для обмена данными между приложениями. Приложения могут использовать протокол DDE для однократной передачи данных и для непрерывного обмена, при котором приложения обмениваются обновлениями по мере появления новых данных.

Windows также поддерживает библиотеку управления динамическим обменом данными (DDEML). DDEML — это библиотека динамической компоновки (DLL), которую приложения могут использовать для обмена данными. DDEML предоставляет функции и сообщения, которые упрощают задачу добавления возможностей DDE в приложение. Вместо прямой отправки, публикации и обработки сообщений DDE приложение использует функции DDEML для управления диалогами DDE. (Диалог DDE — это взаимодействие между клиентскими и серверными приложениями.)

DDEML также предоставляет средство для управления строками и данными, которые совместно используются приложениями DDE. Вместо использования атомов и указателей на объекты общей памяти приложения DDE создают и обмениваются дескрипторами строк, которые идентифицируют строки, и дескрипторами данных, которые идентифицируют объекты памяти. DDEML также позволяет серверному приложению регистрировать поддерживаемые им имена служб. Имена транслируются другим приложениям в системе, которые могут использовать их для подключения к серверу.Кроме того, DDEML обеспечивает совместимость между приложениями DDE, заставляя их последовательно реализовывать протокол DDE.

Существующие приложения, использующие протокол DDE на основе сообщений, полностью совместимы с приложениями, использующими DDEML. То есть приложение, использующее DDE на основе сообщений, может устанавливать диалоги и выполнять транзакции с приложениями, использующими DDEML. Из-за многих преимуществ DDEML новые приложения должны использовать его, а не сообщения DDE. Чтобы использовать элементы API DDEML, необходимо включить заголовочный файл DDEML в исходные файлы, связать с библиотекой DDEML и убедиться, что библиотека динамической компоновки DDEML указана в системном пути поиска.

В этом разделе обсуждаются следующие темы.

Протокол динамического обмена данными

Поскольку архитектура Windows основана на сообщениях, передача сообщений является наиболее подходящим методом для автоматической передачи информации между приложениями. Однако сообщения содержат только два параметра (wParam и lParam) для передачи данных. В результате эти параметры должны косвенно ссылаться на другие фрагменты данных, когда между приложениями передается более нескольких слов информации. Протокол DDE точно определяет, как приложения должны использовать параметры wParam и lParam для передачи больших фрагментов данных с помощью глобальных атомов и дескрипторов общей памяти. Протокол DDE имеет определенные правила для выделения и удаления глобальных атомов и объектов общей памяти.

Глобальный атом — это ссылка на строку символов. В протоколе DDE атомы идентифицируют приложения, обменивающиеся данными, характер обмениваемых данных и сами элементы данных. Дополнительные сведения об атомах см. в разделе Об атомах.

Использование для динамического обмена данными Windows

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

DDE можно использовать для реализации широкого спектра функций приложения, например:

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

Динамический обмен данными с точки зрения пользователя

Следующий пример иллюстрирует взаимодействие двух приложений DDE с точки зрения пользователя.

Пользователь электронной таблицы хочет использовать Microsoft Excel для отслеживания цены определенной акции на Нью-Йоркской фондовой бирже. У пользователя есть приложение под названием Quote, которое, в свою очередь, имеет доступ к данным NYSE. Диалог DDE между Excel и Quote происходит следующим образом:

  • Пользователь инициирует беседу, указав название приложения (Quote), которое будет предоставлять данные, и конкретную интересующую тему (NYSE). Результирующий диалог DDE используется для запроса котировок по определенным акциям.
  • Excel рассылает имена приложений и разделов всем приложениям DDE, работающим в данный момент в системе. Quote отвечает, устанавливая диалог с Excel на тему NYSE.
  • Затем пользователь может создать формулу электронной таблицы в ячейке, которая запрашивает автоматическое обновление электронной таблицы при каждом изменении котировки конкретной акции. Например, пользователь может запросить автоматическое обновление всякий раз, когда происходит изменение цены продажи акций ZAXX, указав следующую формулу Excel: ='Quote'|'NYSE'!ZAXX
  • Пользователь может прекратить автоматическое обновление котировок акций ZAXX в любое время. Другие ссылки на данные, которые были установлены отдельно (например, для котировок других акций), по-прежнему останутся активными в том же диалоге NYSE.
  • Пользователь также может завершить весь диалог между Excel и Quote по теме NYSE, чтобы нельзя было установить конкретные ссылки на данные по этой теме без начала нового диалога.

Концепции динамического обмена данными

В следующих разделах объясняются важные понятия и терминология, которые являются ключевыми для понимания динамического обмена данными.

Клиент, сервер и диалог

Говорят, что два приложения, участвующие в DDE, участвуют в диалоге DDE. Приложение, которое инициирует диалог, является клиентским приложением DDE; приложение, которое отвечает клиенту, является серверным приложением DDE.Приложение может участвовать в нескольких диалогах одновременно, выступая в качестве клиента в одних и в качестве сервера в других.

Диалог DDE происходит между двумя окнами, по одному для каждого из участвующих приложений. Окно может быть главным окном приложения; окно, связанное с конкретным документом, как в приложении многодокументного интерфейса (MDI); или скрытое (невидимое) окно, единственной целью которого является обработка сообщений DDE.

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

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

Названия приложений, тем и элементов

Протокол DDE идентифицирует единицы данных, передаваемые между клиентом и сервером, с помощью трехуровневой иерархии имен приложений, тем и элементов.

Каждый диалог DDE однозначно определяется именем приложения и темой. В начале диалога DDE клиент и сервер определяют имя и тему приложения. Имя приложения обычно является именем серверного приложения. Например, когда Excel выступает в качестве сервера в диалоге, имя приложения — Excel.

Тема DDE – это общая классификация данных, в рамках которой во время разговора могут "обсуждаться" (обменяться) несколько элементов данных. Для приложений, работающих с документами в виде файлов, тема обычно представляет собой имя файла. Для других приложений тема — это имя, относящееся к конкретному приложению.

Поскольку дескрипторы окна клиента и сервера вместе идентифицируют диалог DDE, имя приложения и тема, которые определяют диалог, не могут быть изменены в ходе диалога.

Элемент данных DDE — это информация, относящаяся к теме диалога, которой обмениваются приложения. Значения элемента данных могут передаваться с сервера на клиент или с клиента на сервер. Данные можно передавать в любом из стандартных форматов буфера обмена или в зарегистрированном формате буфера обмена. Специальный зарегистрированный формат с именем Link идентифицирует элемент в диалоге DDE. Дополнительные сведения о форматах буфера обмена см. в разделе «Буфер обмена».

Системная тема

Приложения должны постоянно поддерживать системную тему. Этот раздел предоставляет контекст для информации, которая может представлять общий интерес для другого приложения.

Значения элементов данных должны отображаться в формате буфера обмена CF_TEXT. Отдельные элементы значений элемента для системной темы должны быть разделены символами табуляции. В следующей таблице предлагаются некоторые элементы системной темы.

Элемент Описание
Форматы Разделенный табуляцией список форматов буфера обмена, которые может отображать приложение. Как правило, форматы CF_ перечислены с удаленной частью имен "CF_" (например, CF_TEXT указан как "TEXT").
Справка Текст, который кратко объясняет, как использовать сервер DDE.
ReturnMessage Вспомогательная информация для последнего использовавшегося сообщения WM_DDE_ACK. Этот элемент полезен, когда требуется более восьми битов возвращаемых данных для конкретного приложения.
Status Индикация текущего состояния приложения. Когда сервер получает сообщение WM_DDE_REQUEST для этого системного элемента, он должен ответить, отправив сообщение WM_DDE_DATA со строкой, содержащей либо Busy, либо Ready, в зависимости от ситуации.
SysItems< /td> Список элементов системной темы, поддерживаемых приложением.
TopicItemList Аналогичен элементу SystemItems, за исключением того, что должен поддерживаться TopicItemList для каждой темы, кроме системной темы. Это позволяет просматривать элементы, поддерживаемые в любой теме. Если элементы не могут быть пронумерованы, этот элемент должен содержать только "TopicItemList".
Темы Список тем, которые приложение поддерживает в текущий момент времени; этот список может меняться от момента к моменту.

Постоянные ссылки на данные

После начала диалога DDE клиент может установить один или несколько постоянных каналов передачи данных с сервером. Канал данных — это механизм связи, с помощью которого сервер уведомляет клиента всякий раз, когда изменяется значение указанного элемента данных. Канал передачи данных является постоянным в том смысле, что этот процесс уведомления продолжается до тех пор, пока канал передачи данных или сам диалог DDE не будет прерван.

Существует два типа постоянных каналов передачи данных DDE: "горячие" и "горячие".В теплом канале данных сервер уведомляет клиента об изменении значения элемента данных, но сервер не отправляет значение данных клиенту, пока клиент не запросит его. В горячей ссылке сервер немедленно отправляет измененное значение данных клиенту.

Приложения, которые поддерживают "теплые" или "горячие" ссылки на данные, обычно предоставляют команду "Копировать" или "Вставить ссылку" в меню "Правка", чтобы пользователь мог устанавливать связи между приложениями.

Атомы и объекты общей памяти

Некоторые аргументы сообщений DDE являются глобальными атомами или объектами общей памяти. Приложения, использующие эти аргументы, должны следовать явным правилам о том, когда их выделять и удалять. Во всех случаях отправитель сообщения должен удалить любой атом или объект общей памяти, который предполагаемый получатель не получит из-за состояния ошибки, такого как сбой функции PostMessage.

DDE использует объекты общей памяти для трех целей:

  • Для переноса значения элемента данных для обмена. На этот элемент ссылается параметр hData в сообщениях WM_DDE_DATA и WM_DDE_POKE.
  • Для переноса параметров в сообщение. Это элемент, на который ссылается параметр hOptions в сообщении WM_DDE_ADVISE.
  • Для переноса строки выполнения команды. Это элемент, на который ссылается параметр hCommands в сообщении WM_DDE_EXECUTE и соответствующем ему сообщении WM_DDE_ACK.

Приложение, которое получает объект общей памяти DDE, должно рассматривать его как доступный только для чтения. Приложение не должно использовать объект в качестве области взаимного чтения-записи для свободного обмена данными.

Как и в случае с атомом DDE, приложение должно освободить объект общей памяти для эффективного управления памятью. Приложение также должно блокировать и разблокировать объекты памяти.

Обзор сообщений динамического обмена данными

Поскольку DDE — это протокол, основанный на сообщениях, он не использует никаких функций или библиотек. Все транзакции DDE выполняются путем передачи определенных определенных сообщений DDE между окнами клиента и сервера.

Есть девять сообщений DDE; символические константы для этих сообщений определены в заголовочном файле DDE. В этом заголовочном файле также определены определенные структуры для различных сообщений DDE.

В следующей таблице приведены сообщения DDE.

td> < /таблица>

Приложение вызывает SendMessage, чтобы выдать сообщение WM_DDE_INITIATE или сообщение WM_DDE_ACK, отправленное в ответ на WM_DDE_INITIATE. Все остальные сообщения отправляются PostMessage. Первый параметр этих вызовов — дескриптор принимающего окна; второй параметр содержит сообщение для отправки; третий параметр идентифицирует окно отправки; а четвертый параметр содержит аргументы, относящиеся к сообщению.

Поток сообщений динамического обмена данными

Типичный диалог DDE состоит из следующих событий:

Клиентское приложение инициирует диалог, а серверное приложение отвечает.

Приложения обмениваются данными одним или всеми из следующих способов:

    • Серверное приложение отправляет данные клиенту по запросу клиента.
    • Клиентское приложение отправляет нежелательные данные серверному приложению.
    • Клиентское приложение запрашивает у серверного приложения уведомление клиента при каждом изменении элемента данных (горячая ссылка на данные).
    • Клиентское приложение запрашивает у серверного приложения отправку данных всякий раз, когда данные изменяются (оперативная ссылка на данные).
    • Серверное приложение выполняет команду по запросу клиента.

    Клиентское или серверное приложение завершает диалог.

    Окно приложения, обрабатывающее запросы от клиента или сервера, должно обрабатывать их строго в порядке поступления.

    Клиент может устанавливать диалоги с несколькими серверами; сервер может вести диалог с более чем одним клиентом.При обработке сообщений из более чем одного источника клиент или сервер должны обрабатывать сообщения диалога синхронно, но не обязательно синхронно обрабатывать все сообщения. Другими словами, он может переключаться с одного разговора на другой по мере необходимости.

    Если приложение не может обработать входящий запрос из-за ожидания ответа DDE, оно должно предотвратить взаимоблокировку, отправив сообщение WM_DDE_ACK с элементом fBusy структуры DDEACK, установленным в 1. Приложение также может отправить сообщение о занятости. Сообщение WM_DDE_ACK, если по какой-либо причине он не может обработать входящий запрос в течение разумного периода времени.

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

    Функции упаковки параметров

    Параметр lParam многих сообщений DDE содержит две части данных. Например, lParam сообщения WM_DDE_DATA содержит дескриптор данных и атом. Приложения должны использовать функцию PackDDElParam для упаковки дескриптора и атома в параметр lParam и функцию UnpackDDElParam для удаления значений. Приложения DDE должны использовать PackDDElParam и UnpackDDElParam для всех сообщений, отправленных во время диалога DDE.

    Приложения также могут использовать функции ReuseDDElParam и FreeDDElParam. ReuseDDElParam позволяет приложению DDE повторно использовать упакованный параметр lParam, помогая уменьшить количество перераспределений памяти, которые приложение должно выполнять во время диалога. Приложение может использовать FreeDDElParam для освобождения памяти, связанной с дескриптором данных, полученным во время диалога DDE.

    Динамический обмен данными и олицетворение

    Чтобы позволить серверу олицетворять клиента, клиент вызывает функцию DdeSetQualityOfService. Структура SECURITY_IMPERSONATION_LEVEL используется для управления уровнем олицетворения, который может выполнять сервер.

    Сервер DDE может олицетворять клиента DDE, вызывая функцию ImpersonateDdeClientWindow. Сервер DDEML должен использовать функцию DdeImpersonateClient.

    Мне нужно реализовать два приложения, которые будут обмениваться данными друг с другом. Оба приложения будут работать на разных компьютерах, входящих в локальную сеть.

    Как мы можем сделать это в Delphi?

    Есть ли бесплатный компонент, упрощающий обмен данными между приложениями на ПК?

    10 ответов 10

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

    Он легкий, хорошо работает на одном компьютере, в локальной сети или в Интернете без каких-либо изменений и позволяет обмениваться данными между приложениями с разными разрешениями, такими как службы (здесь возникают проблемы с сообщениями Windows).

    Возможно, это не обязательно для вас, но я также являюсь поклонником независимых от платформы транспортных средств, таких как TCP/IP.

    Для Delphi существует множество бесплатных вариантов. Вот некоторые из тех, о которых я знаю. Если вам нравятся блокирующие библиотеки, посмотрите на Indy или Synapse. Если вы предпочитаете неблокировку, попробуйте ICS.

    Извините за невежество, но что такое блокировка и неблокировка? Я никогда не сталкивался с этими терминами даже после программирования более 15 лет. На самом деле я никогда не сталкивался с таким требованием до настоящего времени. Это первый раз, когда клиент запросил средство, которое позволит нашим приложениям, работающим на разных ПК, взаимодействовать и обмениваться данными между ними. На самом деле я планировал внедрить DCOM, но дело в том, что использование COM в Delphi — это чистая боль.

    У меня был очень плохой опыт работы с DCOM еще во времена оригинальной MIDAS, которая использовала DCOM в качестве транспорта по умолчанию. Если вы решите попробовать, сначала проведите небольшое расследование. Блокирующие вызовы останавливают выполнение кода до тех пор, пока вызов не завершится. Для интерактивных приложений их следует использовать в потоках. Неблокирующие вызовы немедленно возвращают управление и уведомляют вас о завершении вызова. У обоих есть свои преимущества и недостатки.

    COM в Delphi, вероятно, является самым простым способом использования COM, но обычно это не лучший способ работы в сети. Блокировка и неблокировка связаны с тем, как операционная система обрабатывает поток, который инициирует ввод-вывод (заблокированный поток или процесс не планируется запускать, пока он не будет разблокирован). Блокировка ввода-вывода приводит к тому, что планировщик ОС не планирует выполнение потока до тех пор, пока ввод-вывод не завершится. Неблокирующий ввод-вывод не блокирует поток, поток продолжает работать, но должен использовать обратный вызов, опрос или другой механизм для уведомления о завершении.

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

    Пропускная способность — сколько данных в единицу времени вам потребуется перемещать?Диапазон возможных значений настолько широк, что приложения с самой низкой и самой высокой скоростью практически не имеют ничего общего.

    Дробность — насколько велики сообщения? Сколько данных требуется принимающему приложению, прежде чем оно сможет использовать сообщение?

    Задержка: когда одно приложение отправляет сообщение, как скоро другое приложение должно его увидеть? Как быстро вы хотите, чтобы принимающее приложение реагировало на отправляющее приложение?

    Критичность — как долго полученное сообщение может оставаться без присмотра, прежде чем оно будет переполнено более поздним сообщением? (Обычно это не важно, если пропускная способность не высока, а хранилище сообщений ограничено.)

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

    Интеграция TwinCAT в операционные системы Microsoft позволяет использовать ресурсы ПК (жесткий диск, сеть, графика и интерфейсы и т. д.) методами и через интерфейсы операционной системы. В то же время обмен данными между программами реального времени для целей автоматизации должен выполнять определенные задачи

    • Синхронизация с операционной системой,
    • Адаптация представления данных (выравнивание данных),
    • Гарантия согласованности данных в случае доступа.

    Интерфейс данных должен прежде всего

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

    Полная интеграция позволяет использовать стандарты

    Благодаря подходу полной интеграции в методы операционной системы гарантируется совместимость использования программного обеспечения автоматизации всеми программами Windows, т. е. типичное приложение Windows может быть напрямую связано с программами автоматизации.

    OLE, DCOM+, OCX: стандарты Microsoft

    Современные методы использования программных технологий называются COM, DCOM, OLE, OCX и ActiveX. Их полное описание заполнило бы тома. На основе технологии OLE (связывание и внедрение объектов) вместе с COM (компонентная объектная модель) был представлен инструмент, позволяющий обмениваться объектами данных между программами стандартным образом, т. е.: OLE позволяет приложению Word отображать Excel стол. Улучшения в OLE приводят к решению общей проблемы использования данных внешней программы и способов их представления (в данном случае таблиц, например) в другой программе (COM). Обмен данными на основе COM позволяет получить доступ к объектам и их данным через определенные программные интерфейсы и методы. С DCOM (Distributed COM) это также работает между компьютерами в сети. Чтобы использовать эти технологии в элементах управления (приложениях), были введены OCX (элементы управления OLE) и ActiveX (OCX с веб-расширениями), чтобы расширить существующие концепции технологии COM и переформулировать их. OCX и ActiveX — это компоненты, которые очень легко устанавливаются и затем предлагают данные и методы для программ. Поэтому нет необходимости писать драйверы.

    OCX автоматизирует связывание программ

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

    Интерфейс TwinCAT также доступен в виде DLL

    Для других приложений интерфейсы TwinCAT также доступны в виде DLL (библиотеки динамической компоновки) и могут быть интегрированы.

    Интерфейс TwinCAT OCX работает через маршрутизатор сообщений

    Канал передачи данных на серверы TwinCAT всегда устанавливается через систему сообщений. Таким образом, приложения Windows могут не только работать с локальными серверами, но также могут обмениваться данными по всему миру со всеми зарегистрированными серверами TwinCAT. Маршрутизатор сообщений обеспечивает обмен данными даже с удаленными серверами на других ПК или полевых устройствах.

    Приложения Windows получают доступ к TwinCAT через маршрутизатор сообщений

    Интерфейс для программных приложений

    Чтобы использовать технологию Beckhoff TwinCAT, недостаточно просто установить простой канал передачи данных для приложений визуализации: полный интерфейс для языков программирования (Visual Basic, Visual C, Delphi, Java. ) предлагает не только «простой " к данным ввода/вывода, но также полный доступ к методам одноразовых серверов ПЛК / ЧПУ (запуск и остановка, загрузка программы и т. д.)

    Beckhoff ADS OCX предлагает доступ к данным и методам серверов

    TwinCAT OCX организует обмен данными

    Beckhoff OCX организует обмен данными между приложениями TwinCAT и Windows. Он включает в себя:

    • Доступ по имени переменной,
    • Синхронизация времени с операционной системой,
    • Адаптация различных типов данных,
    • Блокировка данных для повышения эффективности системы,
    • Адаптация представления данных (выравнивание данных),
    • Гарантированная согласованность данных во время доступа.

    Способы доступа:

    - синхронный-асинхронный-циклический

    Методы доступа обеспечивают синхронный доступ приложений Windows к серверам TwinCAT: приложения Windows «ожидают» результата запроса. В качестве альтернативы также возможен асинхронный или циклический доступ.

    Способы доступа:

    оптимально уведомлять об изменении

    Как правило, наиболее выгодным методом обмена данными является метод "Уведомление об изменении": он формирует общий набор асинхронных и циклических ссылок и генерирует действия только тогда, когда элемент данных действительно изменяется. Чтобы ограничить нагрузку на систему при обмене данными, можно установить минимальное время цикла передачи данных.

    Интеграция в NT: новые приложения становятся возможными

    Благодаря интеграции и полному использованию интерфейсов данных Microsoft программное приложение Windows становится доступным для технологий автоматизации. Новые приложения возникнут в результате слияния информационных технологий с технологиями автоматизации. Решения для пользователей можно легко комбинировать. TwinCAT поддерживает эти новые приложения за счет полной интеграции интерфейсов модели COM и ее усовершенствований.

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

Сообщение Описание
WM_DDE_ACK Подтверждает получение или неполучение сообщения.
WM_DDE_ADVISE Запрашивает у серверного приложения обновление или уведомление для элемента данных всякий раз, когда он изменяется. Это устанавливает постоянный канал передачи данных.
WM_DDE_DATA Отправляет значение элемента данных клиентскому приложению.
WM_DDE_EXECUTE Отправляет строку серверному приложению, которое, как ожидается, обработает строку как серию команд.
WM_DDE_INITIATE Инициирует диалог между клиентским и серверным приложениями.
WM_DDE_POKE Отправляет значение элемента данных серверному приложению.
WM_DDE_REQUEST Запрашивает серверное приложение предоставить значение элемента данных.
WM_DDE_TERMINATE Завершает диалог.
WM_DDE_UNADVISE Закрывает постоянный канал передачи данных.