我正在缓慢地浏览我的serialport tcl应用程序,但遇到了另一堵墙。
我想创建一个布尔值数组以在for循环中进行迭代。
在for循环中,DTR将发送一个串行输出。
下面我有以下代码:
set rs232 [open COM3: r]
fconfigure $rs232 -ttycontrol {DTR 0}
array set values {
0 0
1 1
}
set n [array size values]
set x 0
for {set a 0} {$a <=15} {incr a} {
fconfigure $rs232 -ttycontrol {DTR $values(0)}
wait 1000
fconfigure $rs232 -ttycontrol {DTR $values(1)}
wait 1000
}
我运行它,但出现错误:
expected boolean value but got "$values(0)"
谁能告诉我这是为什么,怎么解决?
答案 0 :(得分:2)
此调用:
fconfigure $rs232 -ttycontrol {DTR $values(0)}
将-ttycontrol
的值“ DTR $ values(0)”传递给fconfigure
。调用
fconfigure $rs232 -ttycontrol [list DTR $values(0)]
通过“ DTR 0”。
大括号阻止了变量的替换,但是list
的调用强制了它。
或者,您可以使用其中之一
fconfigure $rs232 -ttycontrol "DTR $values(0)"
fconfigure $rs232 -ttycontrol [subst {DTR $values(0)}]