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