Benutzer-Werkzeuge

Webseiten-Werkzeuge


k20:k20.3:k20.3.3:start

20.3.3 Timer-Projekte 3

20.3.3.1 Beispiel 10 – Extended Timer

Im Beispiel 10 wird von folgender technischen Situation ausgegangen:

Eine Applikation fragt die Frequenz eines Amateurfunk-Empfängers (RX) – hier im 20m-Band – im Abstand von 100·ms über eine serielle Schnittstelle ab. Ein separater Sender (TX) soll nach folgendem Ansatz auf die aktuelle RX-Frequenz eingestellt werden:

  • Solange die RX-Frequenz am RX mit dem Drehknopf geändert wird, bleibt die eingestellte TX-Frequenz unverändert.
  • Erst wenn die neue RX-Frequenz für mehr als 1 Sekunde konstant blieb, wird nach dieser Sekunde die TX-Frequenz auf die aktuelle RX-Frequenz gezogen – mit ihr synchronisiert.
  • Eine LED signalisiert mit den beiden Farben grün und rot den Synchronisationszustand.

RX-TX

Abbildung 20.3.3.1.1: Digitale Frequenz-Anzeige → RX und TX synchronisiert

Quelltext-Ausschnitt aus der o.a. Applikation (Realisierung Extended Timer):

Public Sub Form_Open()  
  FMain.Center
  FMain.Resizable = False  
  Dial1.MinValue = 14000000
  Dial1.MaxValue = 14355000
  Dial1.PageStep = 1000
  Dial1.Step = 100
  Dial1.Value = 14325200
  Dial1.Wrap = True  
  LCDLabel.Alignment = Align.Center
  LCDLabel.Border = True
  LCDLabel.Background = &HC3DDFF& 
  LCDLabel.Foreground = &H0000FF&
  SetLEDColor("green")
  syncTimer.Delay = 1000
 
End ' Form_Open()
 
Public Sub Dial1_Change()
  LCDLabel.Text = Format(Dial1.Value, "00,000000")
  syncTimer.Stop
  syncTimer.Start
  SetLEDColor("red")
End ' Dial1_Change()
 
Public Sub syncTimer_Timer()
  syncTimer.Stop
  SetLEDColor("green")
End ' syncTimer_Timer()
 
Public Sub SetLEDColor(sLEDColor As String)  
  PictureBox1.Picture = Picture["LED/led_" & sLEDColor & ".svg"]
End ' SetLEDColor(..)
 
Public Sub Form_Close()
  If syncTimer.Enabled = True Then syncTimer.Stop
End ' Form_Close()
  • Tritt das Ereignis Dial1_Change ein – die RX-Frequenz wird geändert – so wird der syncTimer gestoppt und sofort neu gestartet, was wieder eine volle Sekunde Taktzeit für den syncTimer bedeutet.
  • Wenn das Dial1_Change-Ereignis nicht innerhalb der Delay-Zeitspanne des Timers auftritt, dann wird das syncTimer_Timer()-Event auslöst und Sender- sowie Empfänger-Frequenz werden synchronisiert.

Download

Die Website verwendet zwei temporäre Session-Cookies. Diese technisch notwendigen Cookies werden gelöscht, wenn der Web-Browser geschlossen wird! Informationen zu Cookies erhalten Sie in der Datenschutzerklärung.
k20/k20.3/k20.3.3/start.txt · Zuletzt geändert: 20.06.2016 (Externe Bearbeitung)

Seiten-Werkzeuge