Posted to tcl by bjorkintosh at Tue Apr 17 13:08:04 GMT 2012view raw

  1. package require Tk
  2. package require Ttk
  3. package require img::jpeg
  4. ttk::style theme use clam
  5. wm withdraw .
  6. set main .scoreboard
  7. toplevel $main
  8. bind .scoreboard <KeyPress-F11> { wm attributes .ieee -fullscreen 1 }
  9. wm title .scoreboard "Score Board"
  10.  
  11. tk_setPalette background white activeBackground gray activeForeground black
  12. #tk_bisque
  13.  
  14. set windevice {com1 com2 com3 com4 com5 com6 com7 com8 com9}
  15. set nixdevice {/dev/ttyACM0 /dev/ttyACM1 /dev/ttyACM2 /dev/ttyACM3 /dev/ttyACM4}
  16. set nixdevice2 {/dev/ttyACM0 /dev/ttyACM1 /dev/ttyACM2 /dev/ttyACM3 /dev/ttyACM4}
  17.  
  18. set devport1 /dev/ttyACM0
  19. set devport2 /dev/ttyACM1
  20. set comm1 [open $devport1 r+]
  21. set comm2 [open $devport2 r+]
  22. set sourcer1 .scoreboard.middle.field1.timer
  23. set sourcer2 .scoreboard.middle.field2.timer
  24.  
  25. chan configure $comm1 -mode 9600,n,8,1 -blocking 1 -buffering none
  26. chan event $comm1 readable [list Reader $comm1 $sourcer1]
  27. chan configure $comm2 -mode 9600,n,8,1 -blocking 1 -buffering none
  28. chan event $comm2 readable [list Reader $comm2 $sourcer2]
  29.  
  30. proc Reader {fid sourcer} {
  31. if {[chan gets $fid odata] < 0} {
  32. if {[chan eof $fid]} {
  33. catch {chan close $fid}
  34. set done 1
  35. return
  36. }
  37. }
  38. #set data [string range $odata 2 6]
  39. set data [lindex [split $odata _ ] 0 ]
  40. $sourcer configure -state normal
  41. $sourcer insert end $data {} \n {}
  42. $sourcer see end
  43. $sourcer configure -state disabled
  44. }
  45. proc msgall {msg chanl} {
  46. foreach chan $chanl {
  47. puts -nonewline $chanl $msg
  48. }
  49. }
  50.  
  51. frame .scoreboard.top -relief groove -borderwidth 1
  52. labelframe .scoreboard.top.imgleft
  53. set solar [image create photo solar -file rsrcs/solar.jpg]
  54. pack [label .scoreboard.top.imgleft.solar -image solar]
  55. pack [label .scoreboard.top.imgleft.flag1 -text "Field1"] -side left
  56. pack [label .scoreboard.top.imgleft.flag2 -text "Field2"] -side right
  57. pack .scoreboard.top.imgleft -side left -padx 10
  58.  
  59. #pack [label .scoreboard.top.solar -image solar] -side left
  60. set logo [image create photo logo -file rsrcs/logo.gif]
  61. pack [label .scoreboard.top.logo -image logo] -ipadx 55m
  62.  
  63. labelframe .scoreboard.top.imgright
  64. set wind [image create photo wind -file rsrcs/wind.jpg]
  65. pack [label .scoreboard.top.imgright.wind -image wind ]
  66. pack [label .scoreboard.top.imgright.flag1 -text "Field1"] -side left
  67. pack [label .scoreboard.top.imgright.flag2 -text "Field2"] -side right
  68. pack .scoreboard.top.imgright -side right -padx 10
  69.  
  70. #set wind [image create photo wind -file rsrcs/wind.jpg]
  71. #pack [label .scoreboard.top.wind -image wind] -side right -pady 5m
  72. pack .scoreboard.top -expand true -side top -fill x
  73.  
  74. frame .scoreboard.middle -borderwidth 1
  75. set splash [image create photo splash -file rsrcs/splash.jpg]
  76. #pack [label .scoreboard.middle.splash -image splash]
  77. #pack [button .scoreboard.middle.timer -image splash -font {Helvetica 90} -text "Timer Info" -command exit -compound center ]
  78. #pack [label .scoreboard.middle.timer -font {Helvetica 90} -textvariable timerdatum ]
  79.  
  80. labelframe .scoreboard.middle.field1 -text Field1
  81. pack [text .scoreboard.middle.field1.timer -font {Helvetica 30} -height 2 -width 5 -state disabled -state disabled]
  82. pack .scoreboard.middle.field1 -side left -padx 10
  83.  
  84. labelframe .scoreboard.middle.field2 -text Field2
  85. pack [text .scoreboard.middle.field2.timer -font {Helvetica 30} -height 2 -width 5 -state disabled -state disabled]
  86. pack .scoreboard.middle.field2 -side right -padx 8
  87. pack .scoreboard.middle -fill x
  88.  
  89. frame .scoreboard.bottom -relief groove -borderwidth 1
  90. labelframe .scoreboard.bottom.power
  91. labelframe .scoreboard.bottom.power.left -text "Field 1"
  92. pack [spinbox .scoreboard.bottom.power.left.dev1 -width 10 -textvariable devport1 -values $nixdevice]
  93. pack [button .scoreboard.bottom.power.left.start1 -text "Start" -command [list chan puts -nonewline $comm1 " "]] -fill x
  94. pack [button .scoreboard.bottom.power.left.reset1 -text "Reset" -command [list chan puts -nonewline $comm1 "r"]] -fill x
  95. pack .scoreboard.bottom.power.left -side left
  96.  
  97. labelframe .scoreboard.bottom.power.right -text "Field 2"
  98. pack [spinbox .scoreboard.bottom.power.right.dev2 -width 10 -textvariable devport2 -values $nixdevice]
  99. pack [button .scoreboard.bottom.power.right.start2 -text "Start" -command [list chan puts -nonewline $comm2 " "]] -fill x
  100. pack [button .scoreboard.bottom.power.right.reset2 -text "Reset" -command [list chan puts -nonewline $comm2 "r"]] -fill x
  101. pack .scoreboard.bottom.power.right -side left
  102.  
  103. labelframe .scoreboard.bottom.power.all -text "Both"
  104. #pack [button .scoreboard.bottom.power.all.start -text TestAll -command [list chan puts -nonewline $comm2 "t"]] -fill x
  105. #pack [button .scoreboard.bottom.power.all.reset -text ResetAll -command [list chan puts -nonewline $comm2 "r"]] -fill x
  106. pack [button .scoreboard.bottom.power.all.start -text TestAll -command [list msgall " " [list $comm1 $comm2]]] -fill x
  107. pack [button .scoreboard.bottom.power.all.reset -text ResetAll -command [list msgall "r" [list $comm1 $comm2]]] -fill x
  108. pack [button .scoreboard.bottom.power.all.exit -text Exit -command exit] -fill x
  109. pack .scoreboard.bottom.power.all -side right
  110. pack .scoreboard.bottom.power -side right -padx 8
  111.  
  112. labelframe .scoreboard.bottom.img
  113. set barrel [image create photo barrel -file rsrcs/biofuel.jpg]
  114. pack [label .scoreboard.bottom.img.barrel -image barrel] -side top
  115. pack [label .scoreboard.bottom.img.flag1 -text "Field1"] -side left
  116. pack [label .scoreboard.bottom.img.flag2 -text "Field2"] -side right
  117. pack .scoreboard.bottom.img -side left
  118. pack .scoreboard.bottom -expand true -side bottom -fill x
  119. #grid .scoreboard.bottom -expand true -side bottom -fill x