Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Entrée/Sortie Java Discussion :

Connexion arduino/processing défaillante


Sujet :

Entrée/Sortie Java

  1. #1
    Nouveau Candidat au Club
    Connexion arduino/processing défaillante
    Bonjour a vous, alors je suis venu ici car en cherchant sur d'autres sites français ou anglais et les tutos ils me proposaient toujours la même solution pour mon programme qui, ne marchait pas. La Ligne de code qui ne marche pas sur processing est:
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    String portName = Serial.list()[7];

    Les solutions que on me propose est toujours celle la mais, cela ne m'aide pas a me connecter a ma carte arduino :/
    Le message d'erreur est ArrayindexOutOf BoundException:13

    Aussi, voila tout le code que j'ai si besoin
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    import processing.serial.*;
    Serial mon_port;
     
    void setup() {
      size (1080, 720);
      fill(0);
      text("1", 50, 50);
      text("2", 50, 150);
      text("3", 50, 250);
      text("4", 50, 350);
      text("5", 50, 450);
      text("6", 50, 550);
      println("Liste des ports: \n" + Serial.list());
      mon_port = new Serial(this, Serial.list()[7], 9600);
      mon_port.bufferUntil('\n');
    }
     
    void serialEvent (Serial myPort) {
      fill(0);
      //insérez le programme ici
        boolean High = true; 
        if (High) { 
        rect(100, 20, 80, 50);
      }
    }
    void draw() {
     
    }

    En changeant le serial.list en 1 ou 0 ca me fera le carré si 1 ou pas de rien si 0.

    Merci de me répondre :X

  2. #2
    Modérateur

    Rien compris. Mais ce dont je suis étonné c'est que cette ligne (avec un accès au 7) :

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    String portName = Serial.list()[7];


    ne devrait pas donner :

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    ArrayindexOutOf BoundException:13


    mais plutôt :

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    ArrayindexOutOf BoundException:7


    Donc soi tu as posté le mauvais morceau de code soit "aucunes idées".
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Nouveau Candidat au Club
    Oui désolé je me suis trompé c'est bien 7, et pourrai tu me dire exactement ce que tu a pas compris ou tu veux que j'explique cela autrement ?

  4. #4
    Modérateur

    Non ca me semble plus cohérent.

    En gros Serial.list() il te retourne une array avec 0 ou X elements.

    Je ne sais pas d'ou tu as décider de mettre 7, si c'est en copiant collant, ben c'est perdu Tu essayes d'acceder a l'élément a l'index 7 et tu obtient une exception qui te dit clairement que y'a pas autant d'élément dans ta liste.

    Donc maintenant, affiche ce que te donne cette méthode (ou a coup de débug), pour qu'éventuellement tu vois ce que tu cherches ainsi que son index et ca devrait mieux fonctionner.
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Nouveau Candidat au Club
    De base, on m'avais dis que cette ligne de code faite pour pouvoir communiquer avec le port X,port connecté a mon arduino, ce que je cherche encore a faire désespérément a faire encore.

  6. #6
    Modérateur

    Citation Envoyé par elewen Voir le message
    De base, on m'avais dis que cette ligne de code faite pour pouvoir communiquer avec le port X,port connecté a mon arduino, ce que je cherche encore a faire désespérément a faire encore.
    Oui mais pourquoi 7 et pas 0 ou 42 ? J'imagine qu'une machine n'est pas l'autre ... donc forcement sur une machine ca peut être 7 , sur une autre totalement autres choses.

    Donc liste lest port et regarde si dans l'indentifiant ou que sais-je tu vois un truc qui ressemble à ce que tu cherches.
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Nouveau Candidat au Club
    Ohw okay désolé, c'est de ma faute, le port 7 est le port ou je suis connecté avec arduino, ayant testé sur d'autre ordinateur et don, d'autre numéro de port, la seule chose qu'il change c'est l'erreur qui deviens celui du port que j'ai choisi.

  8. #8
    Membre expérimenté
    En fait, il vous suffit d'écrire :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    mon_port = Serial.list()[7];

    au lieu de :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    mon_port = new Serial(this, Serial.list()[7], 9600);

    Par contre, il faudra alors probablement agir sur mon_port pour définir le mode de fonctionnement (vitesse, parité, stopBit, etc...)

    Pour la formation : cours et tutoriels pour apprendre Arduino
    Une technologie n'est récalcitrante que par ce qu'on ne la connait et/ou comprend pas, rarement par ce qu'elle est mal faite.
    Et pour cesser de subir une technologie récalcitrante, n'hésitez surtout pas à visiter les Guides/Faq du site !

    Voici une liste non exhaustive des tutoriels qui me sont le plus familiers :
    Tout sur Java, du débutant au pro : https://java.developpez.com/cours/
    Tout sur les réseaux : https://reseau.developpez.com/cours/
    Tout sur les systèmes d'exploitation : https://systeme.developpez.com/cours/
    Tout sur le matériel : https://hardware.developpez.com/cours/