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"