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

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.3/start.txt · Zuletzt geändert: 20.06.2016 (Externe Bearbeitung)

Seiten-Werkzeuge