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

Пример надо записать в m-файл excelprim2.m и выполнить:

% Инициализировать сеанс свЯзи с Excel.

chan = ddeinit('excel', 'Лист2');

% Диапазон набора Ячеек в Excel длЯ записи по DDE.

range = 'r1c1:r20c20';

% Создать поверхность графика пиков.

h = surf(peaks(20));

% Получить z данные поверхности.

z = get(h, 'zdata');

% Записать по DDE z данные в лист  Excel.

rc = ddepoke(chan, range, z);

% Установить горЯчую свЯзь с

% Excel и  матрицей MATLAB 'z'.

% Возвращаемый ответ вынуждает zdata и cdata длЯ

% поверхности h быть новыми данными, посланными от Excel.

rc = ddeadv(chan, range,...

     'set(h,''zdata'',z); set(h,''cdata'',z);','z');

% Создать кнопку команды, котораЯ  при нажатии на неё закончит обновлЯемую свЯзь,

% закончит сеанс свЯзи DDE,

% и закрывает окно рисунка.

c = uicontrol('String','&Close','Position',[5 5 80 30],...

    'Callback',     'rc = ddeunadv(chan,range);ddeterm(chan);close;');

ddeexec

Поcлать текстовую строку  с командой, которую понимает сервер, на выполнение

Синтаксис

rc = ddeexec(channel,'command')

rc = ddeexec(channel,'command','item')

rc = ddeexec(channel,'command','item',timeout)

Описание

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

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

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

Параметры ddeexec:

channel

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

'command'

Строка, определяющая команду, которая будет выполнена.

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

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

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

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

Пример

Учитывая канал, назначенный на сеанс связи, пошлите команду Excel:

rc = ddeexec(channel,'[formula.goto("r1c1")]')

Строка [formula.goto("r1c1")] является командой для Excel перевести курсор на ячейку A1.

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

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

try %обработка ошибки установлениЯ DDE соединениЯ

 % Установим DDE канал с Лист1, уже открытым в Excel.

 chan1= ddeinit('excel', 'Лист1');

 % Задаем начальные значениЯ матрицы z

 z = [1,2,3;4,5,6;0,0,0];

 % Установим диапазон Ячеек.

 range = 'r1c1:r3c3';

 % Запишем матрицу z в указанный диапазон.

 rc = ddepoke(chan1, range, z)

 % Считаем данные обратно из указанного диапазона Excel в матрицу z1 MATLAB

 z1=ddereq(chan1,'r1c1:r3c3')

  % Запишем в Ячейки строки 2 команды  вычислениЯ синуса Excel

 rc=ddepoke(chan1,'r2c1','=SIN(A1)');