![]() |
Thread - Event dilemma
Hallo...
Ich hab, als Blackbox, ein Programm geschrieben, dass Daten vom ComPort empfängt. In meiner Entwicklungsumgebung (eine EXE) klappt das auch ganz gut. Jetzt soll aus dem Code, der daraus entstanden ist eine DLL werden und nun hab ich ein Problem bei der Umsetzung. Ablauf:
Code:
Das funkt soweit sehr zuverlässig. Allerdings kann der Event ja nur ausgelöst werden wenn ich in der Parser-Schleife regelmäßig ProcessMessages aufrufe - Klar. Dies geht nun aber weder in einem Thread noch in der DLL.
Programm wirft einen Befehl über den ComPort raus.
ComPort-Komponente löst einen Event "String empfangen" aus und speichert den String im Puffer. Programm lässt gleichzeitig einen Parser über den Puffer laufen und beendet diesen Vorgang sobald die "Needle" (also das, wonach gesucht wird) gefunden oder ein Timeout erreicht wurde. Ablauf:
Code:
Wie geht man jetzt weiter vor? Was kann ich tun? Wenn ich den Zugriff auf das Modem in einen Unter-Thread verlagere ist mir doch auch nicht geholfen, oder?
Programm wirft einen Befehl über den ComPort raus.
Parser scannt den Puffer und findet nur nen leeren String. Parser läuft in den Timeout. Event löst aus und schreibt in den Puffer. Ich benutze die ComPort-Komponente TComPort aus CPortLib Library. Toni |
Re: Thread - Event dilemma
Die 24 Stunden sind ja fast rum...
Ich hab das nun gelöst indem ich die AsyncPro Komponenten benutze. Bei vergleichbarem Aufbau (wie oben beschrieben) löst hier der Event aus. Auch im Thread und in der DLL. Muss ein Problem von der CPortLib sein. Toni |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:17 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz