Wie bereits in der vorigen Frage angedeutet, versuche ich mithilfe einer Basisklasse und den daraus abgeleiteten Klassen sich wiederholende Elemente zu vereinfachen.
Ich hoffe, ich verwende die korrekte Nomenklatur.
Im Grundprinzip werden über einen CAN-Bus eintreffende Nachrichten im ersten Schritt nach einem Typcode aufgeteilt und dann an die jeweils zuständige Klasse weitergeleitet.
Das funktioniert momentan etwa so:
select case typcode
case 4711:
Call classA.HandleMessage(nachricht)
case 0815:
call ClassB.HandleMessage(nachricht)
Ob das besser geht, sei dahin gestellt.
Ausserdem gibt es ein Kommandobyte, welches je nach Absender der NAchricht verschiedene Aktionen auslöst.
Dabei gibt es manche Kommandos/Nachrichten, die bei allen Absendern gleich sind, z.B. "Alive", "Ready" oder "Busy" u.a.
Andere sind spezifisch, z.B "Taste gedrückt" oder "Winkel"
Dementsprechend möchte ich die generischen Kommandos/Nachrichten von der Basisklasse behandeln lassen , die spezifischen aber jeweils in der Tochterklasse.
Wie realisiert man das ?
Die Funktion HandleMessage müsste wahrscheinlich in jeder Tochterklasse vorhanden sein und die spezifischen Codes abarbeiten und bei fehlender Zuständigkeit eine Funktion der übergeordneten Klasse aufrufen - richtig ?
Ich habe zwar bereits funktionierenden Code, der wird aber zunehmend unüberischtlicher.