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

expected boolean value error in tcl and arrays

我在我的串行端口 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)"

谁能告诉我为什么会这样,我该如何解决?

这次调用:

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