Ich verstehe noch immer nicht, wo das Problem sein soll. Was ich bisher, nachdem nun weitere Informationen vorliegen, verstanden habe:
- Eine CNC-Maschine sendet bei Änderung eines ihrer Parameter einen Bytecode an die serielle Schnittstelle.
- Ein eigenständiger Thread pollt diesen Input im Millisekunden-Abstand.
- Weicht der eingegangene Byetcode vom voherigen ab, soll ein Ereignis ausgelöst werden.
Hier muß man sich doch einfach nur den eingegangenen Bytecode merken und mit dem aktuellen vergleichen. Weist der neue Bytecode Unterschiede zum gespeicherten Bytecode auf, wird der neue Bytecode gespeichert und danach ein Ereignis ausgelöst, auf das eine Methode in der aufrufenden
Unit oder Form reagiert. Da der gemerkte Bytecode außerhalb des pollenden Threads nicht verändert wird, ist auch keine Synchronisation notwendig.
Nachtrag: Es gibt doch diese
AsyncPro-Komponente, mit der man, soweit ich informiert bin, alles handeln kann, was mit seriellen Schnittstellen zusammenhängt. Ich bin mir sicher, daß diese Komponentensammlung auch die Möglichgkeit beinhaltet, einen
Com-Port zu überwachen und bei gewissen Änderungen ein Ereignis auszulösen:
The TApdComPort is designed to interface with a standard RS-232 or RS-485 serial port via the Windows communication drivers. (Quelle: DevGuide, S. 11)
Triggers and trigger handlers
Async Professional uses the term "trigger" for any serial port action that can cause its communications dispatcher to generate a VCL event. There are four types of triggers:
- Data available – received data ist available
- Data match trigger – a particular character or character string was received.
- Status trigger – a status event occured
- Time trigger – a timer expired.
Quelle: Reference Guide, Seite 22