I'm trying to read COM & then stdin:
Working example:
set serial [open com1: r+]; fconfigure $serial -mode "9600,n,8,1"; fconfigure $serial -blocking 0 -buffering line; set run_it 1; while {$run_it == 1} { set data [gets $serial]; set size [string length $data]; if {$size} { set re {[^a-z0-9]*} regsub -nocase -- $re $data {} msg; # get first 18 characters set id [string range $msg 0 18]; puts stdout "ID: $id"; puts -nonewline stdout "Tag: " flush stdout; # stdout default buffering mode is LINE set tag [gets stdin]; puts "tag=$tag id=$id" } }