RCOPEN24

rCOS RCOPEN24 RX12-AVR AVR-Speak BkSave RCDI SSDEMUX CSV2AVI FM-Manager

scan-tool/scanner-tool.tcl


  1: #!/usr/bin/wish
  2: #
  3: #
  4: 
  5: global line
  6: set line ""
  7: 
  8: proc draw {TITLE TAG LEN} {
  9:         global VALUE
 10:         global VALUE2
 11:         set Y 2
 12:         set H 12
 13:         set R 12
 14:         frame .$TAG
 15:         pack .$TAG -side left -fill x
 16:         label .$TAG.errors1 -text "$TITLE"
 17:         pack .$TAG.errors1 -side top -fill x -expand yes
 18:         canvas .$TAG.screen -relief raised -width 320 -height [expr $Y + (($LEN) * $R)]
 19:         pack .$TAG.screen -side top -fill x
 20:         set N 1
 21:         while {$N <= $LEN} {
 22:                 eval .$TAG.screen create rectangle 1 [expr $Y + ($N - 1) * $R] 320 [expr $Y + ($N - 1) * $R + $H] -width 1
 23:                 eval .$TAG.screen create rectangle 1 [expr $Y + ($N - 1) * $R] 160 [expr $Y + ($N - 1) * $R + $H] -width 1 -tags $TAG$N-3 -fill yellow
 24:                 eval .$TAG.screen create rectangle 1 [expr $Y + ($N - 1) * $R] 160 [expr $Y + ($N - 1) * $R + $H] -width 1 -tags $TAG$N-2 -fill green
 25:                 eval .$TAG.screen create rectangle 1 [expr $Y + ($N - 1) * $R] 320 [expr $Y + ($N - 1) * $R + $H] -width 1 -tags $TAG$N   -fill red
 26:                 set VALUE($N) 0
 27:                 set VALUE2($N) 0
 28:                 incr N
 29:         }
 30: }
 31: 
 32: 
 33: proc update {TAG VALUES LEN FAC} {
 34:         global VALUE
 35:         global VALUE2
 36:         set Y 2
 37:         set H 12
 38:         set R 12
 39:         set N 1
 40:         while {$N <= $LEN} {
 41:                 if {[string is integer [lindex $VALUES $N]]} {
 42:                         set value [expr [expr [lindex $VALUES $N]] * 320 / 16]
 43:                         eval .$TAG.screen coords $TAG$N   1 [expr $Y + ($N - 1) * $R] [expr $value + 1] [expr $Y + ($N - 1) * $R + $H]
 44:                         eval .$TAG.screen coords $TAG$N-2 1 [expr $Y + ($N - 1) * $R] [expr \$VALUE($N) + 1] [expr $Y + ($N - 1) * $R + $H]
 45:                         eval .$TAG.screen coords $TAG$N-3 1 [expr $Y + ($N - 1) * $R] [expr \$VALUE2($N) + 1] [expr $Y + ($N - 1) * $R + $H]
 46: 
 47:                         if {$value >= $VALUE($N)} {
 48:                                 set VALUE($N) $value
 49:                         } else {
 50:                                 incr VALUE($N) -1
 51:                         }
 52: 
 53:                         if {$value >= $VALUE2($N)} {
 54:                                 set VALUE2($N) $value
 55:                         } else {
 56:                                 set VALUE2($N) [expr $VALUE2($N) - 0.01]
 57:                         }
 58: 
 59:                         incr N
 60:                 }
 61:         }
 62: }
 63: 
 64: proc Serial_Init {ComPort ComRate} {
 65:         set iChannel [open $ComPort w+]
 66:         set rate $ComRate
 67:         fconfigure $iChannel -mode $ComRate,n,8,1
 68:         fconfigure $iChannel -blocking 1
 69:         fconfigure $iChannel -buffering line
 70:         fileevent $iChannel readable ""
 71:         return $iChannel
 72: }
 73: 
 74: proc rd_chid {chid} {
 75:         global line
 76:         set msg [read $chid 1]
 77:         if {$msg == "\n"} {
 78:                 if {[string match "S;*" $line]} {
 79:                         puts "#$line#"
 80:                         update "b.rssi" [split $line ";"] 16 3
 81:                 }
 82:                 set line ""
 83:         } else {
 84:                 set line "$line$msg"
 85:         }
 86: }
 87: 
 88: 
 89: #wm geometry . 320x250
 90: wm title . "RCOPEN24 Scanner-Tool"
 91: 
 92: frame .b
 93: pack .b -side top -fill x
 94: 
 95:         draw "RSSI" "b.rssi" 16
 96: 
 97: if {[lindex $argv 0] != ""} {
 98:         puts "Open Serial-Port: [lindex $argv 0]"
 99: 
100:         if {[lindex $argv 1] != ""} {
101:                 set Serial [Serial_Init "[lindex $argv 0]" [lindex $argv 1]]
102:         } else {
103:                 set Serial [Serial_Init "[lindex $argv 0]" 38400]
104:         }
105: } else {
106:         puts "USAGE: rx-tool COMPORT [BAUD]"
107:         exit 1
108: }
109: 
110: fileevent $Serial readable [list rd_chid $Serial]
111: