====== C++ : Communication OSC ====== ===== Installation de OSCPack ===== Télécharger OSCPack cd wget http://oscpack.googlecode.com/files/oscpack_1_1_0.zip Dézipper l'archive unzip oscpack_1_1_0.zip  Installation cd oscpack_1_1_0 sudo make install Après l'installation, nous pouvons nettoyer les fichiers superflus cd rm -r oscpack_1_1_0 rm oscpack_1_1_0.zip  ===== Réception OSC ===== Dans le répertoire de votre choix, créer un fichier avec sudo nano  main.cpp Coller dedans le code source suivant #include #include #include "osc/OscReceivedElements.h" #include "osc/OscPacketListener.h" #include "ip/UdpSocket.h" using namespace std; using namespace osc; #define PORT 7001 class ReceveurOSC : public OscPacketListener { protected: virtual void ProcessMessage(const ReceivedMessage& m, const IpEndpointName& remoteEndpoint) { (void) remoteEndpoint; // Supprime les avertissements pour les paramètres non-utilisés try { if (strcmp( m.AddressPattern(), "/test") = 0 ) { ReceivedMessageArgumentStream args = m.ArgumentStream(); osc::int32 valeur; args >> valeur >> EndMessage; cout << "Réception à l'adresse '/test1' d'un message avec comme valeur : " << valeur << endl; } } catch(Exception& e) { cout << "Erreur pendant le traitement OSC : " << m.AddressPattern() << ": " << e.what() << endl; } } }; int main(int argc, char* argv[]) { (void) argc; // Supprime les avertissements pour les paramètres non-utilisés (void) argv; // Supprime les avertissements pour les paramètres non-utilisés ReceveurOSC receveur; UdpListeningReceiveSocket s(IpEndpointName(IpEndpointName::ANY_ADDRESS, PORT), &receveur); s.RunUntilSigInt(); return 0; } Sauvegarder Ctrl-o Quitter Ctrl-x Pour lancer la compilation g++ -Wall -o ReceveurOSC main.cpp -loscpack -I /usr/local/include/oscpack Pour exécuter le programme ./ReceveurOSC Pour tester le programme, voici un émetteur de message OSC sous Processing import oscP5.*; import netP5.*; OscP5 oscP5; NetAddress myRemoteLocation; String adresseDeLaRaspberry = "192.168.2.3"; void setup() { size(400,400); frameRate(25); oscP5 = new OscP5(this,7000); myRemoteLocation = new NetAddress(adresseDeLaRaspberry, 7001); } void draw() { background(0); } void mousePressed() { OscMessage myMessage = new OscMessage("/test"); myMessage.add((int)mouseX); oscP5.send(myMessage, myRemoteLocation); } {{tag>C++ sylvain}}