set port "/dev/ttyS0" #set port "com1"; #v nekterych operacnich(?) systemech se ttyS0 jmenuje i takto # otevreni a nastaveni parametru portu if {[catch {set com [open $port RDWR] }]==1 } { puts "error open $port"; exit 1} fconfigure $com -translation binary fconfigure $com -mode 2400,e,7,1 fconfigure $com -buffering none fconfigure $com -blocking 0 # kdyz prijde znak ze serialky, zavola se funkce rd_com fileevent $com readable rd_com proc rd_com {} { global com while {[expr ! [eof $com]]} { # bacha na errory - musi se odchytit, jinak to vyplazne okno s errorovou hlaskou a serialka prestane fungovat if {[catch {read $com 1} s]} { # nastal error na serialce - muze byt treba parity error nebo framing error, puts [fconfigure $com -lasterror] break } set l [string length $s] if {$l<=0} { break } # tady zpracovat znak co prisel ze serialky, je v $s } } # timto zpusobem muzu poslat na serialku co chci: puts -nonewline $com "co chci poslat na serialku" # dokonce i neco takoveho: puts -nonweline $com "\x02\x41\x42\x03"