c_communication_osc
Table des matières
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 <iostream> #include <cstring> #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); }
c_communication_osc.txt · Dernière modification : 2020/02/11 06:13 de Mushussu