Empfangen vom seriellen Port mithilfe von MScomm32.ocx in Visual FoxPro

In diesem Artikel werden zwei Methoden beschrieben, die in Visual FoxPro zum Empfangen von Daten vom seriellen Port mithilfe des Mscomm32.ocx-Steuerelements verwendet werden.

Ursprüngliche Produktversion: Visual FoxPro
Ursprüngliche KB-Nummer: 140525

Zusammenfassung

In diesem Artikel finden Sie zwei Techniken, die Sie verwenden können, um Daten vom seriellen Port mithilfe des Mscomm32.ocx-Steuerelements zu empfangen. Die erste verwendet eine ereignisgesteuerte Methode und erfordert nicht, dass Sie den seriellen Port abfragen müssen, um zu überprüfen, ob empfangene Zeichen vorhanden sind. Diese Technik ermöglicht die größte Flexibilität und erfordert keine umfangreiche Codierung, um Pufferüberläufe zu verhindern. Die zweite Technik erfordert, dass Sie den Eingabepuffer in regelmäßigen Abständen abfragen, um zu überprüfen, ob empfangene Zeichen vorhanden sind. In diesem Artikel werden diese beiden Techniken beschrieben, und es werden Beispiele für die einzelnen Verfahren bereitgestellt.

Weitere Informationen

Legen Sie die folgenden Eigenschaften unabhängig davon fest, welches Verfahren Sie verwenden:

  • CommPort property: Legen Sie diese numerische Eigenschaft auf den gewünschten Kommunikationsport fest. Gültige Werte sind 1, 2, 3 oder 4, abhängig von den verfügbaren seriellen Anschlüssen und der Konfiguration des einzelnen Computers. Diese Werte entsprechen Com1, Com2, Com3 bzw. Com4.

  • Settings -Eigenschaft: Legen Sie diese Zeicheneigenschaft auf die Baudrate, Parität, Datenbits und Stoppbits fest, die für das gerät erforderlich sind, das mit dem seriellen Port verbunden ist. Diese Eigenschaft ist eine durch Trennzeichen getrennte Liste. Wenn Sie beispielsweise den seriellen Port auf 14.400 Baud, Gleichmäßigkeit, 7 Datenbits und 1 Stoppbit festlegen möchten, legen Sie die Zeichenfolge auf fest. 14400,E,7,1

  • PortOpen property: Legen Sie diese logische Eigenschaft auf true fest, um die Kommunikation mit dem seriellen Port zu öffnen. Sie können diese Eigenschaft auch überprüfen, um festzustellen, ob der Port ordnungsgemäß geöffnet wurde.

Technik 1: Ereignisgesteuerter Empfang

Die ereignisgesteuerte Technik generiert ein OnComm Ereignis, wenn Zeichen im Eingabepuffer warten. Außerdem enthält die CommEvent-Eigenschaft eine numerische 2. Damit das OnComm Ereignis ausgelöst wird, müssen Sie die Rthreshold Eigenschaft auf einen anderen Wert als 0 (Standard) festlegen. Die häufigste Einstellung für die Rthreshold -Eigenschaft ist 1. Das bedeutet, dass das OnComm Ereignis ausgelöst wird, wenn mindestens ein Zeichen im Eingabepuffer wartet.

Beispielsweise können Sie den folgenden Code im OnComm -Ereignis platzieren, um empfangene Daten an eine Eigenschaft eines Formulars mit dem Namen mybufferanzufügen:

Procedure MyCom.OnComm
    IF This.CommEvent = 2
        ThisForm.mybuffer = ThisForm.mybuffer + This.Input
    ENDIF
ENDPROC

Technik 2: Abrufen des Eingabepuffers

Das Abrufen des Eingabepuffers erfordert, dass das Programm in regelmäßigen Abständen anhält, was es tut, und überprüft, ob Zeichen im Eingabepuffer warten. Wenn Sie dieses Verfahren verwenden, belassen Sie die Rthreshold Eigenschaft bei 0 (standardwert), und überprüfen Sie die InBufferCount Eigenschaft, um festzustellen, ob sie größer als 0 ist. Dies bedeutet, dass Zeichen im Puffer warten.

Hinweis

Die Verwendung einer Technik, z. B. der Überprüfung der Länge der Input-Eigenschaft, führt zu Zeichenverlusten, da sobald auf die Input-Eigenschaft zugegriffen wird, der Input-Puffer geleert wird. Verwenden Sie stattdessen die InBufferCount-Eigenschaft.

Unter der Annahme, dass sich das Mscomm-Steuerelement im Formular befindet und über den Namen MyCom verfügt und eine Formulareigenschaft mit dem Namen mybuffervorhanden ist, veranschaulicht der folgende Code, wie nach wartenden Zeichen abgefragt wird:

Procedure myform.myproc
    IF Thisform.MyCom.InBufferCount > 0
        Thisform.mybuffer = Thisform.mybuffer + Thisform.MyCom.Input
    ENDIF
ENDPROC

Der Prozedurcode könnte in einer Timermethode aufgerufen werden, um die Überprüfung auf Zeichen in halb normalen Intervallen zu erleichtern. Wenn jedoch erwartet wird, dass große Datenmengen vom seriellen Port empfangen werden, verringert Technik 1 die Wahrscheinlichkeit, dass der Eingabepuffer zu viel ausgeführt wird.