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

Если надо передать комбинацию клавиши с служебной клавишей, используйте следующую таблицу:

Комбинация клавиши с служебной клавишей

Примените код клавиши с символом

SHIFT

+ (plus sign)

CTRL

^ (caret)

ALT

% (percent sign)

Запрос Данных от MATLAB (VBA DDERequest метод)

Клиенты запрашивают данные от MATLAB, используя операции запроса DDE. Машинный раздел поддерживает запросы DDE для передачи текста, графики и данных:

Возвращает результат запроса.

DDERequest(Channel, Item)

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

Item (Тип String). Запрашиваемый элемент.

  • Текст, который является результатом предыдущего выполния команды DDE.
    Вы запрашиваете строковый результат выполнения команды DDE , используя элемент EngStringResult  с форматом Text.
  • Графические результаты предыдущего  выполнения команды DDE.
    Вы запрашиваете графический результат выполнения команды DDE, используя элемент EngFigureResult . Элемент EngFigureResult  может использоваться с форматами Text или Metafilepict.
    Определение формата Text приводит к строке, имеющей значение "Да" или "Нет". Если результат - "Да, " метафайл для текущего рисунка помещен в буфер обмена. Эти функциональные возможности обеспечены для клиентов DDE, которые могут отыскать только текст от запросов DDE, типа Word для Windows. Если результат - "Нет, " никакой метафайл не будет помещен в буфер обмена.
    Определение формата Metafilepict, когда есть графический результат, возвращает метафайл из запроса DDE.
  • Данные для указанной матрицы.
    Вы запрашиваете данные на матрицу, определя имя матрицы как элемент. Вы можете определить любой формат Text или XLTable.

Пример1

 Запрашиваем из MATLAB строковый результат выполнения последней команды:

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

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

return1 = Application.DDERequest(lngChannel2, "EngStringResult")

Application.DDETerminate (lngChannel2)

Пример2

Запрашиваем из MATLAB графический результат выполнения последней команды:

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

Application.DDEExecute lngChannel2, "fplot('[tan(x),sin(x),cos(x)]',2*pi*[-1 1 -1 1])"

return2 = Application.DDERequest(lngChannel2, "EngFigureResult")

Application.DDETerminate (lngChannel2)

Пример3

Запрашиваем из рабочего пространства MATLAB значения матрицы z

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

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

return3 = Application.DDERequest(lngChannel2, "z")

Application.DDETerminate (lngChannel2)

Таблица подытоживает параметры запроса DDE:

Item

Format

Результат

EngStringResult

Text

Строка

EngFigureResult

Text

Yes/No

EngFigureResult

Metafilepict

Метафайл текущего рисунка

<matrix name>

Text

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

<matrix name>

XLTable

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