fscanf (serial)
(削除予定) デバイスから ASCII データを読み取り、テキストとして書式化する
このオブジェクト関数 serial は将来のリリースで削除される予定です。代わりにオブジェクト関数 serialport を使用してください。コードの更新の詳細については、バージョン履歴を参照してください。
構文
A = fscanf(obj)
A = fscanf(obj,'format')
A = fscanf(obj,'format',size)
[A,count] = fscanf(...)
[A,count,msg] = fscanf(...)
説明
A = fscanf(obj) は、シリアル ポート オブジェクト obj に接続しているデバイスから ASCII データを読み取り、A に返します。データは、%c 書式を使用してテキストに変換されます。バイナリ データの場合は fread を使用してください。
A = fscanf(obj,' は、データを読み取り、format')format に従って変換します。format は、C 言語の変換指定子です。変換指定子は、% 文字や変換文字 d、i、o、u、x、X、f、e、E、g、G、c、s も含んでいます。詳細は、sscanf ファイル I/O 形式の仕様または C のマニュアルを参照してください。
A = fscanf(obj,' は、format',size)size で指定された値の数を読み取ります。size に指定できる有効なオプションは以下のとおりです。
| 列ベクトルに最大 |
| 列順で m 行 n 列の行列を最大 m 行 n 列読み込みます。 |
size に inf を設定することはできません。指定した個数の値が入力バッファーに保存できない場合はエラーが発生します。size が、[m,n] の型ではなく、文字変換が指定されている場合、A は行ベクトルとして返されます。size は InputBufferSize プロパティを使用して入力バッファーのバイト数でも指定できます。ASCII 値は、1 バイトです。
[A,count] = fscanf(...) は、読み取った値の数を count に返します。
[A,count,msg] = fscanf(...) は、読み取り操作が失敗した場合、警告メッセージを msg に返します。
例
シリアル ポート オブジェクト s を作成し、s を正弦波を表示している Tektronix® TDS 210 オシロスコープに接続します。この例は、Windows® プラットフォーム上で使用できます。
s = serial('COM1');
fopen(s)
関数 fprintf を使用して、正弦波のピークツーピーク電圧を測定し、測定タイプを返して、ピークツーピーク電圧を返すようにスコープを構成します。
fprintf(s,'MEASUREMENT:IMMED:TYPE PK2PK') fprintf(s,'MEASUREMENT:IMMED:TYPE?') fprintf(s,'MEASUREMENT:IMMED:VALUE?')
ReadAsyncMode プロパティの既定値は、continuous なので、2 つのクエリ コマンドに関連したデータは、自動的に入力バッファーに返されます。
s.BytesAvailable
ans =
21
関数 fscanf を使用して、測定タイプを読み込みます。操作は、最初の終端文字が読み込まれると終了します。
meas = fscanf(s)
meas = PK2PK
関数 fscanf を使用して、ピークからピークまでの電圧を浮動小数点数で読み込み、終端文字を除外します。
pk2pk = fscanf(s,'%e',14)
pk2pk =
2.0200
s のスコープへの接続を切断し、メモリとワークスペースから s を削除します。
fclose(s) delete(s) clear s
ヒント
デバイスからデータを読み取るには、関数 fopen を使用して obj に接続されていなければなりません。接続されたシリアル ポート オブジェクトでは、Status プロパティの値が open になります。obj がデバイスに接続されていない間に、読み込み演算を行うと、エラーが返されます。
msg が出力引数として含まれていない場合に読み取り操作が正常に実行できなかった場合は、コマンド ラインに警告メッセージが返されます。
ValuesReceived プロパティ値は、fscanf が実行される度に読み取られた値の数 (終端文字を含む) ずつ増加します。
fscanf を使用して読み取り操作を完了するための規則
fscanf を使用した読み取り操作では、以下の状態になるまで、MATLAB® コマンド ラインへのアクセスができなくなります。
Terminatorプロパティにより指定された終端文字が読み取られるTimeoutプロパティで指定した時間が経過するsizeで指定された個数の値が読み込まれた入力バッファーが満杯になった (
sizeが指定されていない場合)