Bonjour, j'ai crée un programme Processing cependant il y a une erreur que je ne comprends pas.
Le but de ce programme est d'avoir une IHM qui permet de contrôler un projecteur, il remplace en fait une table DMX. (C'est un projet en cours)
Nous avons donc les trois couleurs qui sont controlées par trois sliders différents (fais en controlP5), un autre slider pour dire si l'intensité doit changer, ou si nous devons apercevoir un clignotement ou une lumière fixe.
Il y a aussi une boite de texte qui permet de changer le numéro du canal du projecteur, cependant, je ne peux pas ré-écrire cette valeur sur le moniteur de Processing.
Voici mon code :
citation :
//Déclaration de variables et importation des libraires
import processing.serial.*;
import controlP5.*;
ControlP5 cp5;
int Rouge;
int Vert;
int Bleu;
int Strober;
String inString;
Serial Arduino;
float period1 = 1000; // un clignotement par seconde
void setup()
{
size(600,900);
noStroke();
//Slider ROUGE
cp5 = new ControlP5(this);
cp5.addSlider("Rouge")
.setColorForeground(color(#F0181C))
.setColorActive(color(#F0181C))
.setColorBackground(color(#E85457))
.setPosition(50,200)
.setRange(0,255)
.setSize(200,30)
;
//Slider VERT
cp5.addSlider("Vert")
.setColorForeground(color(#01930A))
.setColorActive(color(#01930A))
.setColorBackground(color(#63FC59))
.setPosition(50,300)
.setRange(0,255)
.setSize(200,30)
;
//Slider BLEU
cp5.addSlider("Bleu")
.setColorForeground(color(#0311FF))
.setColorActive(color(#0311FF))
.setColorBackground(color(#505AFF))
.setPosition(50,400)
.setRange(0,255)
.setSize(200,30)
;
//Slider STROBER
cp5.addSlider("Strober")
.setColorForeground(color(#006C04))
.setColorActive(color(#9B0220))
.setPosition(50,500)
.setRange(1,255)
.setSize(200,30)
;
//Boite de texte canal
cp5.addTextfield("Canal")
.setPosition(50,100)
.setSize(200,40)
.setFont(createFont("Calibri",20))
;
//Bouton VALIDER
cp5.addButton("Valide")
.setPosition(300,110)
.setSize(40,20)
.setColorForeground(color(#0311FF))
.setColorActive(color(#0311FF))
.setColorBackground(color(#505AFF))
;
}
void draw()
{
//Design des éléments
background(#006723);
textSize(20);
fill(#0083D8);
text("Table DMX",250,50);
textSize(20);
fill(#0083D8);
text("Mode : ",100,850);
text("Entre 0 et 192 ",400,125);
fill(#006723);
rect(220, 820, 300, 55);
fill(Rouge,0,0);
ellipse(400, 210, 70, 70);
fill(0,Vert,0);
ellipse(400, 310, 70, 70);
fill(0,0,Bleu);
ellipse(400, 410, 70, 70);
//condition de la table DMX
if((Strober>190)&&(Strober<250))
{
fill(Rouge,Vert,Bleu,Strober);
long t = millis();
if (getStateAtTimeWithPeriod(t,period1-Strober*3.9)) ellipse(300, 700, 200, 200); //clignotement
textSize(20);
fill(#0083D8);
text("Clignotement",225,850);
}
else if(Strober>250){
fill(Rouge,Vert,Bleu,Strober);
ellipse(300, 700, 200, 200);
textSize(20);
fill(#0083D8);
text("Fixe",225,850);
}
else if(Strober<189){
fill(Rouge,Vert,Bleu,Strober);
ellipse(300, 700, 200, 200);
textSize(20);
fill(#0083D8);
text("Intensité",225,850);
}
/*print("Rouge: ");
print(Rouge);
print(" - Vert: ");
print(Vert);
print(" - Bleu: ");
print(Bleu);
print(" - Strobber: ");
if ((Strober>250))
{
println("Fixe");
}
else if ((Strober==1)&&(Strober<190))
{
println("Dimmer - Intensité");
}
else if ((Strober>190)&&(Strober<250))
{
println("Clignotement");
}*/
}
//outil pour le clignotement
boolean getStateAtTimeWithPeriod(long t, float period) {
boolean onOrOff = (((int)(t / period)) % 2==1);
return onOrOff;
}
//bouton Valide
public void Valide()
{
String chaineA;
int canaux;
chaineA=cp5.get(Textfield.class,"canal").getText();
canaux = Integer.parseInt(chaineA);
println(canaux);
if((canaux > 192)||( canaux < 1))
{
cp5.get(Textfield.class,"canal").setText("1-192");
}
//else if ((canal > 1)&&(canal<192))
}
Et voici mon problème que je ne comprends pas :
citation :
déc. 11, 2015 1:34:31 PM controlP5.ControlBroadcaster printMethodError
GRAVE: An error occured while forwarding a Controller event, please check your code at Valide
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at controlP5.ControlBroadcaster.invokeMethod(Unknown Source)
at controlP5.ControlBroadcaster.callTarget(Unknown Source)
at controlP5.ControlBroadcaster.broadcast(Unknown Source)
at controlP5.Controller.broadcast(Unknown Source)
at controlP5.Button.setValue(Unknown Source)
at controlP5.Button.activate(Unknown Source)
at controlP5.Button.mouseReleased(Unknown Source)
at controlP5.Controller.setMousePressed(Unknown Source)
at controlP5.ControllerGroup.setMousePressed(Unknown Source)
at controlP5.ControlWindow.mouseReleasedEvent(Unknown Source)
at controlP5.ControlWindow.mouseEvent(Unknown Source)
at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at processing.core.PApplet$RegisteredMethods.handle(PApplet.java:1395)
at processing.core.PApplet.handleMethods(PApplet.java:1590)
at processing.core.PApplet.handleMouseEvent(PApplet.java:2676)
at processing.core.PApplet.dequeueEvents(PApplet.java:2599)
at processing.core.PApplet.handleDraw(PApplet.java:2410)
at processing.awt.PSurfaceAWT$12.callDraw(PSurfaceAWT.java:1527)
at processing.core.PSurfaceNone$AnimationThread.run(PSurfaceNone.java:316)
Caused by: java.lang.NullPointerException
at IHM_processinh.Valide(IHM_processinh.java:189)
... 25 more
Dernière modification par TomLrt (2015-12-11 13:42:53)
Hors ligne
Bonsoir,
Ton erreur si tu l'acceptes est de ne pas respecter la casse de tes objets. Tu déclares un Textfield Canal et tu cherches un TextField canal.
Remplace juste canal par Canal et tout rentrera dans l'ordre.
Hors ligne
Pages: 1