tcl和数组中的预期布尔值错误

时间:2018-08-15 08:55:09

标签: serial-port tcl dts

我正在缓慢地浏览我的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)"

谁能告诉我这是为什么,怎么解决?

1 个答案:

答案 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)}]