title image


Smiley Konzeptfrage - Kommunikation über verschiedene Schnittstellen
Hi,



ich muss ein Programm entwickeln, dass mit verschiedenen Geräten kommunizieren muss, und dies wiederum über unterschiedliche Schnittstellen.

(Gerät und Schnittstelle ist in einer Setupmaske vom Anwender einstellbar).

Da die Kommunikation wiederum mehrmals an verschiedenen Orten im Programm Anwendung findet, wären ja entsprechende Klassen oder Funktionen für die Kommunikation kein Fehler!?

Daher habe ich mir mal folgendes Konzept überlegt:





Schnittstellenklassen:



class CInterface // abstrakte Basisklasse

{

public:

virtual int Send(const char *buffer, size_t snd) = 0;

virtual int Receive(char* buffer, size_t rcv) = 0;

};



class CRS232 : public CInterface // Klasse für Kommunikation über RS232

{

public:

bool Open(...);

void Close();



virtual int Send(const char *buffer, size_t snd);

virtual int Receive(char* buffer, size_t rcv);

};



class CModem : public CInterface // Klasse für Kommunikation über Modem

{

public:

bool Open(...);

void Close();



virtual int Send(const char *buffer, size_t snd);

virtual int Receive(char* buffer, size_t rcv);

};





Kommunikationsklassen:



class CComDev1_General // Klasse für allgemeine Befehle (in jedem Betriebsmodus) für Gerät1

{

public:

int Send_GetDevInfo(CInterface& comPort);

int Receive_GetDevInfo(CInterface& comPort, ...);



protected:

int SendDataFrame(CInterface& comPort, ...);

int ReceiveDataFrame(CInterface& comPort, ...);

};



class CComDev1_ModeA : public CComDev1_General // Klasse für Kommunikation mit Gerät1 im Betriebsmodus A

{

public:

int Send_ModeACmdx(CInterface& comPort, ...);

};



class CComDev1_ModeB : public CComDev1_General // Klasse für Kommunikation mit Gerät1 im Betriebsmodus B

{

public:

int Send_ModeBCmdx(CInterface& comPort, ...);

};





class CComDev2 // Klasse für Kommunikation mit Gerät2

{

public:

int Send_XY(CInterface& comPort);

int Receive_XY(CInterface& comPort, ...);

};





1. Was haltet ihr Experten von diesem Konzept?

2. Die Kommunikationsklassen beinhalten keine Daten - wären daher statische Element-Funktionen die richtige Wahl?

3. Wenn die Elementfunktionen allerdings statisch werden verfehlt wiederum die Klassenhirachie ihren Zweck??

4. Sollte die Schnittstelle (CInterface) der Kommunikationsklasse schon im Konstruktor übergeben werden, anstatt wie jetzt bei jeder Funktion?

(Damit würde die Klasse auch schon Daten beinhalten :-))



Anregungen sind wie immer willkommen! ;-)



Danke im Voraus!!

geschrieben von

Login

E-Mail:
  

Passwort:
  

Beitrag anfügen

Symbol:
 
 
 
 
 
 
 
 
 
 
 
 
 

Überschrift: