外部インタフェース/API | ![]() ![]() |
例題: 情報をディスクに記録
この例題は、シリアルポートオブジェクトとTektronix TDS 210 オシロスコープ間で送信される情報を記録する方法を説明します。さらに、結果のレコードファイルの構造も説明します。
1. シリアルポートオブジェクトを作成します。 - シリアルポートCOM1に対応するシリアルポートオブジェクトs
を作成します。
s = serial('COM1');
2. デバイスを接続します。 - s
をオシロスコープに接続します。ReadAsyncMode
プロパティに対するデフォルト値はcontinuous
なので、データは機器から利用可能になるとすぐに入力バッファに非同期的に出力されます。
fopen(s)
3. プロパティ値の設定 - verboseフォーマットを使ってs
を複数のディスクファイルに情報を記録するように設定します。記録は、WaveForm1.txt
として定義された最初のディスクファイルから始まります。
s.RecordMode = 'index'; s.RecordDetail = 'verbose'; s.RecordName = 'WaveForm1.txt'; record(s)
4. データの書き出しと読み込み - 機器に書き出されるコマンドと機器から読み込まれるデータは、レコードファイルに記録されます。オシロスコープのコマンドの説明は、例題: テキストデータの書き出しと読み込みを参照してください。
fprintf(s,'*IDN?') idn = fscanf(s); fprintf(s,'MEASUREMENT:IMMED:SOURCE CH2') fprintf(s,'MEASUREMENT:IMMED:SOURCE?') source = fscanf(s);
関数fread
を使ってピーク間電圧を読み込みます。fread
から出力されるデータは、hexフォーマットを使って記録されます。
fprintf(s,'MEASUREMENT:MEAS1:TYPE PK2PK') fprintf(s,'MEASUREMENT:MEAS1:VALUE?') ptop = fread(s,s.BytesAvailable);
char(ptop)' ans = 2.0199999809E0
記録の状態は、on
からoff
に切り替えられます。RecordMode
の値はindex
なので、レコードファイル名は自動的に更新されます。
record(s) s.RecordStatus ans = off s.RecordName ans = WaveForm2.txt
5. 切断とクリーンアップ - s
が必要なくなったときは、機器から切断し、メモリおよびMATLABワークスペースから削除します。
fclose(s) delete(s) clear s
レコードファイルの内容
WaveForm1.txtレコードファイルの内容を、以下に示します。RecordDetail
プロパティはverbose
なので、値の数、コマンド、データが記録されています。関数fread
から出力されたデータは、hexフォーマットです。
type WaveForm1.txt Legend: * - An event occurred. > - A write operation occurred. < - A read operation occurred. 1 Recording on 22-Jan-2000 at 11:21:21.575. Binary data in... 2 > 6 ascii values. *IDN? 3 < 56 ascii values. TEKTRONIX,TDS 210,0,CF:91.1CT FV:v1.16 TDS2CM:CMV:v1.04 4 > 29 ascii values. MEASUREMENT:IMMED:SOURCE CH2 5 > 26 ascii values. MEASUREMENT:IMMED:SOURCE? 6 < 4 ascii values. CH2 7 > 27 ascii values. MEASUREMENT:MEAS1:TYPE PK2PK 8 > 25 ascii values. MEASUREMENT:MEAS1:VALUE? 9 < 15 uchar values. 32 2e 30 31 39 39 39 39 39 38 30 39 45 30 0a 10 Recording off.
![]() | レコードファイルフォーマット | 保存とロード | ![]() |