Bonjour à tous,
J'essaie de faire un projet arduino pour piloter le shutter interne de video-projecteurs compatible PJ-Link.
Il s'agit donc d'envoyer une commande TCP :
"%1AVMT 30" pour ouvrir le shutter
"%1AVMT 31" pour fermer le shutter
Je souhaite commander cette fonction via OSC avec un message simple :
"/pjlink.1/shutter 0" pour ouvrir le shutter
"/pjlink.1/shutter 1" pour fermer le shutter
J'arrive à faire fonctionner la chose, mais seulement le premier ordre est effectué… Ensuite j'ai besoin de faire un "Reset" de l'arduino pour qu'un nouvel ordre soit effectué.
J'ai mis en place un "serial.println" en parralele du "client.println" afin de debugger la chose, et je m'apercois que l'ordre OSC passe bien, le probleme étant localisé dans l'envoi TCP.
Ce que j'aimerais est que la connexion TCP s'ouvre vers l'IP et le port selectionné à chaque fois qu'une commande OSC est reçu, car j'aimerais par la suite pouvoir avoir plusieurs messages OSC qui enverraient des commandes vers plusieurs IP
mais je rame déjà avec un, alors …
si quelqu'un a une piste sur laquelle me lancer…
par avance, merci !!
renaud
#include <Ethernet.h>
#include <SPI.h>
#include <ArdOSC.h>
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = { 10, 0, 0, 10 };
byte vp3[] = { 10, 0, 0, 13 };
int serverPort = 10000;
EthernetClient client;
OSCServer server;
void setup()
{
Ethernet.begin(mac, ip);
Serial.begin(19200);
client.connect(vp3, 4352);
server.begin(serverPort);
server.addCallback("/pjlink.1/shutter",&shutter1);
delay(1000);
Serial.println("connecting...");
if (client.connected()) {
Serial.println("connected");
} else {
Serial.println("connection failed");
}
}
void loop()
{
if(server.aviableCheck()>0){
}
if (client.available()) {
char c = client.read();
Serial.print(c);
}
if (!client.connected()) {
Serial.println();
Serial.println("disconnecting.");
client.stop();
for(;;)
;
}
}
void shutter1(OSCMessage *_mes) {
int value = _mes->getArgInt32(0);
if(value == 1){
Serial.println("UN");
client.println("%1AVMT 31");
}
else{
Serial.println("ZERO");
client.println("%1AVMT 30");
}
}