ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

readasync

デバイスから非同期でデータを読み込む

構文

readasync(obj)
readasync(obj,size)

説明

readasync(obj) は、シリアル ポート オブジェクト obj 上で非同期読み取り操作を開始します。

readasync(obj,size) は、最高で size によって与えられるバイト数まで非同期で読み取ります。sizeInputBufferSize プロパティ値と BytesAvailable プロパティ値の差よりも大きい場合、エラーが返されます。

この例は、シリアル ポート オブジェクト s を Windows® プラットフォーム上に作成します。s を Tektronix® TDS 210 オシロスコープに接続し、s を設定して関数 readasync が起動した場合にのみ非同期でデータを読み込み、チャネル 1 の信号のピーク - ピーク値を返すように設計します。

s = serial('COM1');
fopen(s)
s.ReadAsyncMode = 'manual';
fprintf(s,'Measurement:Meas1:Source CH1')
fprintf(s,'Measurement:Meas1:Type Pk2Pk')
fprintf(s,'Measurement:Meas1:Value?')

関数 readasync を使って、計器から非同期でデータを読み始めます。読み取り操作が完了すると、fscanf を使用して、データを MATLAB® ワークスペースに返します。

readasync(s)
s.BytesAvailable
ans =
     15
out = fscanf(s)
out =
2.0399999619E0
fclose(s)

ヒント

データを読み取る前に、関数 fopen を使用して、obj をデバイスと接続しなければなりません。接続されたシリアル ポート オブジェクトでは、Status プロパティの値が open になります。obj がデバイスに接続されていない間に、読み込み演算を行うと、エラーが返されます。

ReadAsyncMode プロパティを manual に設定する場合にのみ、readasync を使用します。ReadAsyncModecontinuous の場合は、readasync は無視されます。

TransferStatus プロパティは、非同期読み書き演算が進行しているかどうかを示します。シリアル ポートは、読み込むピンと書き込むピンを別々にもっているので、非同期の読み取りが進んでいる間にデータを書くことができます。関数 stopasync を使って、非同期の読み書き演算を停止できます。

BytesAvailable プロパティを使って、入力バッファー内に蓄積されているデータ全体をモニタリングすることができます。加えて、BytesAvailableFcn プロパティを使って、終端子または指定したデータ量を読み取ったときに、コールバック関数を実行することができます。

非同期読み込み演算を完了するルール

readasync を使って、非同期読み演算は次の条件の 1 つに一致したときに完了します。

  • Terminator プロパティにより指定された終端子が読み取られる

  • Timeout プロパティで指定した時間が経過する

  • 指定したバイト数が読み込まれる

  • 入力バッファーが満たされる (size が指定されていない場合)

readasync は終端子をチェックするため、この関数は処理が遅くなる場合があります。処理速度を上げるには、ReadAsyncMode プロパティを continuous にし、データがデバイスから使用可能になればすぐに、入力バッファーにデータを連続的に返すような構成を作成してください。

R2006a より前に導入