| CASS hat folgendes geschrieben: |
| Ich muss vor jedem schicken eines Befehls einen Handshake machen. |
Also das sollte das kleinere Problem sein. Ich würd da einfach ne function schreiben, welche das "abkapselt". Also bisschen Pseudo-Code:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| function SendMessageToCOMPort:boolean; begin HandshakeSenden; if HandshakeOK then EigentlicheMessageSenden else result := false; end; |
Dann rufst du in zukunft einfach nur noch SendMessageToCOMPosrt auf und überprüfst, ob da false zurück kommt.
| Zitat: |
Zusätzlich muss ich noch irgendwas einbauen, dass ich merk, wenn etwas an
der Verbindung nicht stimmt, und mir das Gerät gar keine antwort schickt. |
Das is wahrscheinlich etwas komplexer. Ich würde das nun mit nem Thread machen. Und zwar läßt nen Thread laufen, der ständig überprüft, ob die Message schon angekommen ist (das is einfach per Boolean-Variable zu lösen) und wenn die Message dann da is, dann würd ich den Thread beenden. Daneben würd ich nen zweiten Thread laufen lassen, mit dem du per
WAITFORSINGLEOBJECT auf den ersten wartest und ne Zeitspanne angibst, wie lang du maximal warten willst (wär dann dein timeout). Ist diese Zeitspanne abgelaufen und du hast noch keine antwort bekommen, gibst ne menldung aus.
Zur Einführung in Threads:
www.pergolesi.demon....rog/threads/ToC.html ,
www.delphi-source.de...ials/threads/?page=1 und
tutorials.luckie-online.de/ (@Luckie: diesmal hab ich deinen link auch dabei

)
MrSaint
P.S.: Evtl. hat aber auch deine COM-Koponente einen Timeout! Einfach mal nachschauen!
Andrew S. Tanenbaum - Modern Operating Systems