Für das siebte Beispiel ist der Quellcode in der Datei BeispielVBP im Verzeichnis
Bsp_7 einsehbar. Die folgenden Routinen werden aufgerufen, wenn der Schalter
Signale abfragen zur Programmlaufzeit im VB-Formular betätigt wird.
Code:
Private Sub bt_Eingang_abfragen_Click()
.
.
IF FT_GetModemStatus(lngHandle, ModemStatus) <> FT_OK Then
LoggerList.AddItem "Fehler bei Aufruf: FT_GetModemStatus"
Else
Me.Cb_cts.Value = (ModemStatus And &H10) / &H10
Me.cb_dsr.Value = (ModemStatus And &H20) / &H20
Me.cb_ri.Value = (ModemStatus And &H40) / &H40
Me.Cb_dcd.Value = (ModemStatus And &H80) / &H80
End If
.
.
End Sub
Der Funktionsaufruf FT_GetModemStatus zeigt den Zustand der jeweiligen Signalleitungen
im zurückgegebenen Wert ModemStatus in einzelnen Bits an. Diese müssen
abgefragt und einzeln weiter verarbeitet werden:
DCD RI DSR CTS X X X X = Modemstatus, die letzten 8 Bits
D7 D6 D5 D4 D0 = Datenbits
0 0 0 1 0 0 0 0 = Maske: &H10 (= HEX10)
Als Beispiel schauen wir uns die Verarbeitung von CTS an. CTS wird im Datenbit
D4 angezeigt. Mit (ModemStatus And &H10) wird das Datenbit D4 im ModemStatus
mit dem Datenbit D4 in der Maske &H10 logisch mit UND (AND) verknüpft.
Bei einer UND-Verknüpfung müssen beide Bits einen Wert von 1 besitzen, damit
das Ergebnis eine 1, bzw. ungleich 0 ist. Ist CTS 0, bleibt das Ergebnis 0 und das
Kontrollkäschen Cb_cts ist deaktiviert.
CTS = 0:
0 = CTS = 0
0 0 0 1 0 0 0 0 =MaskeHEX10
0 0 0 0 0 0 0 0 = Ergebnis = 0
CTS = 1:
1 = CTS = 1
0 0 0 1 0 0 0 0 =MaskeHEX10
0 0 0 1 0 0 0 0 = Ergebnis = Hex 10, bzw. dezimal 16
Nur wenn CTS eine 1 besitzt, erhält man in diesem Fall ein Ergebnis von 1. Das
Ergebnis aus (ModemStatus And &H10) würde in diesem Fall die Zahl 16
(= Hex10) sein. Damit das Ergebnis gleich alsWert 1 beim Kontrollkästchen Cb_cts
verwendet werden kann, muss noch durch die Maske &H10 geteilt werden.
Die weiteren Signale DCD, RI und DSR werden entsprechend der Position des Bits
im ModemStatus mit &H80, &H40 und &H20 maskiert.