Processing --> gestion des boutons

philouxy Messages postés 36 Date d'inscription jeudi 30 avril 2009 Statut Membre Dernière intervention 18 janvier 2013 - 14 janv. 2013 à 11:57
philouxy Messages postés 36 Date d'inscription jeudi 30 avril 2009 Statut Membre Dernière intervention 18 janvier 2013 - 18 janv. 2013 à 12:08
Bonjour tous le monde,

Je suis entrain de réaliser une petite interface sous "Processing" pour récupérer des infos lié à la carte ARDUINO UNO et de quelques capteurs de température.
J'ai réussi à récupérer les infos des capteurs, mon problème se trouve sur la gestion de mon interface graphique.
J'ai créé une nouvelle fenêtre qui contient 2 boutons, ca c'est ok... mais le problème se situe sur la gestion des boutons :-(

Je n'ai pas trouvé d'exemples ou d'explication pour savoir comment interagir avec ces nouveaux éléments.
J'utilise la libraire "controlP5" (je me suis servis de ce site : ["http://www.sojamo.de/libraries/controlP5/" Lien_ControlP5]), mais je n'ai pas compris comment utilise les différentes procédures proposées.

voici quelques bouts de code que j'ai réalisé :

configuration des touches:
void setup() 
{
  //....

  //--- initialisation des objets -> touche b_Lancer et b_Arreter ---//
  // Remarque : addButton (String theName, float theValue, int theX, int theY, int theW, int theH)
  b_Lancer = controle_B.addButton("Lancer", 0, 50, 150, 50, 24);       // initialise et ajoute un Button au ControlP5 --> lancer 
  b_Arreter = controle_B.addButton("Arreter", 0, 300, 150, 50, 24);    // initialise et ajoute un Button au ControlP5 --> arrêter 

  //...


évènements lié aux touches:
public void controlEvent(ControlEvent theEvent) 
{
  // ???
  // je ne sais pas quoi mettre comme code dans cette partie 
  
}


touche en elle-même:
void b_Lancer(boolean val_event)
{
  // ???
  // ici aussi je ne sais pas quoi mettre 
  // simplement qu'avec l'évènement lié je voulais changer le 
  // background de la fenêtre 
  background(255,255,255);                 // fond fenetre en 
  
}


Voilà donc actuellement je suis un peu bloqué dans cette partie alors si vous avez des idées, je suis preneur de code exemple, de suggestions - idées, de docs ou site internet, etc

En grand merci de me lire

Amicalement le cht'y Philou

1 réponse

philouxy Messages postés 36 Date d'inscription jeudi 30 avril 2009 Statut Membre Dernière intervention 18 janvier 2013
18 janv. 2013 à 12:08
Bonjour à tous,

Je reviens vers vous car j'ai résolu un problème pour refaire un autre... la programmation n'est un pas belle écran tout blanc....

En discutant sur un autre forum, et en cherchant par moi-même dans mes vieilles connaissance de JAVA, je peux jouer avec le bouton de 2 manières, voici les 2 solus ci-dessous :
Solution 1 - Fournis par le Forum d.com

a initialiser comme variable général :
Button         b_Lancer; 


a initialiser l'objet dans la fonction setup :
//initialise et ajoute un Button au ControlP5 --> lancer 
b_Lancer =    controle_B.addButton("b_Lancer", 0, 50, 150, 50, 24);       


le string indiqué en argument de la méthode doit avoir le même nom que l'objet, ne sait pas pourquoi mais c'est comme

fonction lié à la touche "b_lancer"
void b_Lancer(int val_event)
{
  background(255,255,255);                 // fond fenetre en 
}


Et la fonction doit avoir le même nom que l'objet qui référence la touche (b_lancer), donc résultat : chaque fois qu'on clique sur le touche "b_lancer", le fond d'écran passe en blanc (c'est ce que je voulais --> OK)

Solution 2 - My solus Perso

initialiser comme variable général :
Button         b_Lancer; 


our initialiser l'objet dans la fonction setup :
// initialise et ajoute un Button au ControlP5 --> lancer 
b_Lancer    = controle_B.addButton("Lancer", 0, 50, 150, 50, 24);       


par contre ici je n'ai pas indiquer le même nom entre le nom de l'objet et le string qui va être afficher... et je n'utilise pas une méthode définie par mes soins, mais c'est dans la fonction "draw", que je teste la touche
if (b_Lancer.isPressed())
{
    background(255,255,255);                 // fond fenetre en 
}     


La encore quand j'appuie sur la touche "lancer" le fond de la fenêtre change de couleur (passe de noir à blanc), la différence entre les 2 codes c'est au niveau du nom qui est afficher dans la fenêtre au niveau de la touche, dans la première solution, le string qui est en argument doit avoir le même que l'objet et que la fonction... ne me demander par pourquoi je n'en sais rien... mais ca marche... tant dit que pour ma solution, je peux afficher un nom différent sur la fenêtre pour la touche que le nom de l'objet créé --> nom objet pas != nom afficheé.

Voilà, now à nouveau en difficulté car comme dit ci-dessus la gestion est correcte, mais je me trouver confronter à des nouveau soucis sur la création d'un fichier ainsi que de son écriture... Mon but est lorsque j'appuie sur le "lancer", un fichier s'ouvre pour que l'on puisse aller écrire des infos dessus... donc j'ai écris le code (en utilisant mon ami Google) et lorsque je lance mon code, ca foire au niveau de l'ouverture du fichier txt.

Alors à nouveau je fais appel à vous, et vos connaissance de Java pour aider à me dépatouiller... Alors comme d'hab si vous avez de liens, doc, ou exemple de code je suis preneur.

Voici mon bout de code :
//------------------------------------------------------------------//
// Nom fonction : Lancer
// entrée - sortie --> IN : val_event
//                 --> OUT :
//                 --> IN/OUT :
// Description : lié à une événement lorsqu'on clique sur la 
//               touche "Lancer", cela doit créer un fichier ainsi 
//               permettre l'aquistion de données 
// Remarque : -       
//------------------------------------------------------------------//
public void Lancer(int val_event)
{
  print("ca marche !!!");
  background(255,255,255);                 // fond fenetre en 
  if(fichier_data.exists())
  {
    try
    {
      FileWriter ecriture_data = new FileWriter(fichier_data, true); 
      ecriture_data.write("j'ai ecris à nouveau \n");
      ecriture_data.close();
    }
    catch (IOException ioe) 
    { 
      println("Message erreur : "+ioe.getMessage()); 
    } 
        //BufferedReader fichier  = new BufferedReader(new FileReader("monfichier.txt"));   
  }
  else
  {
    
    try
    {
       fichier_data = new File("store_data.txt");
       FileWriter ecriture_data = new FileWriter(fichier_data); 
       ecriture_data.write("j'ai ecris pour la premiere fois \n"); 
       ecriture_data.close();
    }
    catch (IOException ioe) 
    { 
       println("Message erreur : "+ioe.getMessage()); 
    } 
  }
}


ainsi que l'erreur fournie :


A tout bientôt le chty Philou
0
Rejoignez-nous