Version 2 (modified by obina, 12 years ago) (diff) |
---|
waveformレコードに値を入れたい
例1:オシロスコープ
あらかじめASCIIモードで転送するように設定。CURV?コマンドを送ると、数値のみをコンマ区切りで値を返す場合。 (こんな感じのレスポンスは楽に処理できます)
CURV? 19,21,19,20,19,20,19,20,19,18, .... ,19,19,20,20,19,19<LF>
解決方法
protocol file (sample.proto)
Terminator = LF; getIDN { out "*IDN?"; in "%39c"; ExtraInput = Ignore; } getDATA { Separator = ","; # データ区切りとしてコンマを使用 out "CURV?"; # CURV? コマンドを送る in "%d"; # integer データを入力。waveformレコードから呼ばれたときには%d変換が繰り返される。 }
database file (stream.db) NELM, FTVLを正しく設定しておく。 機器が返してくる配列数が不定の場合はNELMを大き目にとっておいて、プロセスした後でNORDをみてデータ数を判別する。
record(waveform, "obina:data_ch1") { field(DESC, "get wave data") field(DTYP, "stream") field(SCAN, "Passive") field(INP, "@sample.proto getDATA PS1") field(NELM, "10000") field(FTVL, "LONG") }