Étape 8: L’esquisse de traitement
NOTES :
* Dans la fonction setup(), n’oubliez pas de changer « [0] » dans la ligne "myPort = nouvelle série (ce, Serial.list() [0], 57600);" au nombre approprié, ce qui signifie que quelle que soit port série/USB, vous avez l’Arduino branché. Afin de déterminer ce nombre, exécuter l’esquisse de traitement une fois et vous verrez une liste de la vos ports série dans le panneau sortie. Modifiez le code afin de tenir compte de votre choix.
Le code source :
Import processing.serial.* ;
java.awt.AWTException d’importation ;
java.awt.Robot d’importation ;
import java.awt.event.KeyEvent ;
import java.awt.event.InputEvent ;
Serial myPort ;
Char en = « 0 » ;
Robot robot ;
int x = 720 ;
int y = 450 ;
amt int = 10 ;
isBackspace booléen = false ;
isKeyboard booléen = false ;
isMouse booléen = false ;
void setup()
{
try {}
robot = new Robot() ;
} catch (AWTException e) {}
e.printStackTrace() ;
}
println(Serial.List()) ;
myPort = nouvelle série (ce, Serial.list() [0], 57600) ;
}
void draw()
{
robot.setAutoDelay(40) ;
robot.setAutoWaitForIdle(true) ;
if(myPort.available() > 0)
{
in = myPort.readChar() ;
déterminer le clavier ou la souris
Si (en == ''')
{
isBackspace = true ;
isKeyboard = false ;
isMouse = false ;
}
ElseIf (en == ' ^')
{
isKeyboard = true ;
isBackspace = false ;
isMouse = false ;
}
ElseIf (en == ' ~') {}
isMouse = true ;
isBackspace = false ;
isKeyboard = false ;
}
agir en tant que retour arrière
if(isBackspace)
{
Si (en == « B ») type(KeyEvent.VK_BACK_SPACE) ;
}
agir en tant que clavier
d’autre if(isKeyboard)
{
Switch(in)
{
case « A » :
typeCaps(KeyEvent.VK_A) ;
rupture ;
case « B » :
typeCaps(KeyEvent.VK_B) ;
rupture ;
case « C » :
typeCaps(KeyEvent.VK_C) ;
rupture ;
affaire aurait ":
typeCaps(KeyEvent.VK_D) ;
rupture ;
case « E » :
typeCaps(KeyEvent.VK_E) ;
rupture ;
case « F » :
typeCaps(KeyEvent.VK_F) ;
rupture ;
case « G » :
typeCaps(KeyEvent.VK_G) ;
rupture ;
case « H » :
typeCaps(KeyEvent.VK_H) ;
rupture ;
affaire « I » :
typeCaps(KeyEvent.VK_I) ;
rupture ;
Case « J » :
typeCaps(KeyEvent.VK_J) ;
rupture ;
case « K » :
typeCaps(KeyEvent.VK_K) ;
rupture ;
case « L » :
typeCaps(KeyEvent.VK_L) ;
rupture ;
cas suis ' :
typeCaps(KeyEvent.VK_M) ;
rupture ;
cas ' n ' :
typeCaps(KeyEvent.VK_N) ;
rupture ;
cas ' o ' :
typeCaps(KeyEvent.VK_O) ;
rupture ;
case « P » :
typeCaps(KeyEvent.VK_P) ;
rupture ;
case « Q » :
typeCaps(KeyEvent.VK_Q) ;
rupture ;
case « R » :
typeCaps(KeyEvent.VK_R) ;
rupture ;
de l’affaire ":
typeCaps(KeyEvent.VK_S) ;
rupture ;
affaire ' t » :
typeCaps(KeyEvent.VK_T) ;
rupture ;
case « U » :
typeCaps(KeyEvent.VK_U) ;
rupture ;
case « V » :
typeCaps(KeyEvent.VK_V) ;
rupture ;
case « W » :
typeCaps(KeyEvent.VK_W) ;
rupture ;
case « X » :
typeCaps(KeyEvent.VK_X) ;
rupture ;
affaire « Y » :
typeCaps(KeyEvent.VK_Y) ;
rupture ;
case « Z » :
typeCaps(KeyEvent.VK_Z) ;
rupture ;
case « a » :
type(KeyEvent.VK_A) ;
rupture ;
case « b » :
type(KeyEvent.VK_B) ;
rupture ;
case « c » :
type(KeyEvent.VK_C) ;
rupture ;
affaire aurait ":
type(KeyEvent.VK_D) ;
rupture ;
Case « e » :
type(KeyEvent.VK_E) ;
rupture ;
case « f » :
type(KeyEvent.VK_F) ;
rupture ;
case « g » :
type(KeyEvent.VK_G) ;
rupture ;
case « h » :
type(KeyEvent.VK_H) ;
rupture ;
affaire « i » :
type(KeyEvent.VK_I) ;
rupture ;
case « j » :
type(KeyEvent.VK_J) ;
rupture ;
case « k » :
type(KeyEvent.VK_K) ;
rupture ;
case « l » :
type(KeyEvent.VK_L) ;
rupture ;
cas suis ' :
type(KeyEvent.VK_M) ;
rupture ;
cas ' n ' :
type(KeyEvent.VK_N) ;
rupture ;
cas ' o ' :
type(KeyEvent.VK_O) ;
rupture ;
case « p » :
type(KeyEvent.VK_P) ;
rupture ;
case « q » :
type(KeyEvent.VK_Q) ;
rupture ;
case « r » :
type(KeyEvent.VK_R) ;
rupture ;
de l’affaire ":
type(KeyEvent.VK_S) ;
rupture ;
affaire ' t » :
type(KeyEvent.VK_T) ;
rupture ;
case « u » :
type(KeyEvent.VK_U) ;
rupture ;
case « v » :
type(KeyEvent.VK_V) ;
rupture ;
case « w » :
type(KeyEvent.VK_W) ;
rupture ;
case « x » :
type(KeyEvent.VK_X) ;
rupture ;
affaire « y » :
type(KeyEvent.VK_Y) ;
rupture ;
case « z » :
type(KeyEvent.VK_Z) ;
rupture ;
affaire « 0 » :
type(KeyEvent.VK_0) ;
rupture ;
affaire « 1 » :
type(KeyEvent.VK_1) ;
rupture ;
affaire « 2 » :
type(KeyEvent.VK_2) ;
rupture ;
affaire « 3 » :
type(KeyEvent.VK_3) ;
rupture ;
affaire « 4 » :
type(KeyEvent.VK_4) ;
rupture ;
affaire « 5 » :
type(KeyEvent.VK_5) ;
rupture ;
affaire « 6 » :
type(KeyEvent.VK_6) ;
rupture ;
affaire « 7 » :
type(KeyEvent.VK_7) ;
rupture ;
affaire « 8 » :
type(KeyEvent.VK_8) ;
rupture ;
cas « 9 » :
type(KeyEvent.VK_9) ;
rupture ;
cas ' ' :
type(KeyEvent.VK_SPACE) ;
rupture ;
cas « \n » :
type(KeyEvent.VK_ENTER) ;
rupture ;
cas '.' :
type(KeyEvent.VK_PERIOD) ;
rupture ;
affaire «, » :
type(KeyEvent.VK_COMMA) ;
rupture ;
cas « / » :
type(KeyEvent.VK_SLASH) ;
rupture ;
cas «; » :
type(KeyEvent.VK_SEMICOLON) ;
rupture ;
étude de cas « = » :
type(KeyEvent.VK_EQUALS) ;
rupture ;
cas '-' :
type(KeyEvent.VK_MINUS) ;
rupture ;
par défaut :
rupture ;
}
}
agir comme une souris
d’autre if(isMouse)
{
Switch(in)
{
case « Z » :
robot.mousePress(InputEvent.BUTTON1_MASK) ;
Delay(100) ;
robot.mouseRelease(InputEvent.BUTTON1_MASK) ;
rupture ;
case « X » :
robot.mousePress(InputEvent.BUTTON3_MASK) ;
Delay(100) ;
robot.mouseRelease(InputEvent.BUTTON3_MASK) ;
rupture ;
case « U » :
Si (y > 0) y = amt ;
robot.mouseMove (x, y) ;
rupture ;
affaire aurait ":
Si (y < 900) y += amt ;
robot.mouseMove (x, y) ;
rupture ;
case « L » :
if(x > 0) x-= amt ;
robot.mouseMove (x, y) ;
rupture ;
case « R » :
if(x < 1440) x += amt ;
robot.mouseMove (x, y) ;
rupture ;
case « P » :
Si (amt < 500) amt += 5 ;
rupture ;
cas suis ' :
Si amt (amt > 5)-= 5 ;
ElseIf (amt > 1) amt-= 1 ;
rupture ;
par défaut :
rupture ;
}
}
}
}
type void (int k)
{
robot.keyPress(k) ;
robot.keyRelease(k) ;
}
Sub typeCaps(int k)
{
robot.keyPress(KeyEvent.VK_SHIFT) ;
robot.keyPress(k) ;
robot.keyRelease(k) ;
robot.keyRelease(KeyEvent.VK_SHIFT) ;
}