Je suis désolé si le problème a déjà été posé mais je n'ai pas trouvé de réponse.
Voila mon problème, j'essaye de détecter quel port série est utilisé par mon arudino sous processing.
Je test bien tous les ports ( mon i s'incrémente bien) cependant la led ne s'allume jamais.
merci de votre aide.
//**Code Processing: **//
int i=0;
void setup()
{
String[] portName = Serial.list();
serialLength=portName.length;
size(200, 200);
}
void draw() {
try
{
if(i<serialLength)
{//On essaye chaque port série
String portName = Serial.list()[i];
myPort = new Serial(this, portName, 9600);
myPort.write(1);
}else {
i=0;//Des que nous avons testé tous les ports on réessaye depuis le début
}
}
catch(Exception e)
{
i++; //Si un port série n'est pas utilisable on passe au suivant
print(i);
}
}
//Code Arduino//
char val; // Data received from the serial port
int ledPin = 13; // Set the pin to digital I/O 4
void setup() {
pinMode(ledPin, OUTPUT); // Set pin as OUTPUT
Serial.begin(9600); // Start serial communication at 9600 bps
}
void loop() {
if (Serial.available()) { // If data is available to read,
val = Serial.read(); // read it and store it in val
}
if (val == 1) { // If H was received
digitalWrite(ledPin, HIGH); // turn the LED on
} else {
digitalWrite(ledPin, LOW); // Otherwise turn it OFF
}
delay(100); // Wait 100 milliseconds for next reading
}
Oui mais le but est ici de créer une application processing "universelle" ou le port utilisé n'est pas écrit en dur dans le programme et l'application peut donc être utilisé sur plusieurs ordinateurs.
perthouse:
Oui mais le but est ici de créer une application processing "universelle" ou le port utilisé n'est pas écrit en dur dans le programme et l'application peut donc être utilisé sur plusieurs ordinateurs.
Pourquoi pas un simple sélecteur ? Sinon apparemment sur Windows c'est WMI qu'il faudrait utiliser : interroger la machine, trouver l'ID correspondant et récupérer le port COM.
Je pense que je vais faire un sélecteur, mais le but est de faire une application pour un utilisateur lambda, qui ne connait pas forcement ce qu'est un port com et ne sait donc pas le port de son Arduino. Au pire il essayera toutes les possibilités :P.
Ps: le plus simple c'est d'ouvrir chaque port série ce qui entrainera un reboot de l'arduino (si il ya une carte arduino à l'autre bout) et d'attendre une chaine de caractère bien précise à ce moment là (envoyé par la carte dans le setup()).
Si tu écris dans chaque port rien ne te dit que tu ne vas pas déclencher un truc c'est l'utilisateur avec ton myPort.write(1) !