J'ai créé la procédure suivante en attendre à travailler avec une station de base Agilent Simulator:Pourquoi la correspondance de chaînes échoue-t-elle dans ce code "expect"?
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
}
======================== ================================ SORTIE:
Chaîne 1
>
oa; 05: SYST: APPL? Chaîne 2 Envoi bss_str: en; 05 "CDMA 2000 Lab App T"
ne peut pas lire "expect_out (buffer)": pas de telle variable lors de l'exécution "set receive_buffer expect_out de $ (tampon)" (procédure "get_bss_parameter_value" ligne 20)
==================================== ==================== Si "" est remplacé par "" dans le code ci-dessus, ceci est la SORTIE:
Chaîne 1
>
oa; 05: SYST: APPL? Chaîne 2 Envoi bss_str: en; 05 receive_buffer START:
oa; 05: SYST: APPL?
FIN actuelle est l'application
oa; 05: SYST: APPL?
Problème:
1) Je ne suis pas en mesure d'obtenir dans la variable expect_out (tampon) la valeur "CDMA 2000 App Lab T" qui devrait correspondre (en raison de *) la sortie du dispositif Agilent.. Y at-il un problème avec le code?
2) Dans les deux cas, la commande "en; 05" est envoyée mais pas affichée sur stdout. Bien que nous puissions voir la sortie attendue dans le premier cas.