我正在研究一个大量使用串行端口的程序。在tcl 8.5.1中接收'BREAK'会导致COM端口退出工作(win xp)
它目前是一个windows-only程序(不幸的是:-),运行在Windows XP上。 TCL版本是8.5.1.0--它可能是也可能不是“官方”的TCL,不确定。
一切工作完美,直到另一端的设备发送一个BREAK(或者,只需断开串口:-)。
一旦发生这种情况,数据仍然可以正常收到,但通过'puts'将数据发送到端口不会导致数据进入串口。事实上,当我发送一个字符,询问fconfigure最后一个错误时,它总是说BREAK。现在,我不知道这是否仅仅是前一次错误的遗留物。
在任何情况下,世界上的HOW如何清除TCL串口上的'break'条件?
谢谢!
生锈
更新:这里是我们如何打开串口:
set state(com_port_handle) [open $name r+]
# Configure the COM port.
fconfigure $state(com_port_handle) -mode 115200,n,8,1 \
-blocking 0 \
-buffering none \
-translation binary
fconfigure $state(com_port_handle) -handshake none
当我们想迫使我们这边休息一下,我们这样做:
fconfigure $state(com_port_handle) -ttycontrol {break 1}
after 100
fconfigure $state(com_port_handle) -ttycontrol {break 0}
嗯,我还不知道如何清除这个条件,但我发现如果你不使用xonxoff模式,条件从不会发生。 Rusty – rustycar 2010-01-11 23:01:19
当你说BREAK时,你的意思是一个NUL/0x00/CTRL- @字符? – Jackson 2010-01-12 11:22:21
您是否尝试使用open命令的-ttycontrol选项禁用BREAK条件? – Jackson 2010-01-12 11:35:46