| MATLAB Function Reference | ![]() |
表示
readasync(obj)
readasync(obj,size)
引数
obj |
シリアルポートオブジェクト |
size |
デバイスから読み込むバイト数 |
詳細
readasync(obj)
は、非同期読み取り演算を初期化します。
readasync(obj,size)
は、最高で、size で与えられるバイト数を非同期で読みます。
注意
データを読む前に、オブジェクトを関数 fopen を使って、デバイスと接続する必要があります。接続されるシリアルポートオブジェクトは、open の Status プロパティ値をもちます。obj がデバイスに接続されていない間に読み込む演算を行おうとすると、エラーが戻ります。
ReadAsyncMode プロパティが、manual の場合のみ、readasync を使ってください。readasync は、ReadAsyncMode が、continuous の場合は、無視されます。
TransferStatus プロパティは、非同期読み書き演算が進行しているか否かを示します。シリアルポートは、読むピンと書き込むピンを別々にもっているので、非同期の読み取りが、進んでいる間にデータを書くことができます。関数 stopasync を使って、非同期の読み書き演算を停止することができます。
ユーザは、BytesAvailable プロパティを使って、入力バッファ内にソトアされているデータ全体をモニタすることができます。加えて、BytesAvailableAction プロパティを使って、終端子、または、指定したデータ量を読んだときに、M-ファイルで設定した機能を実行することができます。
非同期読み演算を完了するルール
readasync を使って、非同期読み演算は、つぎの条件の一つにマッチしたときに、完了します。
Terminator プロパティにより指定された終端子が読まれる。Timeout プロパティにより指定される時刻に達する。size が指定されていない)。readasync は、終端子をチェックするので、この関数は、計算を遅らせるものになります。処理スピードを増すためには、ReadAsyncMode プロパティを、 continuous にし、データがデバイスから使用可能になればすぐに、入力バッファにデータを連続的に戻すような構成を作成してください。
例題
つぎの例題は、シリアルポートオブジェクト s を作成し、Tektronix TDS 210 オシロスコープに接続し、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)
関数
プロパティ
BytesAvailable, BytesAvailableAction, ReadAsyncMode, Status, TransferStatus
| rcond | real | ![]() |