Main Content

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 に指定できる有効なオプションは以下のとおりです。

n

列ベクトルに最大 n 個の値を読み込みます。

[m,n]

列順で m 行 n 列の行列を最大 m 行 n 列読み込みます。

sizeinf を設定することはできません。指定した個数の値が入力バッファーに保存できない場合はエラーが発生します。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 が指定されていない場合)

バージョン履歴

R2006a より前に導入

すべて折りたたむ

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

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

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

参考

関数