外部インタフェース/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 | ![]() |