Main Content

readasync

(削除予定) デバイスからデータを非同期的に読み取る

このオブジェクト関数 serial は将来のリリースで削除される予定です。代わりにオブジェクト関数 serialport を使用してください。コードの更新の詳細については、互換性についての考慮事項を参照してください。

構文

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 より前に導入

すべて折りたたむ

R2021a: serial オブジェクト インターフェイスは削除予定

この関数の serial オブジェクトでの使用は削除される予定です。シリアル ポート デバイスにアクセスするには、代わりに serialport オブジェクトと、その関数およびプロパティを使用してください。

推奨される機能には追加の性能があり、パフォーマンスも改善されています。推奨される機能の使用の詳細については、serialport インターフェイスへのコードの遷移を参照してください。

参考

関数