Динамический обмен данными (DDE), страница 6

Пример

Установите горячую связь между диапазоном ячеек в Excel  ( от Строка 1, Столбец 1 до Строка 5, Столбец 5) и матрицей x. Если связь установлена успешно, выводит матрицу на дисплей :

Канал связи с Excel, должно быть, была установлена предварительно  командой ddeinit.

rc = ddeadv(channel, 'r1c1:r5c5', 'disp(x)', 'x');

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

MATLAB поддерживает два вида автоматически обновляемых связей, различающихся по тому, как приложение - сервер сообщает MATLAB, когда данные, которые являются предметом элемента,  изменяются в сервере:

Горячая связь заставляет сервер сразу передавать данные к MATLAB, когда данные, определенные элементом изменяются.

Теплая связь заставляет сервер уведомлять MATLAB, когда данные изменяются, но поставляет данные только, когда MATLAB запрашивает их.

ddeunadv

Закрывает  автоматически обновляемую связь

Синтаксис

rc = ddeunadv(channel,'item')

rc = ddeunadv(channel,'item',format)

rc = ddeunadv(channel,'item',format,timeout)

Описание:

ddeunadv освобождает автоматически обновляемую связь между MATLAB и приложением - сервером, установленным более ранним вызовом ddeadv. Канал, элемент, и формат должны быть те же самые как определенные в вызове к ddeadv, который инициализировал связь. Если Вы включаете параметр времени ожидания, но принимаете заданный по умолчанию формат, Вы должны определить формат как пустую матрицу.

Если успешно, ddeunadv возвращается 1 в переменной, rc. Иначе  возвращается 0.

Параметры

channel

Канал сеанса связи от ddeinit.

item

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

format (дополнительный)

Массив с двумя элементами. Он должно быть тем же, как параметр формата для передачи в вызове ddeadv.

timeout (дополнительный)

Скаляр, определяющий ограничение времени выполнения для этой операции. время ожидания определено в миллисекундах. (1000 миллисекунд = 1 секунда). Значение по умолчанию времени ожидания - три секунды.

Пример 1.

Освободить автоматически обновляемую связь, установленную предварительно с ddeadv:

rc = ddeunadv(channel, 'r1c1:r5c5')

>rc =

    1.00

Вы устанавливаете и освобождаете автоматически обновляемые связи  функциями ddeadv и ddeunadv. MATLAB  поддерживает такие связи, только когда MATLAB является клиентом.

Комплексный пример на применение функций ddeinit, ddepoke,  ddeadv, ddeunadv, ddeterm.

Слудующий пример устанавливает сеанс связи DDE между MATLAB, действующим как клиент, и Microsoft Excel. Данный пример расширяет пример в предыдущем разделе, создавая горячую связь с Excel. Связь модифицирует матрицу z и вычисляет возвращаемый ответ, когда диапазон ячеек изменяется. Когда нажата кнопка управления в интерфейсе пользователя  MATLAB заканчивает автоматически обновляемую связь и сеанс связи DDE . (Для получения дополнительной информации о создании графического интерфейса пользователя, см. интерактивное MATLAB руководство, Создание Графического интерфейса пользователя.)