| 外部インタフェース/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.
| レコードファイルフォーマット | 保存とロード | ![]() |