Agilent 基地局シミュレータを使用することを想定して、次の手順を作成しました。
proc get_bss_parameter_value {bss parameter_string} {
global bss_array
set bss_str "$parameter_string?"
puts "String 1"
set bss_str "oa;$bss_array(gpib):$bss_str\r"
send "$bss_str"
expect {nopattern^}
puts "String 2"
set bss_str "en;$bss_array(gpib)"
puts "Sending bss_str: $bss_str"
send "$bss_str\r"
expect .*
set receive_buffer $expect_out(buffer)
puts "receive_buffer START: $receive_buffer"
puts "END"
return $receive_buffer
}
================================================== ====== 出力:
文字列 1
>
oa;05:SYST:APPL? String 2 Sending bss_str: en;05 "CDMA 2000 Lab App T"
「expect_out(buffer)」を読み取れません: 「set receive_buffer $expect_out(buffer)」の実行中にそのような変数はありません (手順「get_bss_parameter_value」の 20 行目)
================================================== ======上記のコードで". " が " " に置き換えられた場合、これが OUTPUT:
文字列 1
>
oa;05:SYST:APPL? 文字列 2 送信 bss_str: en;05 receive_buffer START:
oa;05:SYST:APPL?
終了 現在のアプリケーションは
oa;05:SYST:APPL?
問題:
1) 値 "CDMA 2000 Lab App T" を、expect_out(buffer) 変数で取得できません。これは (.* が原因で) Agilent デバイスからの出力と一致するはずです。コードに何か問題がありますか?
2) どちらの場合も、コマンド「en;05」は送信されますが、stdout には表示されません。最初のケースで期待される出力を確認できますが。