Ich habe die folgende Prozedur erstellt in erwarten mit einem Agilent Base Station Simulator zu arbeiten:Warum schlägt die String-Übereinstimmung in diesem "expect" -Code fehl?
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
}
======================== ================================ OUTPUT:
String 1
>
oa; 05: SYST: APPL? String 2 Senden bss_str: en; 05 "CDMA 2000 Lab App T"
kann nicht "expect_out (Puffer)" lesen: keine solche Variable während "gesetzt receive_buffer $ expect_out (Puffer)" Vollstreckungs (Verfahren "get_bss_parameter_value" -Leitung 20)
==================================== ==================== Wenn ". " im obigen Code durch "" ersetzt wird, ist dies der OUTPUT:
String
>
oa; 05: SYST: APPL? String 2 Senden bss_str: en; 05 receive_buffer START:
oa; 05: SYST: APPL?
END Aktuelle Anwendung ist
oa; 05: SYST: APPL?
Problem:
1) Ich bin nicht in der Lage, den Wert "CDMA 2000 Lab App T" in der expect_out (Puffer) Variable zu erhalten, die (aufgrund übereinstimmen sollte *) die Ausgabe von der Agilent Gerät.. Stimmt etwas nicht mit dem Code?
2) In beiden Fällen wird der Befehl "en; 05" gesendet, aber nicht auf stdout angezeigt. Obwohl wir die erwartete Ausgabe im ersten Fall sehen können.