Partage
  • Partager sur Facebook
  • Partager sur Twitter

texte console vers zone de texte (Java) Processing

données de console vers zone de texte en java (processing) search code

Sujet résolu
    11 mai 2022 à 16:22:14

    Bonjour à toutes et tous, 
    D'après l'image ci-jointe; j'aurais aimé que les données obtenues dans ma console (1) soit amenées via un bouton sur ma petite interface vers ma zone de texte (2). 
    je n'ai pas encore trouvé le moyen de le faire, auriez-vous une petite idée ? 
    /** 
     *
     */
     
    
    import processing.serial.*;
    
    int bgcolor;			     // Background color
    int fgcolor;			     // Fill color
    Serial myPort;                       // The serial port
    int[] serialInArray = new int[3];    // Where we'll put what we receive
    String codes = "3274080005003,3254381048350,3036810230464,3263670297911";
    
    
    import g4p_controls.*;
    
    GTextField txf1, txf2;
    GTextArea txa1, txa2;
    //GPassword pwd1;
    GTabManager tt;
    //GLabel lblPwd;
    
    void setup() {
      size(500, 300);  // Stage size
      noStroke();      // No border on the next thing drawn
    
      // Print a list of the serial ports, for debugging purposes:
      //printArray(Serial.list());
      //String portName = Serial.list()[0];
      //myPort = new Serial(this, portName, 9600);
    
      size(500, 300);
      G4P.setInputFont("Times New Roman", G4P.PLAIN, 14); // New for G4P V4.3
      G4P.setGlobalColorScheme(GCScheme.PURPLE_SCHEME);
      // Some start text
      String[] paragraphs = loadStrings("book3.txt");
      String startTextA = PApplet.join(paragraphs, '\n');
      String startTextF = "DOMHOME";
    
      txf1 = new GTextField(this, 10, 10, 80, 20);
      txf1.tag = "txf1";
      txf1.setPromptText("DOMHOME");
    
      //txf2 = new GTextField(this, 290, 10, 200, 30, G4P.SCROLLBARS_HORIZONTAL_ONLY);
      //txf2.tag = "txf2";
      //txf2.setPromptText("LISTE");
      //txf2.setText(startTextF);
    
      txa1 = new GTextArea(this, 240, 120, 250, 160);
      txa1.tag = "txa1";
      txa1.setPromptText("ici je souhaiterais les données de ma console exemple: marque: blablabla et catégorie: blablabla");
    
      //txa2 = new GTextArea(this, 290, 100, 200, 180, G4P.SCROLLBARS_BOTH);
      //txa2.tag = "txa2";
      //txa2.setPromptText("hola");
      //txa2.setText(startTextA, 300);
    
      //txf1.setFocus(true);
      // Create the tab manager and add these controls to it
      //tt = new GTabManager();
      //tt.addControls(txf1, pwd1, txa1, txf2, txa2);
      //tt.addControls(txf1, txa1);
    }
    
    void draw() {
      background(0);
     
      background(0, 0, 0);
      // Draw tab order
      stroke(255, 255, 255);
      strokeWeight(4);
      line(txf1.getCX()/2, txf1.getCY(), txa1.getCX(), txa1.getCY()/2);
      line(txa1.getCX()/2, txf1.getCY(), txf1.getCX()/2, txa1.getCY());
    
      line(txa1.getCX(), txa1.getCY(), txf1.getCX(), txf1.getCY());
      line(txf1.getCX(), txa1.getCY(), txa1.getCX(), txf1.getCY());
    
    }
    
    void serialEvent(Serial myPort) {
      // read a byte from the serial port:
     
    }
    
    void mousePressed() {
      reception();
    }
    
    void reception() {
      String[] code = split(codes,',');
      for (int k=0; k<code.length;k++) {
        //println(code[k]);
        //println("-------------------------------------------");
        String jsonString = loadStrings("https://world.openfoodfacts.org/api/v0/product/"+code[k]+".json")[0];
        PrintWriter output = createWriter("data.json");
        output.println("["+jsonString+"]");
        output.flush(); // Writes the remaining data to the file
        output.close(); // Finishes the file
       
        println(jsonString.substring(0, 200));
        println("#########################################");
        JSONObject json = loadJSONArray("data.json").getJSONObject(0);
        JSONObject product = (JSONObject)json.get("product");
        String marque = product.getString("brands");
        String categories = product.getString("categories");
        
        println("Marque : "+marque+"\ncatégorie : "+categories);
        println("");
      }
    }
    
    void handleTextEvents(GEditableTextControl textControl, GEvent event) { 
      //displayEvent(textControl.tag, event);
    }
    
    void handlePasswordEvents(GPassword pwordControl, GEvent event) {
      //displayEvent(pwordControl.tag, event);
    }
    je vous en remercie par avance. 
    visuel interface code

    -
    Edité par MadelinePerré 11 mai 2022 à 17:10:47

    • Partager sur Facebook
    • Partager sur Twitter
      11 mai 2022 à 16:32:48

      Bonjour, Merci d'indiquer un titre de sujet en rapport avec votre problématique. Pourquoi faire une photo d'un écran quand il est possible de faire une capture de cet écran, et pourquoi une capture écran d'un code en texte quand il est possible d'insérer ce dit texte sous forme de ..... texte!!!

      Le message qui suit est une réponse automatique activée par un membre de l'équipe. Les réponses automatiques leur permettent d'éviter d'avoir à répéter de nombreuses fois la même chose, ce qui leur fait gagner du temps et leur permet de s'occuper des sujets qui méritent plus d'attention.
      Nous sommes néanmoins ouverts et si vous avez une question ou une remarque, n'hésitez pas à contacter la personne en question par Message Privé.

      Pour plus d'informations, nous vous invitons à lire les règles générales du forum

      Merci de colorer votre code à l'aide du bouton Code

      Les forums d'Openclassrooms disposent d'une fonctionnalité permettant de colorer et mettre en forme les codes source afin de les rendre plus lisibles et faciles à manipuler par les intervenants. Pour cela, il faut utiliser le bouton Code de l'éditeur, choisir un des langages proposés et coller votre code dans la zone prévue. Si vous utilisez l'éditeur de messages en mode Markdown, il faut utiliser les balises <pre class="brush: java;">Votre code ici</pre>.

      Merci de modifier votre message d'origine en fonction.

      Mauvais titre

      Le titre est un élément important qui ne doit pas être négligé. N'oubliez pas cette règle simple : le titre idéal résume la question que vous allez poser en une petite phrase. Il doit permettre aux visiteurs de se repérer facilement dans le forum visité et d'identifier le sujet à sa seule lecture.

      Vous pouvez utiliser divers préfixes comme [Erreur], [MySQL], [Compatibilité], etc... Aussi, pensez à consulter les règles propres à chaque forum (visibles dans les topics épinglés en haut des sections).

      De plus, choisir un bon titre permet de rendre plus faciles les recherches des autres membres.

      Les titres de type "besoin d'aide" ou "problème" ne sont pas tolérés.

      Pour modifier votre titre, éditez le premier message de votre sujet.

      (titre originel : Processing)

      Liens conseillés

      • Partager sur Facebook
      • Partager sur Twitter
        5 juillet 2022 à 11:59:24

        /** * */ import processing.serial.*; int bgcolor; // Background color int fgcolor; // Fill color Serial myPort; // Port série int[] serialInArray = new int[3]; // Où mettre ce que l'on reçoit String codes = ""; //"3274080005003,3254381048350,3036810230464,3263670297911"; String[] valeurs; // variable des valeurs // Importation G4P bibliothèque permet par la suite de contrôler ou modifier le texte, le mdp de l'utilisateur...etc. import g4p_controls.*; GTextField txf1; GTextArea txa1; GTabManager tt; // appel la variable bouton GButton bouton, effacer; void setup() { // La fonction setup() est appelée au démarrage du programme. Cette fonction est utilisée pour initialiser les variables, broches, librairies utilisées. de plus elle ne s'execute qu'une seule fois après chaque mise sous tension ou reset de la carte Arduino. size(500, 300); // taille du moniteur noStroke(); // Pas de frontière sur la prochaine chose dessinée valeurs = new String[2]; // Deux variables énoncées valeurs[0]=""; // 1ère Variable [0] Température valeurs[1]=""; // 2ème Variable [1] Hygrométrie //Print a list of the serial ports, for debugging purposes: myPort = new Serial(this, "COM3", 9600); // choix du port ( peut varier en fonction du PC) myPort.bufferUntil('\n'); // reçoit et lis les données // New for G4P V4.3 G4P.setInputFont("Times New Roman", G4P.PLAIN, 14); // après importation d'une bibliothèque, ici celà nous permet de définir entre autre typographie de l'écriture G4P.setGlobalColorScheme(GCScheme.CYAN_SCHEME); // Thème et couleur des boutons et du cadre texte de la liste String[] paragraphs = loadStrings("book3.txt"); //Liste créer (book3) afin de créer un base de données pour y insérer et réaliser notre liste size(500,300); // texte de départ txa1 = new GTextArea(this, 240, 120, 250, 160); txa1.tag = "txa1"; txa1.setPromptText("Liste vide"); //Nouveaux boutons ajoutés, avec l'emplacement et leur fonctionnalités bouton = new GButton(this, 240, 90, 250, 30, "Ajouter"); effacer = new GButton(this, 240, 50, 250, 30, "Effacer"); } void draw() { // la fonction draw est appelé chaque fois que le code ci-dessous est en fonction (ici elle est permanente). // couleur de fond du moniteur background(255, 255, 255); //LOGO Société PImage DOMHOME; DOMHOME = loadImage("DOMHOME.png"); image(DOMHOME,10,10,200,200); //taille du texte des variables Température et Hygrométrie textSize(16); //text + valeurs ainsi que l'emplacement sur le moniteur des données de Température et d'Hygrométrie text("Température: " +valeurs[0]+ "°C",10,270); text("Hygrométrie: " +valeurs[1]+ "",10,250); text("%", 165, 250); //DATE fill(0, 0, 0, 10); rect(0, 0, width, height); fill(0); ellipse(millis() % width, millis() % height, 20, 20); int d = day(); // Valeurs allant de 1 - 31 int m = month(); // Valeurs allant de 1 - 12 int y = year(); // 2003, 2004, 2005, etc. String s = String.valueOf(d); text(s +"/", 410,40); s = String.valueOf(m); text(s +"/", 430, 40); s = String.valueOf(y); text(s, 450, 40); //HEURE fill(0, 0, 0, 10); fill(0); int ss = second(); // secondes int mm = minute(); // minutes int hh = hour(); // heures String h = String.valueOf(s); text(hh +" :", 410,20); h = String.valueOf(m); text(mm +" :", 440, 20); h = String.valueOf(h); text(ss, 470, 20); } void serialEvent(Serial myPort) { // permet d'appeler les évenement via le port série, reçevoir les données à chaque scan d'un code barre. // lecture d'un octet à partir du port série : String inString = myPort.readStringUntil('\n'); println("reçu:"+inString); // code reçu à travers la console String[] str = split(inString,':'); // divise une chaîne en morceaux en utilisant un caractère ou une chaîne comme délimiteur. if (str[0].equals("Code")) { // Compare deux chaînes pour voir si elles sont identiques. Cette méthode est nécessaire car il n’est pas possible de comparer des chaînes à l’aide de l’opérateur d’égalité (==). if (codes.equals("")) codes = trim(str[1]); // Supprime les caractères d'espacement du début et de la fin d'une chaîne. Cette fonction supprime également le caractère Unicode "nbsp". else codes += ","+trim(str[1]); println(codes); } else if (str[0].equals("MESURES")) { println(str[1]); valeurs = split(str[1],','); println(valeurs[0]); } } void reception() { // permet de reçevoir le code. if (codes=="") return; String[] code = split(codes,','); String liste = ""; for (int k=0; k<code.length;k++) { // afin de reçevoir les données du port série, ici nous devons aller chercher les informations via la base de données d'Open Fact Food String jsonString = loadStrings("https://world.openfoodfacts.org/api/v0/product/"+code[k]+".json")[0]; PrintWriter output = createWriter("data.json"); // Inscription du code dans la liste (fichier texte). output.println("["+jsonString+"]"); output.flush(); // Ecrit les données restantes dans le fichier output.close(); // Ferme le fichier println(jsonString.substring(0, 200)); println("#########################################"); JSONObject json = loadJSONArray("data.json").getJSONObject(0); // Charge un tableau d’objets JSON à partir du dossier de données ou d’une URL, puis renvoie un JSONArray. En fonction d’une valeur clé, récupère le JSONObject associé. JSONObject product = (JSONObject)json.get("product"); // Ici il vient lire le moindre pixel afin de saisir les données. String marque = product.getString("brands"); // Ici j'obtiens ce que je recherche (brands = des marques, tel que Cristaline, St Michel... etc). String categories = product.getString("categories"); println("Marque : "+marque+"\ncatégorie : "+categories); // Nous venons noté de la manière suivante "marque: Cristaline + (\n effectue un retour la ligne. ) catégorie: Boissons ". println(""); liste += (k+1)+" : "+marque + "\n"; // Nous venons noté de la manière suivante "marque: Cristaline + (\n effectue un retour la ligne. ) catégorie: Boissons" mais cette fois-ci dans la liste. } txa1.setPromptText(liste); } // Plusieurs événements sont faisable: void handleTextEvents(GEditableTextControl textControl, GEvent event) { // affichage de l'évenement sur le moniteur (contrôle du texte). //displayEvent(textControl.tag, event); } void handlePasswordEvents(GPassword pwordControl, GEvent event) { // Possibilité d'insérer un évenement de type mot de passe pour différents utilisateurs. //displayEvent(pwordControl.tag, event); } public void handleButtonEvents(GButton btn, GEvent event) { // évenement des boutons, selection quand j'ajoute et que j'efface. // Folder selection if (btn == bouton) { // Bouton de réception = Bouton d'ajout dans la liste. reception(); } if (btn == effacer) { // Bouton effacer, permet d'effacer ce qui se trouve à l'intérieur de la liste. (ici le code effacera tout et non un seul élément). codes = ""; txa1.setPromptText("Liste vide"); } }
        • Partager sur Facebook
        • Partager sur Twitter

        texte console vers zone de texte (Java) Processing

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        • Editeur
        • Markdown