I'm working on a program which makes heavy use of a serial port.
It is currently a windows-only program (unfortunately :-), running on Windows XP. The TCL version is 8.5.1.0 - it may or may not be an 'official' TCL, not sure.
Everything works perfectly until the device on the other end sends a BREAK (or, just disconnect the serial port :-).
Once that happens, data is still received fine, but sending data to the port via 'puts' results in no data going to the serial port. In fact, when I do send a character, asking fconfigure for the last error, it always says BREAK. Now, I don't know if that's just leftovers from the previous error or not.
In any case, HOW in the world does someone clear the 'break' condition on a serial port in TCL?
Thanks!
Rusty
Update: here's how we open the serial port:
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
When we want to force a break from our side, we do:
fconfigure $state(com_port_handle) -ttycontrol {break 1}
after 100
fconfigure $state(com_port_handle) -ttycontrol {break 0}