Si tu envoie tes 3 commandes OSC à la suite, l'Arduino va les traiter en série.
A chaque fois il va se connecter, envoyer, et aussi faire les traces sur la console série.
Si tu laisses le code d'affichage du retour d'info dans loop(), surtout comme il est écrit, il est presque sur que tu vas te prendre la 2nde connexion dans la foulée et donc que tu va fermer le client et le réouvrir. Donc tu n'auras pas la suite.
Si tu écris le code comme cela :
while (client.available()) {
char c = client.read();
Serial.print(c);
}
Tu auras tout mais au prix peut être d'encore plus de décalage.
Normalement, le W5100 peut gérer 4 connections en //
Mais OSC doit en prendre 1 aussi
Donc tu dois pouvoir gérer 3 projecteurs en //
Tu peux créer 3 variables de type EthernetClient, voir même un tableau et idem pour les adresses IP :
byte vpIp[3][4] = { { 10, 0, 0, 11 }, { 10, 0, 0, 12 }, { 10, 0, 0, 13 } } ;
EthernetClient vpClient[3];
Evite la dupplicationd e code et optimise shutter :
void shutter1(OSCMessage *_mes) {
shutter( 1, _mes );
}
void shutter2(OSCMessage *_mes) {
shutter( 2, _mes );
}
void shutter3(OSCMessage *_mes) {
shutter( 3, _mes );
}
void shutter(byte vp, OSCMessage *_mes) {
--vp; // 1, 2, 3 => 0, 1, 2 pour index de tableau
int value = _mes->getArgInt32(0);
if ( ! vpClient[vp].connected() )
{
// connexion au vp
Serial.println("connecting...");
int ret = vpClient[vp].connect(vp3, 4352);
if ( (ret == 0) || !vpClient[vp].connected() )
{
Serial.println("connection failed");
return;
}
Serial.println("connected");
if ( value == 1 ) {
Serial.println();
Serial.println("UN");
vpClient[vp].print("%1AVMT 31\r");
}
else {
Serial.println();
Serial.println("ZERO");
cvClient[vp].print("%1AVMT 30\r");
}
}
Et pour ta boucle loop() :
void loop() {
// reception de messages OSC
if(server.aviableCheck()>0) {
}
for ( byte vp = 0 ; vp < 3 ; vp++ )
while ( vpClient[vp].available() )
Serial.print(vpClient[vp]);
}
Attention: code écrit vite fait et non testé. Il peut rester des fautes de frappes et autres petites erreurs mais l'idée est là.
Dis moi ce que tu en penses.