k20:k20.3:k20.3.3:start
Inhaltsverzeichnis
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.
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
k20/k20.3/k20.3.3/start.txt · Zuletzt geändert: von 127.0.0.1

