Étape 3: Programmation traitement
/*
* Oscilloscope
* Donne un rendu visuel de broche analogique 0 en temps réel.
*
*
* (c) 2011 "simonfrfr" (newtonlabs
*/
Import processing.serial.* ;
couleur currentcolor ;
Boolean verrouillé = false ;
Herr booléen = false ;
serialt booléen = false ;
CircleButton circle1, circle2, circle3 ;
Port série ; Créez l’objet de classe de la série
int val ; Données reçues du port série
int [] values ;
zoom du flotteur ;
PFont fontA ;
void setup()
{
fontA = loadFont("Ziggurat-HTF-Black-32.vlw") ;
textFont (fontA, 32) ;
Ne font qu’attirer une fois
noLoop() ;
Size(1280, 480) ;
couleur buttoncolor = color(153) ;
couleur de surbrillance = color(102) ;
ellipseMode(CENTER) ;
Circle3 = new CircleButton (50, 50, 50, buttoncolor, point culminant) ;
Circle2 = new CircleButton (50, 50, 50, buttoncolor, point culminant) ;
Circle1 = new CircleButton (50, 50, 50, buttoncolor, point culminant) ;
Ouvrir le port qui est connecter la platine et utilisent la même vitesse (9600 bits/s)
port = nouvelle série (ce, Serial.list() [0], 9600) ;
valeurs = new int [Largeur] ;
Zoom = 1.0f ;
Smooth() ;
}
int getY(int val) {}
Return (int) (hauteur - val/1023.0f * (hauteur - 1)) ;
}
int GetValue {}
int valeur = -1 ;
tandis que (port.available() > = 3) {}
Si (port.read() == 0xff) {}
valeur = (port.read() << 8) | (port.read()) ;
}
}
retourne la valeur ;
}
void « PushValue » (int value) {}
pour (int i = 0; i < largeur-1; i ++)
les valeurs [i] = valeur [i + 1] ;
les valeurs [largeur-1] = value ;
}
void drawLines() {}
Stroke(255) ;
int displayWidth = (int) (largeur / zoom) ;
int k = values.length - displayWidth ;
int x0 = 0 ;
int y0 = getY(values[k]) ;
pour (int i = 1; i < displayWidth; i ++) {}
k ++ ;
int x1 = (int) (j’ai * (largeur-1) / (displayWidth-1)) ;
int y1 = getY(values[k]) ;
ligne (x0, y0, x1, y1) ;
x0 = x1 ;
y0 = y1 ;
}
}
void drawGrid() {}
accident vasculaire cérébral (255, 255, 255) ;
ligne (0, hauteur/2, width, height/2) ;
ligne (hauteur 0, / 2 + 1, largeur, hauteur/2 + 1) ;
ligne (hauteur 0, / 2 + 2, largeur, hauteur/2 + 2) ;
ligne (hauteur 0, / 2 + 3, largeur, hauteur/2 + 3) ;
ligne (hauteur 0, / 2 + 4, largeur, hauteur/2 + 4) ;
ligne (hauteur 0, / 2 + 5, largeur, hauteur/2 + 5) ;
}
void keyReleased() {}
commutateur (clé) {}
cas « + » :
zoom * = 2.0f ;
println(zoom) ;
Si ((int) (largeur / zoom) < = 1)
zoom / = 2.0f ;
rupture ;
cas '-' :
zoom / = 2.0f ;
Si (zoom < 1.0F)
zoom * = 2.0f ;
rupture ;
}
}
void draw()
{
serialcheck() ;
Si (serialt == true) {}
Si (Herr! = false) {}
arrière-plan (19, 134, 209) ;
Fill(255) ;
texte ("-effectuer un zoom arrière", 100, 60) ;
texte (« + zoom », 100, 95) ;
mise à jour (mouseX mouseY) ;
Circle1.Display() ;
Circle2.Display() ;
Circle3.Display() ;
drawGrid() ;
Val = GetValue ;
Si (val! = -1) {}
pushValue(val) ;
}
drawLines() ;
}
else {}
remplissage (42, 88, 87) ;
Rect (0, 0, 1280, 480) ;
Circle3.Display() ;
mise à jour (mouseX mouseY) ;
}
}
else {}
Background(0) ;
Fill(255) ;
texte (« Désolé, la connexion a été perdue, », 100, 60) ;
texte ("tentant à connecter au Port sΘrie", 100, 95) ;
texte ("si vous rebranchez votre SERIAL PORT et cette", 100, 130) ;
texte ("MESSAGE n’est pas GO AWAY puis sortie la", 100, 165) ;
texte (« Programme et rouvrir ça et il va fonctionne, », 100, 200) ;
texte ("dans le cas contraire il ISA problème avec votre matériel", 100, 235) ;
texte ("ou votre programmation.", 100, 280) ;
}
}
Sub serialcheck()
{
Delay(12) ;
Si (port.available() > = 1) {}
serialt = true ;
}
else {}
serialt = false ;
}
}
Sub update (int x, int y)
{
if(Locked == false) {}
Circle1.Update() ;
Circle2.Update() ;
Circle3.Update() ;
rect1.Update() ;
rect2.Update() ;
}
else {}
verrouillée = false ;
}
{if(mousePressed)}
{if(Circle1.Pressed())}
currentColor = circle1.basecolor ;
}
else {if(circle2.pressed())
currentColor = circle2.basecolor ;
}
else {if(circle3.pressed())
Si (Herr == true) {}
Herr = false ;
}
else {}
Herr = true ;
}
}
}
}
classe de bouton
{
int x, y ;
int taille ;
couleur basecolor, highlightcolor ;
couleur currentcolor ;
booléenne plus = false ;
pressé de Boolean = false ;
void update()
{
{if(Over())}
currentColor = highlightcolor ;
}
else {}
currentColor = basecolor ;
}
}
pressed() booléen
{
{if(over)}
verrouillée = true ;
retourne la valeur true ;
}
else {}
verrouillée = false ;
retourne la valeur false ;
}
}
over() booléenne
{
retourne la valeur true ;
}
Boolean overRect (int x, int y, int width, int height)
{
Si (mouseX > = x & & mouseX < = x + largeur & &
mouseY > = y & & mouseY < = y + height) {}
retourne la valeur true ;
}
else {}
retourne la valeur false ;
}
}
Boolean overCircle (int x, int y, int diamètre)
{
flotteur disX = x - mouseX ;
flotteur disY = y - mouseY ;
if(sqrt(SQ(disX) + sq(disY)) < diamètre/2) {}
retourne la valeur true ;
}
else {}
retourne la valeur false ;
}
}
}
classe CircleButton étend bouton
{
CircleButton (int ix, iy int, int isize, couleur icolor, couleur ihighlight)
{
x = ix ;
y = iy ;
taille = isize ;
baseColor = icolor ;
HighlightColor = ihighlight ;
currentColor = basecolor ;
}
over() booléenne
{
Si (overCircle (x, y, taille)) {}
plus = true ;
retourne la valeur true ;
}
else {}
plus = false ;
retourne la valeur false ;
}
}
display() Sub
{
Stroke(255) ;
Fill(currentColor) ;
ellipse (x, y, taille, taille) ;
}
}
classe RectButton étend bouton
{
RectButton (int ix, iy int, int isize, couleur icolor, couleur ihighlight)
{
x = ix ;
y = iy ;
taille = isize ;
baseColor = icolor ;
HighlightColor = ihighlight ;
currentColor = basecolor ;
}
over() booléenne
{
Si (overRect (x, y, taille, taille)) {}
plus = true ;
retourne la valeur true ;
}
else {}
plus = false ;
retourne la valeur false ;
}
}
display() Sub
{
Stroke(255) ;
Fill(currentColor) ;
Rect (x, y, taille, taille) ;
}
}