Petits travaux avec OSC en ce moment, et un problème dont je ne connais la cause se pose à moi:
Je récupère une valeur OSC sans problème (int "Value"), dans une fonction. J'affiche "value" avec le moniteur série, ça fonctionne parfaitement. J'ai préalablement déclaré au début du programme une int "valeurOSC", qui était sencé me sortir la valeur de value de la fonction (int valeurOSC = value dans la fonction), pour que je puisse l'utiliser dans tout le programme, or... ça ne fonctionne pas, car en retournant dans le loop, "valeurOSC" est toujours égale à zéro...
Voici mon code, j'ai volontairement retiré toutes les choses inutiles à la compréhension du problème (notamment les questions d'Ethernet pour l'OSC, mais la reception fonctionne correctement puisque "value" me renvoie la bonne valeur OSC...)
int valeurOSC;
void setup(){}
void loop(){
OSCMsgReceive();
Serial.println(valeurOSC);
}
void OSCMsgReceive(){
OSCMessage msgIN;
int size;
if((size = Udp.parsePacket())>0){
while(size--)
msgIN.fill(Udp.read());
if(!msgIN.hasError()){
msgIN.route("/value",funcValue);
}
}
}
void funcValue(OSCMessage &msg, int addrOffset ){
int value = msg.getFloat(0);
Serial.print("Value = : ");
Serial.println(value);
valeurOSC = value;
}
dfgh:
hello
je ne comprends pas:
msgIN.route("/value",funcValue);
alors que:funcValue est une fonction qu'il faut appeler avec des parametres
void funcValue(OSCMessage &msg, int addrOffset ){
Effectivement je ne comprends pas bien moi même à vrai dire, mais j'ai suivi la doc ( quasi similaire à ce que propose infobarquee ci dessus d'ailleurs), et il semble qu'un evenement osc déclenche cette fonction?
En tout cas, cela fonctionne car je reçoit l'OSC sans problème, il s'affiche si j'écris la valeur avec le port série dans la fonction funcValue, seulement impossible d'extraire cette valeur OSC de cette fonction...
J'ai suivi cette doc similaire, et encore une fois ça fonctionne, mais la librairie n'est peut etre pas faite pour extraire les données des fonctions? Par exemple ici dans ton lien de doc, si je voulais extraire "value" de la fonction "myFunction", normalement d'après moi il suffirait de creer une variable globale, et de l'assigner dans cette fonction à la valeur de "value", c'est ce qu'il me semble avoir fait dans mon programme initial, mais sans succès...