Auswertung von Eingangssignalen
von Burkhard Kainka
HotPaw Basic unterstützt die Abfrage der CTS-Leitung mit fn serial(-5). Hier werden gleichzeitig die Leitungen DSR (1) und CTS(2) abgefragt. DSR ist beim untersuchten Modell nicht vorhanden. Zur gezielten Abfrage der CTS-Leitung kann man den Zustand des zweiten Bits mit AND 2 maskieren.
Das folgende kleine Programm zeigt eine einfache Alarmeinrichtung. Es wird ein Ton ausgegeben, solange der Eingang CTS hochgesetzt ist. Ein Kontakt zwischen DTR und CTS löst das Signal aus. Der erzeugte Klang ist kein Dauerton, sondern man hört sehr kurze Unterbrechungen für jede neue Abfrage.
#signal.bas
open "com1:",9600 as #5
sound 400,100,20
while 1
if fn serial(-5) = 2
sound 600,50,63
endif
wend
close #5
end
Ein Alarmsignal über CTS auslösen

Der Anschluss des Schaltkontakts
Ganzen Artikel lesen...
Das folgende Programm realisiert eine einfache Stoppuhr. Die Zeit läuft, solange der Schalter gedrückt ist. Hier wird der Timer des Palm OS mit einer Auflösung von 1/100 Sekunden abgefragt. Auf dem Schirm entsteht eine laufende Zeitanzeige mit Hunderstelsekunden. Nach dem Ende der Zeitmessung wird über den Print-Befehl ein Message-Fenster mit dem Endergebnis geöffnet, damit die Anzeige beliebig lange gelesen werden kann.
#stoppuhr.bas
open "com1:",9600 as #5
sound 400,100,63
draw -1
draw "Stoppuhr",50,20,2
in=fn serial(-5)
while in=0
in=fn serial(-5)
wend
start=timer(100)
while in=2
t$=str$((timer(100)-start)/100)
t$=t$+" s "
draw t$,50,60,2
in=fn serial(-5)
wend
close #5
draw -1
draw "Stoppuhr",50,20,2
print t$
Eine einfache Stoppuhr

Anzeige der laufenden Zeit
Ebenso einfach wie eine Stoppuhr lässt sich auch ein Impulszähler realisieren. In zwei While-Schleifen wird jeweils der Zustand CTS=0 und CTS=1 beobachtet. Jeder 0-1-Wechsel wird dann in der Variablen n gezählt.
Elektronische Digitalzähler kennen das Problem des Schalterprellens. Beim Schließen der Kontakte kommt es durch die Federwirkung zu mehreren schnellen Schaltspielen mit einer typischen Dauer bis zu einer Millisekunde. Zum Anschluss mechanischer Kontakte müssen daher aufwendige Maßnahmen zur Entprellung bedacht werden. Ein Softwarezähler in HotPaw Basic hat dagegen allein auf Grund seiner relativen Langsamkeit eine wirksame Entprellung. Schaltereignisse werden daher zuverlässig gezählt.
#zaehler.bas
open "com1:",9600 as #5
draw -1
draw "Zähler",50,20,2
n=0
in=(fn serial(-5)) and 2
while 1
while in = 2
in=(fn serial(-5)) and 2
wend
n=n+1
t$=str$(n)
draw t$,50,60,2
while in = 0
in=(fn serial(-5)) and 2
wend
wend
close #5
end
Listing 3.7 Ein Impulszähler

Anzeige der gezählten Eingangsimpulse
Literatur: C-Control-Pro

Lernen Sie die ganze Vielfalt vom Franzis Buch- und Softwareverlag kennen