Frage

Can't seem to disconnect properly from the com port in use and end the spawned process. I need to disconnect from the COM port, then reconnect.

# Read the COM port from the command line
if { $argc >= 1 } {

   set file [lindex $::argv 0]
} else {

    set file /dev/ttyUSB0
}

set fh [open $file RDWR]

fconfigure $fh -mode "115200,n,8,1" -blocking 0 -buffering none -eofchar {}
spawn -open $fh -noecho 
War es hilfreich?

Lösung 2

The problem was that I was using "source" to run my other tcl scripts when I should have been using exec. Now I can allow my device to shut off, then turn back on and communicate again.

Andere Tipps

To disconnect from the serial port, you've got to close the channel (because that translates into a close on the underlying OS file descriptor). Because you've attached it to an expect spawn_id (the result of the spawn) you have to close that. You do that with:

close -i $spawn_id

Though if you only have one thing spawned at a time, you can just:

close

You'll have to go through the whole process (open, fconfigure and optionally spawn -open) again to reconnect. You might want to refactor that out into a procedure…

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top