Benutzer-Werkzeuge

Webseiten-Werkzeuge


k20:k20.3:k20.3.1:start

20.3.1 Timer-Projekte 1

Die vorgestellten Beispiele sind selbst entwickelten und erprobten Demonstrationsprogrammen aus unterschiedlichen Kapiteln entnommen. Es werden nur die Quelltext-Abschnitte angegeben, mit denen die Umsetzung des o.a. Konzepts sichtbar wird. Sie finden im Download-Bereich jeweils die Archive für das vollständige Projekt.

Digital

20.3.1.1 Beispiel 1 – Digitale Uhr

Abbildung 20.3.1.1.1: Digitale Uhr

Quelltext:

Private bTrennzeichen As Boolean
 
Public Sub Form_Open()  
  FMain.Center
  FMain.Text = "Tempus fugit ..."
  ...  
  LCDTimer.Delay = 1000 ' oder 500 (blinkender Doppelpunkt)
  LCDTimer.Start
  LCDTimer.Trigger  
End ' Form_Open() 
 
Public Sub LCDTimer_Timer()  
  bTrennzeichen = Not bTrennzeichen
  LCDLabel.Padding = 8
  LCDLabel.Text = Format(Now, "hh" & If(bTrennzeichen, ":", "") & "nn" & If(bTrennzeichen, ":", "") & "ss")  
End ' LCDTimer_Timer()

20.3.1.2 Beispiel 2 – Analoge Uhr

Analog

Abbildung 20.3.1.2.1: Analoge Uhr

Quelltext:

Public Sub Form_Open()
  FMain.Center
  FMain.Resizable = False
  ZeitLabel.Text = "Local-Time"
 
  Timer1.Delay = 1000 ' 1000 Millisekunden = 1 Sekunde
  Timer1.Start ' Alternative Syntax: Timer1.Enabled = TRUE
 
End ' Form_Open()
 
Public Sub Timer1_Timer() ' Taktgeber im Sekundentakt
  Dim sArcus, sArcus_S, sArcus_M, sArcus_H, x, y As Single
  Dim iRadius, iCount As Integer
 
  iRadius = 88
  sArcus_S = (90 - 6 * Second(Now)) * Pi / 180
  sArcus_M = (90 - 6 * Minute(Now)) * Pi / 180
  sArcus_H = (90 - 30 * Hour(Now) - 0.5 * Minute(Now)) * Pi / 180
 
  ZeitLabel.Text = Format$(Now, "hh:nn:ss")
 
  Draw.Begin(dwTest) ' Achtung: Seit GB 3.4 sollte Paint an Stelle von Draw verwendet werden
    Draw.Translate(dwTest.W / 2, dwTest.H / 2) ' Erst verschieben und dann skalieren!
    Draw.Scale(1, -1)
    Draw.Picture(Picture["Images/ziffernblatt.png"], -105, -105, 210, 210)
  ' Sekundenzeiger
    x = iRadius * Cos(sArcus_S)
    y = iRadius * Sin(sArcus_S)
    Draw.Foreground = Color.Red
    Draw.Line(0, 0, x, y)
  ' Minutenzeiger
    x = iRadius * Cos(sArcus_M)
    y = iRadius * Sin(sArcus_M)
    Draw.Foreground = Color.Green
    Draw.Line(0, 0, x, y)
  ' Stundenzeiger
    x = iRadius * Cos(sArcus_H)
    y = iRadius * Sin(sArcus_H)
    Draw.Foreground = Color.Blue
    Draw.LineWidth = 2
    Draw.Line(0, 0, x, y)    
  Draw.End 
 
End ' Timer1_Timer()   

20.3.1.3 Beispiel 3 – Uhr mit binärer Anzeige

Zugegeben – die Anzeige ist etwas ungewohnt; hat aber ihren Reiz dann, wenn Sie nach einiger Übung die Zeit von 14:09:24 Uhr sofort erfassen und ansagen können:

Binär

Abbildung 20.3.1.3.1: Binäre Anzeige der Uhrzeit

Quelltext

Public pBitPanel[24] As Panel
 
Public Sub Form_Open()
  Dim s As Integer
  Dim z As Integer
  Dim i As Integer
  ...
  For z = 1 To 4 ' 4 Zeilen
    For s = 1 To 6 ' 6 Spalten
      i = s + 6 * z - 7
      pBitPanel[i] = New Panel(Me) As "PDigit"
      pBitPanel[i].Background = &HE2E2E2
      pBitPanel[i].Move(16 + 62 * (s - 1), 16 + 62 * (z - 1), 52, 52)
    Next ' s
  Next ' z 
 
  Timer1.Delay = 1000
  Timer1.Start
  Timer1.Trigger
 
End ' Form_Open()
 
Public Sub Timer1_Timer()  
  DisplayTime(SetTimeMatrix()) ' Umfärben der 24 Panel
End ' Timer1_Timer()  
...

20.3.1.4 Beispiel 4 – Stopp-Uhr

Diese Stoppuhr wurde entwickelt, um End- und Zwischenzeiten für bestimmte Abläufe bequem ermitteln zu können. Neben den Start- und Stopp-Tasten gibt es auch eine Pause-Taste (die Anzeige wird nicht aktualisiert) und eine Weiter-Taste, welche die Anzeige wieder zuschaltet.

Stopp-Uhr

Abbildung 20.3.1.4.1: Stopp-Uhr

Quelltext:

' Gambas class file
 
Private bTimeOut As Boolean = False
Private bPause As Boolean = False
Private iSekunden As Integer = 0
Private iMinuten As Integer = 0
 
Public Sub Form_Open()
  FMain.Center
  FMain.Resizable = False
  TimerDP.Delay = 500
  TimerStoppUhr.Delay = 1000 ' Test: TimerStoppUhr.Delay = 1 oder 10
  FMain.Text = "Stop-Uhr: 0 " & String.Chr(&2266) & " Zeit " & String.Chr(&2266) & " 1 Stunde"
  SetModus(True, False, False, False)
  lcdAnzeigeSekunden.Value = 0
  lcdAnzeigeMinuten.Value = 0
End ' Form_Open()
 
Public Sub btnStart_Click()
  TimerStoppUhr.Start
  TimerDP.Start
  iSekunden = 0
  iMinuten = 0
  lcdAnzeigeSekunden.Value = 0
  lcdAnzeigeMinuten.Value = 0
  SetModus(False, True, False, True)
  FMain.Text = "Stop-Uhr: 0 " & String.Chr(&2266) & " Zeit " & String.Chr(&2266) & " 1 Stunde"
End ' btnStart_Click()
 
Public Sub btnPause_Click()  
  bPause = True
  SetModus(False, False, True, True)
End ' btnPause_Click()  
 
Public Sub btnWeiter_Click()
  bPause = False
  SetModus(False, True, False, True)
  lcdAnzeigeSekunden.Value = iSekunden
  lcdAnzeigeMinuten.Value = iMinuten
End ' btnWeiter_Click()
 
Public Sub btnStop_Click()
  TimerStoppUhr.Stop
  TimerDP.Stop
  SetModus(True, False, False, False)
  labelDoppelpunkt.Visible = True
  bPause = False
  lcdAnzeigeSekunden.Value = iSekunden
  lcdAnzeigeMinuten.Value = iMinuten
End ' btnStop_Click()
 
Public Sub TimerDP_Timer()
  labelDoppelpunkt.Visible = Not labelDoppelpunkt.Visible
End ' TimerDP_Timer()
 
Public Sub TimerStoppUhr_Timer()  
  If bPause = False Then
     Inc iSekunden
     lcdAnzeigeSekunden.Value = iSekunden
     If (iSekunden = 60) Then
        iSekunden = 0
        lcdAnzeigeSekunden.Value = 0
        Inc iMinuten
        lcdAnzeigeMinuten.Value = iMinuten
     Endif ' iSekunden = 60 ?
  Else
     Inc iSekunden
     If (iSekunden = 60) Then
        iSekunden = 0
        Inc iMinuten
     Endif ' iSekunden = 60 ?
  Endif '  bPause = False ?
 
  If (iSekunden = 59) And (iMinuten = 59) Then
     bTimeOut = True
  Endif ' Timeout ?
 
  If bTimeOut = True Then
     btnStop_Click()
     lcdAnzeigeMinuten.Value = 60
     lcdAnzeigeSekunden.Value = 0
     FMain.Text = "Eine Stunde ist erreicht ..."
     bTimeOut = False
  Endif ' bTimeOut = True ? 
 
End ' TimerStoppUhr_Timer()
 
Public Sub SetModus(iStart As Boolean, iPause As Boolean, iWeiter As Boolean, iStopp As Boolean)
     btnStart.Enabled = iStart
     btnPause.Enabled = iPause
     btnWeiter.Enabled = iWeiter
     btnStop.Enabled = iStopp
End ' SetModus(..)
 
Public Sub Form_Close()
  If TimerStoppUhr.Enabled Then TimerStoppUhr.Stop
  If TimerDP.Enabled Then TimerDP.Stop
End ' Form_Close()

Download

Wir verwenden Cookies, um unser Internetangebot optimal zu gestalten. Durch weitere Nutzung dieser Webseite stimmen Sie der Verwendung von Cookies zu. Informationen zu Cookies erhalten Sie in unserer Datenschutzerklärung
k20/k20.3/k20.3.1/start.txt · Zuletzt geändert: 20.06.2016 (Externe Bearbeitung)

Seiten-Werkzeuge