Hallo zusammen ich habe ein Problem bei der Umsetzung einer callback Funktion..
Ziel soll sein das aus einer Klasse(TrackControl) heraus eine Funktion (sendmidi) im Haupt Sketch aufgerufen wird
dazu wollte ich einem static function pointer der Klasse die Referenz auf die Funktion übergeben.
Die einzelnen Instanzen der Klasse sollen dann die Funktion im Hauptsketch aufrufen können.
Ich habe das ganze schon umgeschrieben gehabt auf "extern void sendMidi (byte value);" und das hat funktioniert aber ich würde gern wissen
wie das mit dem callback richtig gemacht wird.
Code Hauptsketch:
Code:
#include "TrackControl.h"
//void sendMidi (byte); //prototyp needed ?
TrackControl trackcontrol[8];
void setup() {
TrackControl::setCallback(&sendMidi);
Serial.begin(9600);
}
void loop() {
trackcontrol[0].setVolume(1);
delay(1000);
}
void sendMidi (byte value){
Serial.print(value);
}
TrackControl.h:
Code:
#ifndef TrackControl_h
#define TrackControl_h
#include <arduino.h>
class TrackControl {
static void (*sendmidi)(byte); //pointer to function
public:
void setVolume (byte value);
static void setCallback (void (*pCallbackFunction)(byte)); //static method to setup callback function for all instances
};
#endif
TrackControl.cpp
Code:
#include "TrackControl.h"
#include <arduino.h>
void TrackControl::setCallback (void (*pCallbackFunction)(byte)){
sendmidi=pCallbackFunction;
}
void TrackControl::setVolume (byte value){
sendmidi(value);
}
Danke für eure Hilfe ..
Lesezeichen