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:
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.
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.
Ablauf:
Code:
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.
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?
Ich benutze die ComPort-Komponente TComPort aus CPortLib Library.
Toni
Der frühe Vogel fängt den Wurm, richtig.
Aber wird nicht auch der frühe Wurm vom Vogel gefressen?