Kaiser-F
19.08.2008, 19:37
Hallo Leute,
ich arbeite mit Visual C++ 2005 mit der .NET-Klsassenbibliothek.
Ich habe mir ein kleines Serielles Protokoll gebastelt, welches dem
CAN-Protokoll sehr ähnlich ist, nur dass man mehr als 8 Datenbytes
senden kann.
Dieses habe ich nun auf meinem µC implementiert. Jetzt möchte ich es gerne auch in meinem PC-Bedienprogramm implementieren.
Dazu hätte ich gerne eine eigene Klasse.
Die Klasse soll das komplette Protokollmenagement beinhalten.
Die Kommunikation zur "Außenwelt" gehschieht mit folgenden
Methoden der Klasse:
void SSP::TIMER( void ); //Wird im 1kHz-takt ausgeführt. Alles was laufend erledigt werden muss, wird hier gemacht
void SSP::TX_MSG( unsigned int ID, unsignet int DLC, unsigned char data[] ); // Schreibt ein zu sendendes Paet in den Sendepuffer
void SSP::RX( unsigned chat data ); // Empganene Bytes werden sofort dieser Methde übergeben!
void SSP::TX( unsigned char data); // In dieser Methode steht die jewielige Sendefunktion des Systems
void SSP::DO( unsigned int ID, unsignet int DLC, unsigned char data[] ); // Empfangene Pakete werden hier ausgewertet
Nun zu meinem Problem:
Je nach Anwendung, müssen die Methoden
- void SSP::TX( unsigned char data);
- void SSP::DO( unsigned int ID, unsignet int DLC, unsigned char data[] );
entsprechend definiert werden.
Ich erstelle also mein Objekt mit:
SSP ssp();
Dann habe ich das Protokollmanagement als Objekt zur Verfügung.
Jetzt möchte ich die Methode ssp.TX mit der entsprechenden FUnktion
( in WIN .NET serialport ) ausstatten, damit die Methode bei Aufruf
die Datei versendet.
Das lässt der Compiler aber nich tmit sich machen...
Wie kann ich sowas geschickter lösten?
Woraus ich bei diesen speziellen Methoden hinaus will:
Erstellt man einen Button, dann kann man einen EventHeandler machen,
indem man auch beliebigen Code einfügen kann.
Ich hoffe ihr versteht was ich meine.
Und genau das will ich bei diesen speziellen Methoden auch erreichen.
Ich muss bei TX die Programmzeilen für das Senden des Bytes eingeben können,
und bei DO natürlich die Befehle, die bei der jeweiligen ID des mepgangenen
Pakes bestimmte Aktionen aufrufen.
Bestimmt ist die Lösung wieder soo einfach.. aber im Moment komme ich
leider nicht selbst drauf. Ich muss dazusagen, dass ich noch nicht so lange
C++ programmiere. Ich komme von der C-Welt.
Diese Sache würde ich jedoch sehr gerne ObjektOrientiert machen.
Ich hoffe jemand kann mir da mit ein paar Tipps weiterhelfen.
ich arbeite mit Visual C++ 2005 mit der .NET-Klsassenbibliothek.
Ich habe mir ein kleines Serielles Protokoll gebastelt, welches dem
CAN-Protokoll sehr ähnlich ist, nur dass man mehr als 8 Datenbytes
senden kann.
Dieses habe ich nun auf meinem µC implementiert. Jetzt möchte ich es gerne auch in meinem PC-Bedienprogramm implementieren.
Dazu hätte ich gerne eine eigene Klasse.
Die Klasse soll das komplette Protokollmenagement beinhalten.
Die Kommunikation zur "Außenwelt" gehschieht mit folgenden
Methoden der Klasse:
void SSP::TIMER( void ); //Wird im 1kHz-takt ausgeführt. Alles was laufend erledigt werden muss, wird hier gemacht
void SSP::TX_MSG( unsigned int ID, unsignet int DLC, unsigned char data[] ); // Schreibt ein zu sendendes Paet in den Sendepuffer
void SSP::RX( unsigned chat data ); // Empganene Bytes werden sofort dieser Methde übergeben!
void SSP::TX( unsigned char data); // In dieser Methode steht die jewielige Sendefunktion des Systems
void SSP::DO( unsigned int ID, unsignet int DLC, unsigned char data[] ); // Empfangene Pakete werden hier ausgewertet
Nun zu meinem Problem:
Je nach Anwendung, müssen die Methoden
- void SSP::TX( unsigned char data);
- void SSP::DO( unsigned int ID, unsignet int DLC, unsigned char data[] );
entsprechend definiert werden.
Ich erstelle also mein Objekt mit:
SSP ssp();
Dann habe ich das Protokollmanagement als Objekt zur Verfügung.
Jetzt möchte ich die Methode ssp.TX mit der entsprechenden FUnktion
( in WIN .NET serialport ) ausstatten, damit die Methode bei Aufruf
die Datei versendet.
Das lässt der Compiler aber nich tmit sich machen...
Wie kann ich sowas geschickter lösten?
Woraus ich bei diesen speziellen Methoden hinaus will:
Erstellt man einen Button, dann kann man einen EventHeandler machen,
indem man auch beliebigen Code einfügen kann.
Ich hoffe ihr versteht was ich meine.
Und genau das will ich bei diesen speziellen Methoden auch erreichen.
Ich muss bei TX die Programmzeilen für das Senden des Bytes eingeben können,
und bei DO natürlich die Befehle, die bei der jeweiligen ID des mepgangenen
Pakes bestimmte Aktionen aufrufen.
Bestimmt ist die Lösung wieder soo einfach.. aber im Moment komme ich
leider nicht selbst drauf. Ich muss dazusagen, dass ich noch nicht so lange
C++ programmiere. Ich komme von der C-Welt.
Diese Sache würde ich jedoch sehr gerne ObjektOrientiert machen.
Ich hoffe jemand kann mir da mit ein paar Tipps weiterhelfen.