Advertisement
Guest User

Untitled

a guest
Apr 4th, 2011
208
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
TCL 2.16 KB | None | 0 0
  1. package require Tk
  2. package require tile
  3.  
  4. ttk::frame .buttons
  5. pack .buttons -side top -fill both -padx 10 -pady 3
  6.  
  7. ttk::button .buttons.connect -text {Запустить} -command {start_modem}
  8. pack .buttons.connect -side left -fill x
  9.  
  10. set status "Настройка соединения"
  11. set data ""
  12.  
  13. set serial_port "/dev/ttyS0"
  14.  
  15. global status data
  16. global working_mode
  17. set working_mode "DATA"
  18.  
  19. set serial [open $serial_port r+]
  20. fconfigure $serial -mode "9600,n,8,1" -blocking 0 -buffering none -translation binary
  21. fileevent $serial readable [list serial_receiver $serial]
  22.  ############################################
  23.  proc start_modem {} {
  24.     global serial
  25.     global status
  26.     set status "Настройка соединения"
  27.     puts -nonewline $serial "AT\r"
  28.  }
  29.  
  30.  
  31. proc serial_receiver { chan } {
  32.  
  33. global working_mode
  34. global status data
  35.    
  36. if { [eof $chan] } {        
  37.   catch {close $chan}
  38.   return
  39.  }
  40.  
  41. if {[catch {read $chan} ans]} {
  42.   set ans ""
  43. }
  44.    
  45. if {$ans != ""} {
  46.   append data $ans
  47. }
  48.    
  49. if {[regexp \\r\\n $data]} {
  50.   switch $working_mode {
  51.   "DATA"    {
  52.     switch $status {
  53.       "Настройка соединения"    
  54.         {
  55.           if {[regexp OK\\r\\n $data]} {
  56.             set data ""
  57.             change_status $chan "Настройка модема"
  58.           } else {
  59.            *Вот здесь что-то вставить?*
  60.           }
  61.         }
  62.        "Настройка модема"        
  63.          {
  64.            if {[regexp OK\\r\\n $data]} {
  65.              set data ""
  66.              change_status $chan "Установка класса"
  67.            }
  68.          }
  69.       } #status
  70.     } #working_mode
  71.   } #if
  72. }
  73. }
  74.  
  75.  
  76.  proc change_status {chan prog_status} {
  77.    
  78.     set cmd ""
  79.    
  80.     switch $working_mode {
  81.     "DATA"  {
  82.                 switch $prog_status {
  83.                     "Настройка соединения"   {
  84.                         set cmd [set_command "AT"]
  85.                     }
  86.                     "Настройка модема"       {
  87.                         set cmd [set_command "ATQ0V1E0&D2X4S0=0"]
  88.                     }                  
  89.                 }
  90.             }          
  91.     }
  92.    
  93.     puts -nonewline $chan $cmd
  94.     flush $chan
  95.     set status $prog_status
  96.  }
  97.  
  98.  proc set_command {cmd} {
  99.     append cmd [format %c 13]
  100.     return $cmd
  101. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement