Hallo,
ich habe ein kleines Problemchen, das aus meiner Sicht auch nicht in anderen Forumsbeiträgen beehandelt wird.
ich habe eine Klasse, die eine Schnittstelle überwacht. Die Daten, die irgendwann empfangen werden, sollen weiterverarbeitet werden. jetzt möchte ich die Ververarbeitung in einer anderen Klasse machen, um die Schnittstelle gut zu kapseln und wiederverwendbar zu machen.
Nach ein wenig Recherche glaube ich, dass ein möglicher Ansatz der mit Funktionszeigern ist. Auch habe ich gehört,dass es gut sei, das Ganze auch über eine Managerklasse zu machen, die dann von der Schnittstellenklasse benachrichtigt wird, wenn Daten da sind und dann die Verarbeitungsklasse die Daten übergibt.
Meine Frage ist nun ob das der beste Ansatz ist oder ob es da nicht was viel schlaueres gibt und was bei meinem jetztigen Versuch mit Funktionszeiger falsch ist. Dazu hier der Code.
Die Seite http://www.newty.de/fpt/index.html hab ich mir auch schon angeguckt, scheint aber das ganze von der anderen Seite zu beschreiben (Kapitel 3.5), oder bin ich jetzt total verpeilt.
Die Klasse zu Überwachung der Schnittstelle. Die Daten werden nachdem sie empfangen werden in m_RecieveBuffer geschrieben. Die Daten und die Länge der Daten m_RecieveBufferSize will ich dann an die Funktion pt2Function irgendwie übergeben, die aus einer Managerklasse CManager stammt. hinter der pt2Function soll dann process stehen, das die Daten für CData:rocessdata bereitstellt.
Wäre schön, wenn sich jemand meldet, da ich mich irgendwie im Kreis drehe.
Vielleicht auch direkt am Beispiel, da ich sowas einfacher verstehe. Danke
ich habe ein kleines Problemchen, das aus meiner Sicht auch nicht in anderen Forumsbeiträgen beehandelt wird.
ich habe eine Klasse, die eine Schnittstelle überwacht. Die Daten, die irgendwann empfangen werden, sollen weiterverarbeitet werden. jetzt möchte ich die Ververarbeitung in einer anderen Klasse machen, um die Schnittstelle gut zu kapseln und wiederverwendbar zu machen.
Nach ein wenig Recherche glaube ich, dass ein möglicher Ansatz der mit Funktionszeigern ist. Auch habe ich gehört,dass es gut sei, das Ganze auch über eine Managerklasse zu machen, die dann von der Schnittstellenklasse benachrichtigt wird, wenn Daten da sind und dann die Verarbeitungsklasse die Daten übergibt.
Meine Frage ist nun ob das der beste Ansatz ist oder ob es da nicht was viel schlaueres gibt und was bei meinem jetztigen Versuch mit Funktionszeiger falsch ist. Dazu hier der Code.
Die Seite http://www.newty.de/fpt/index.html hab ich mir auch schon angeguckt, scheint aber das ganze von der anderen Seite zu beschreiben (Kapitel 3.5), oder bin ich jetzt total verpeilt.
Die Klasse zu Überwachung der Schnittstelle. Die Daten werden nachdem sie empfangen werden in m_RecieveBuffer geschrieben. Die Daten und die Länge der Daten m_RecieveBufferSize will ich dann an die Funktion pt2Function irgendwie übergeben, die aus einer Managerklasse CManager stammt. hinter der pt2Function soll dann process stehen, das die Daten für CData:rocessdata bereitstellt.
Code:
class CPort{
public:
typedef void(*pt2Fn) (unsigned char* , unsigned long );
pt2Fn pDataReceived = 0;
void SetDataRecievedFnPointer(pt2Fn pt2Function){
pDataReceived = pt2Function;
}
void DoDataRecieved(void){
if (pDataReceived)
pDataReceived(m_RecieveBuffer, m_RecieveBufferSize);
}
private:
unsigned char *m_RecieveBuffer;
unsigned long m_RecieveBufferSize;
};
Code:
class CData{
public:
void ProcessData(void);
};
Code:
class CManager{
public:
void process(unsigned char* data, unsigned long length){ /*do the work here*/ };
private:
CPort port;
CData data;
};
Wäre schön, wenn sich jemand meldet, da ich mich irgendwie im Kreis drehe.
Vielleicht auch direkt am Beispiel, da ich sowas einfacher verstehe. Danke