mart1ver/plantoid-sensor-node-bm2018

Format messages OCS

Closed this issue · 5 comments

Salut!

Je viens de réussir à faire tourner un premier dump! Yes.

Je n'ai pas encore branché sur la musique, il y a qqs détails dans les messages OSC qui sont bizarros:
Si on prend par example la premiere ligne de ce qui est dans le README:

plantoid/numero_sculpture(int)/numero_boitier(int)/analog 1 valeur(int,min 0 ,max 1024)

  • en général un message OSC commence par un "/", je n'avais pas relevé ce détail. Mais du coup il y a certains programmes qui ne parseront pas le message. Je ne suis pas encore 100% sur pour supercollider, mais c'est mieux de la jouer safe.
    donc dans l'example ci dessus, ca donnerait:

/plantoid/numero_sculpture(int)/numero_boitier(int)/analog 1 valeur(int,min 0 ,max 1024)

  • ensuite, dans ce que je recois du dump, il y a sans doute un petit probleme de formattage: je recois l'index du capteur comme faisant partie de l'adresse du message, et non pas comme une des valeurs transmises

Par ex, dans le dump, si je recois le message
plantoid/9/9/sonar 1 121.22
quand je le parse, l'adresse du message est "plantoid/9/9/sonar 1 " , avec une seule valeur
alors que ca devrait etre:
adresse: "/plantoid/9/9/sonar"
valeur 1: 1
valeur 2: 121.22

Voili

Moi je propose que l'on format les adresse comme ca "/plantoid/9/9/sonar2"
comme ca cela fait qu'une valeur par packet osc et c'est de packet correct ( reconnus par wireshark )
image

Salut,
C'est la solution initiale que Martin avait implémenté je crois, mais on s'était mis d'accod pour changer ca. SI on peut éviter ca j'aime autant, ca complexifie le parsing du coté musique, d'autant que OSC est vraiment prévu pour transmettre des tableaux de valeurs et pas seulement des valeurs uniques.
En général il suffit d'invoquer plusieurs fois la méthode "add" sur un objet message pour ajouter des valeurs dans le tableau:

OSCMessage msg(oscAddr);
msg.add(sensorIndex);
msg.add(sensorValue);

ou alors peut ete qq chose comme
msg.add(sensorIndex).add(sensorValue);

(c'est possible d'apres ce que je lis de la méthode add dans le OSCMessage.h)

Merci!

Oui bien sur
a se moment c'est pas mieux

OSCMessage msg(oscAddr); // "/plantoid"
msg.add(plantoidNumber); // uint8 
msg.add(boitierNumber);   // uint8
msg.add(SensorName);     // string ex: "analogue"
msg.add(SensorIndex);   // uint8 ex: 0
msg.add(SensorValue);   // float32 or uint32

Oui effectivement ca peut se discuter ... mais pas à ce stade du projet, car j'ai déjà écrit le parsing OSC musique en me basant sur le protocole du README. Je n'ai pas le temps de refaire ca.
:-)

Merci!

Ok donc on pars sur:

OSCMessage msg(oscAddr); // "/plantoid/9/9/sonar"
msg.add(SensorIndex);   // uint8 ex: 0
msg.add(SensorValue);   // float32 or uint32