Pro posilani dat je mozne vyzkouset napriklad toto:
set rsport [open /dev/ttyUSB0 w+]
fconfigure $rsport -blocking 1 -buffering none
...
set bytin [read $rsport 1]
Dalsi rizeni (napriklad me oblibene ovladani pomoci RTS, CTS, DTR... - tim se da delat pseudoparalelni prenos dat) se vsak musi provadet pres nejakou utilitu.
# 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\"
# 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"
tento skripťík zobrazí výrobní číslo mobilu který je připojen na com4
někde sem to po dleším heldání vygoglil. Je to trošku upravené k obrazu mému původně do posílalo asi 20 dotazů mobilu jestli je spojení aktivní.
# Open and configure the serial comm port
set fileID [open COM4: r+]
fconfigure $fileID -blocking 0 -buffering line -mode 9600,n,8,1 -translation {crlf cr} -eofchar {}
proc snd {co} {
global fileID
# Send "AT" command
puts $fileID $co
# Wait 2 seconds for "OK" response
after 2000
# Display loop iteration and comm port buffer contents
return "[read $fileID 80]"
}
set a [snd "at+gsn"]
set a [split $a]
set a [lindex $a 2]