| 外部インタフェース/API | ![]() |
サーバにあるデータが変更されるときに、クライアントアプリケーションに通知するためにDDEを使うことができます。たとえば、Excelのスプレッドシートに入力されたデータを解析するためにMATLABを使う場合は、このデータが変更されるときにExcelがMATLABに通知するためのリンクを作ることができます。また、新規のあるいは修正したスプレッドシートのデータを使って行列を自動的にアップデートするリンクを作ることができます。
アイテムの題名であるデータがサーバで変更されるときに、サーバアプリケーションがMATLABに通知する方法により区別される2種類のadvisoryリンクをMATLABはサポートします。
関数ddeadvとddeunadvを使ってadvisoryリンクのセットアップや開放を行います。MATLABは、MATLABがクライアントであるときにのみリンクをサポートします。
つぎの例は、クライアントとしてふるまうMATLABとMicrosoft Excelの間でDDE通信を作ります。この例は、Excelとhotリンクを作ることで前の節の例を拡張したものです。リンクは行列zをアップデートし、セル領域が変更されるときにコールバックを実行します。ユーザインタフェースコントロールであるプッシュボタンが押されると、advisoryリンクとDDE通信を終了します(グラフィカルユーザインタフェースの作成についての情報の詳細は、MATLABマニュアルBuilding GUIs with MATLAB を参照してください)。)
% Initialize conversation with Excel.
chan = ddeinit('excel', 'Sheet1');
% Set range of cells in Excel for poking.
range = 'r1c1:r20c20';
% Create a surface of peaks plot.
h = surf(peaks(20));
% Get the z data of the surface.
z = get(h, 'zdata');
% Poke the z data to the Excel spread sheet.
rc = ddepoke(chan, range, z);
% Set up a hot link ADVISE loop with Excel
% and the MATLAB matrix 'z'.
% The callback sets the zdata and cdata for
% the surface h to be the new data sent from Excel.
rc = ddeadv(chan, range,...
'set(h,''zdata'',z);set(h,''cdata'',z);','z');
% Create a push button that will end the ADVISE link,
% terminate the DDE conversation,
% and close the figure window.
c = uicontrol('String','&Close','Position',[5 5 80 30],...
'Callback',...
'rc = ddeunadv(chan,range);ddeterm(chan);close;');
| MATLABをクライアントとして使う | シリアルポートI/O | ![]() |