Hallo Sir Rufo
Vielen Dank für das Programmbeispiel. Leider konnte ich es
nicht laufenlassen, da es im ContainerData beim Sleep
mit kompilieren hängen bleibt.
Nach dem ersten Durchsicht Deines Beispiels würde es für mich bedeuten, dass Bestehende komplett über Bord zu werfen und neu anzufangen.
Da, wenn ich es dann erlebe, werde ich noch 85 Jahre alt(jetzt 75).Das Jetztige Programm war 6 MannJahre.
Ich muss zuerst erwähnen, dass der bisherige Programm 16 Menüs hat, mit jeweils einigen Untermenüs. Das was Du gesehen hast, ist nur ein sehr kleine Teil des Ganzen.
Die Kommunikation geht nicht nur in der Richtung
CNC => PC sondern auch umgekehrt PC => CNC.
Also möchte ich es nicht allzu puristisch betrachten, sondern pragmatisch der kritischste Problem von
COM Schnittstelle lösen.
Da die Eingabe von z.bsp Koordinaten sich ohne weiteres
mit Delphi konformen Mittel gewährleisten lässt, bleibt
nur die
COM Schnittstelle die als thread laufen muss ( da bin ich mit Dir vollkommen einig).
Und die Schnittstelle ist es auch, die mir offenbar alle die Folge-Probleme bereitet(wie KeyPress).
Und es geben prinzipiell nur zwei mögliche Events :
1: Meldungsinhalte die von CNC kommen (sind in globalen
variablen (records) gespeichert(durch RSCOM).
(in der Beilage die globale Var.Deklaration und jetztige EmpfangsProcedur(getblk)als Bsp.)
2: Eingabe der Koordinaten oder Einzelzeichen (Funktionstasten), es wird keine Maus gebraucht.
Schon das alte Programm dürfte nicht stehen bleiben,damals hat man es mit timeouts gelöst, was heute
sicher anders lösbar ist.
Es gibt also auch eine Variante das Ganze mit WinCRT/WinGraph funktionen zu lösen, (also gar nicht
OOP),mit Ausnahme von einem Menue braucht es lediglich nur Linien.
Soviel zum gesamt Problem.
Gruss Anton