Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Artikel werden zwei Methoden zum Empfangen von Daten vom seriellen Port mithilfe des Mscomm32.ocx-Steuerelements in Visual FoxPro beschrieben.
Originalproduktversion: Visual FoxPro
Ursprüngliche KB-Nummer: 140525
Übersicht
Dieser Artikel enthält zwei Techniken, mit deren Hilfe Sie Daten vom seriellen Port mithilfe des Mscomm32.ocx-Steuerelements empfangen können. Die erste verwendet eine ereignisgesteuerte Methode und erfordert nicht, dass Sie den seriellen Port abfragen, 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 regelmäßig abfragen, um das Vorhandensein von empfangenen Zeichen zu überprüfen. In diesem Artikel werden diese beiden Techniken beschrieben, und es werden Beispiele für die einzelnen Methoden bereitgestellt.
Weitere Informationen
Legen Sie die folgenden Eigenschaften unabhängig davon fest, welche Technik Sie verwenden:
CommPort
-Eigenschaft: 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 Ports und der Konfiguration des einzelnen Computers. Diese Werte entsprechen Com1, Com2, Com3 und Com4.Settings
Eigenschaft: Legen Sie diese Zeicheneigenschaft auf die Baudrate, Parität, Datenbits und Stoppbits fest, die das mit dem seriellen Port verbundene Gerät benötigt. Diese Eigenschaft ist eine kommagetrennte Liste. Um beispielsweise den seriellen Port auf 14.400 Baud, Even Parity, 7 Data Bits und 1 Stop Bit festzulegen, legen Sie die Zeichenfolge auf: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 löst ein OnComm
Ereignis aus, 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, d. h., das OnComm
Ereignis wird ausgelöst, wenn mindestens ein Zeichen im Eingabepuffer wartet.
Sie können beispielsweise den folgenden Code im OnComm
-Ereignis platzieren, um empfangene Daten an eine Eigenschaft eines Formulars anzufügen, das mybuffer
genannt wird.
Procedure MyCom.OnComm
IF This.CommEvent = 2
ThisForm.mybuffer = ThisForm.mybuffer + This.Input
ENDIF
ENDPROC
Technik 2: Abfragen des Eingabepuffers
Das Abrufen des Eingabepuffers erfordert, dass das Programm in regelmäßigen Abständen seine Tätigkeit unterbricht und überprüft, ob Zeichen im Eingabepuffer warten. Wenn Sie diese Technik verwenden, behalten Sie die Rthreshold
Eigenschaft bei 0 (standardwert), und überprüfen Sie die InBufferCount
Eigenschaft, um festzustellen, ob sie größer als 0 ist, was angibt, dass zeichen im Puffer warten.
Notiz
Die Verwendung einer Technik wie die Überprüfung der Länge der Input-Eigenschaft führt zu verlorenen Zeichen, da sobald auf die Input-Eigenschaft zugegriffen wird, der Eingabepuffer geleert wird. Verwenden Sie stattdessen die InBufferCount-Eigenschaft.
Angenommen, das Mscomm-Steuerelement befindet sich auf dem Formular und hat den Namen MyCom
und dass es eine Formulareigenschaft mit dem Namen mybuffer
gibt, veranschaulicht der folgende Code, wie man auf wartende Zeichen abfragt:
Procedure myform.myproc
IF Thisform.MyCom.InBufferCount > 0
Thisform.mybuffer = Thisform.mybuffer + Thisform.MyCom.Input
ENDIF
ENDPROC
Der Prozedurcode kann in einer Timermethode aufgerufen werden, um die Überprüfung auf Zeichen in halbregelmäßigen Intervallen zu erleichtern. Wenn jedoch erwartet wird, dass große Datenmengen vom seriellen Port empfangen werden, verringert Technik One die Wahrscheinlichkeit, dass der Eingabepuffer überlastt wird.