version 1.1, 2005/08/26 00:36:53
|
version 1.2, 2005/08/27 05:31:18
|
Line 0
|
Line 1
|
|
#!/usr/bin/wish |
|
set DEVICE "/dev/ttyUSB0" |
|
|
|
set SRLFILE [open $DEVICE r+] |
|
fconfigure $SRLFILE -blocking 0 -translation binary -encoding binary -buffering none -mode 57600,n,8,1 |
|
|
|
set idle 0 |
|
set waiting 1 |
|
|
|
set state $idle |
|
|
|
|
|
set buttoncode 256 |
|
for {set i 1} {$i <=8} {incr i} { |
|
set button($buttoncode) $i |
|
set buttoncode [expr $buttoncode*2] |
|
} |
|
|
|
proc readbuffer {} { |
|
global SRLFILE button |
|
set key 0 |
|
set message [read $SRLFILE] |
|
binary scan $message s key |
|
set key [expr $key & 0xFFFF] |
|
if {[catch {set key $button($key)}] == 0} { |
|
return $key |
|
} |
|
return 0 |
|
} |
|
|
|
puts $SRLFILE s |
|
after 200 |
|
readbuffer |
|
puts $SRLFILE r |
|
after 200 |
|
readbuffer |
|
|
|
|
|
|
|
button .start -text "Start" -command start |
|
pack .start |
|
label .pressed |
|
pack .pressed |
|
|
|
|
|
proc start {} { |
|
global SRLFILE state idle waiting |
|
readbuffer |
|
.start configure -state disabled -command {} |
|
set state $waiting |
|
} |
|
|
|
proc body {} { |
|
global state idle waiting |
|
update idletasks |
|
if { $state == $waiting } { |
|
set pressed [readbuffer] |
|
if { $pressed != 0 } { |
|
set state $idle |
|
.start configure -state active -command start |
|
.pressed configure -text "Pressed $pressed" |
|
puts $pressed |
|
readbuffer } |
|
} else { |
|
readbuffer |
|
} |
|
after 10 body |
|
} |
|
|
|
body |
|
|
|
|
|
|
|
|
|
|