readasync
(削除予定) デバイスからデータを非同期的に読み取る
このオブジェクト関数 serial は将来のリリースで削除される予定です。代わりにオブジェクト関数 serialport を使用してください。コードの更新の詳細については、バージョン履歴を参照してください。
構文
readasync(obj)
readasync(obj,size)
説明
readasync(obj) は、シリアル ポート オブジェクト obj 上で非同期読み取り操作を開始します。
readasync(obj,size) は、最高で size によって与えられるバイト数まで非同期で読み取ります。size が InputBufferSize プロパティ値と 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 =
15out = fscanf(s)
out =
2.0399999619E0fclose(s)
ヒント
データを読み取る前に、関数 fopen を使用して、obj をデバイスと接続しなければなりません。接続されたシリアル ポート オブジェクトでは、Status プロパティの値が open になります。obj がデバイスに接続されていない間に、読み込み演算を行うと、エラーが返されます。
ReadAsyncMode プロパティを manual に設定する場合にのみ、readasync を使用します。ReadAsyncMode が continuous の場合は、readasync は無視されます。
TransferStatus プロパティは、非同期読み書き演算が進行しているかどうかを示します。シリアル ポートは、読み込むピンと書き込むピンを別々にもっているので、非同期の読み取りが進んでいる間にデータを書くことができます。関数 stopasync を使って、非同期の読み書き演算を停止できます。
BytesAvailable プロパティを使って、入力バッファー内に蓄積されているデータ全体をモニタリングすることができます。加えて、BytesAvailableFcn プロパティを使って、終端文字または指定したデータ量を読み取ったときに、コールバック関数を実行することができます。
非同期読み込み演算を完了するルール
readasync を使って、非同期読み演算は次の条件の 1 つに一致したときに完了します。
Terminatorプロパティにより指定された終端文字が読み取られるTimeoutプロパティで指定した時間が経過する指定したバイト数が読み込まれる
入力バッファーが満たされる (
sizeが指定されていない場合)
readasync は終端文字をチェックするため、この関数は処理が遅くなる場合があります。処理速度を上げるには、ReadAsyncMode プロパティを continuous にし、データがデバイスから使用可能になればすぐに、入力バッファーにデータを連続的に返すような構成を作成してください。