Designfrage: HW-Treiber als Interace, Singleton, Referenz...?



  • Hallo zusammen

    Ich habe seit längerem wieder ein C++ Projekt begonnen und musste feststellen, dass ich doch etwas eingerostet bin... 😞

    Konkret möchte ich ein Modbus-Device ansteuern. Dazu habe ich eine Klasse CDevice, welche wiederum aus CHardware und CFirmware (MainApplication, Bootlaoder) besteht.
    Alle 3 Klassen müssen über Modbus Kommunizieren können.

    class CDevcie
    {
    	public:
    		CHardware m__oHwController;
    		CHardware m__oDrv1;
    
    		CFirmware m__oMainApplication;
    		CFirmware m__oBootloader;
    }
    
    class CFirmware
    {
    	public:
    		UInt16_t u16GetArticleNumber();
    }
    
    class CFirmware
    {
    	public:
    		UInt16_t u16GetArticleNumber();
    }
    
    CModbusMaster
    {
    	public:
    		bReadHoldingRegisters(UInt16_t p__u16Address, UInt16_t p__u16NumOfRegisters, UInt16_t Data[]);
    }
    

    Wie muss ich nun den Modbus-Master in der Device-Klasse bekannt machen, damit ich ihn von allen anderen verwenden kann (schlussendlich geht ja alles über die gleicher Serielle Schnittstelle raus)? Über Interface oder Singleton? Oder mittels Referenz der Device-Klasse übergeben und "Durchtunneln"?

    Besten Dank,
    Gruss
    P51D



  • hallo,

    ein singelton ist eigendlich nicht notwendig. vorausgesetzt das du Device nur einmal instantiierst und Firmaware bzw. Hardware nur in Device einmal erzeugt werden, wuerde ich einen pointer auf den ModbusMaster in den klassen anlegen.
    die uebergabe an die konstruktoren kannst per referenz machen, dann brauchst du nicht auf null pruefen.
    Je nachdem was du so damit treibst und du eventuell die klasse auch in einer dll datei braucht, solltest du es wie ein COM interface gestalten.

    Meep Meep


Log in to reply