【发布时间】:2018-08-15 08:55:09
【问题描述】:
我的串口 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)"
谁能告诉我这是为什么,我该如何解决?
【问题讨论】:
-
这似乎是一种笨拙的方式来编码“真”和“假”。有效的 Tcl 布尔值在 Tcl_GetBoolean 手册页上进行了说明——false 是 0、“false”、“no”或“off”中的任何一个; true 是 1、“true”、“yes”或“on”中的任何一个。
-
好的,Glenn 干杯,我查看了 TCL_GetBoolean 页面,但它没有显示示例,我不知道 interp、src、boolPtr 参数是如何输入的。你没有例子吗?
-
set value "false"; if {$value} then {puts OK} else {puts No}-- 我的第一条评论主要是$values(0)是一种非常冗长的写0的方式
标签: serial-port tcl dts