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


Отправка данных в MATLAB ( VBA DDEPoke метод)

DDEPoke MethodКлиенты отправляют данные в MATLAB, используя операцию DDEpoke.

DDEPoke(Channel, Item, Data)

Channel  (Тип- Long). Номер канала, установленный с помощью метода  DDEInitiate.

Item    (Тип-Variant). Элемент,  к которому данные посылаются.

Data   (Тип- Variant).  Данные, которые посылаются приложению.

Машинный раздел поддерживает DDEpoke для того, чтобы модифицировать или создавать новые матрицы в рабочем пространстве MATLAB . Указанный элемент  - имя матрицы, которая будет модифицирована или создана. Если матрица с указанным именем уже существует в рабочем пространстве, она будет модифицирована; иначе она будет создана. Матричные данные могут быть в формате Text или XLTable.

Таблица суммирует параметры DDE poke.

Item

Format

Записанные  Данные

<matrix name>

Text

Символьный буфер, разграниченные позицией табуляции столбцы, CR/LF-разграниченные строки

<matrix name>

XLTable

Двоичные данные в формате, совместимом с Microsoft Excel

 
Пример1

channelNumber = Application.DDEInitiate( _

    app:="WinWord", _

    topic:="C:\WINWORD\SALES.DOC")

Set rangeToPoke = Worksheets("Sheet1").Range("A1")

Application.DDEPoke channelNumber, "\StartOfDoc", rangeToPoke

Application.DDETerminate channelNumber

Закрытие канала связи (VBA  DDETerminate метод)

Открывает DDE канал с приложением  и возвращает номер канала.

DDETerminate(Channel)

или

DDETerminate Channel

где

Channel  (Тип- Long). Номер канала, установленный с помощью метода  DDEInitiate.

Пример1.Открывает канал связи с  разделом Engine приложения MATLAB.

lngChannel = Application.DDEInitiate(App:="MATLAB", Topic:="Engine")

Application.DDETerminate lngChannel


Пример.Использование Visual Basic  для  связи Excel как клиента и MATLAB Сервера DDE

Разместим на рабочем листе два элемента управления типа кнопка , перейдем в редактор Microsoft Visual Basic  (Меню Сервис->Макрос->Редактор Visual Basic) и введем в 

подпрораммы обработки событий следующий код на языке Visual Basic:

Код программы с подробными коментариями:

Rem Объявление глобальных переменных

Dim lngChannel2 As Long

Rem Подпрограмма обработки прерывания от кнопки 1

Private Sub CommandButton1_Click()

Rem Установление DDE канала связи с  разделом листа Excel

lngChannel2 = Application.DDEInitiate(App:="MATLAB", Topic:="Engine")

If lngChannel2 <> 0 Then

Rem Если канал установлен

Rem Посылаем команды для умножения 2х числовых матриц в MATLAB на выполнение

Application.DDEExecute lngChannel2, "x=[1.2,2,3;4,5,6;7,8,9]"