我正在使用带有 Java 语言的处理 IDE。
有用于点亮某些 LED 的串行端口文字,我的目标是;将c
(Color) 从cp
(colorpicker) 发送到相应的 LED。由于我有太多的 LED 区域,我使用了 for 循环而不是编写太多的函数等void AREA1
。所以我的代码的端口编写部分是:
public void controlEvent1(ControlEvent c) {
if (c.isFrom(cp)) {
r = int(c.getArrayValue(0));
g = int(c.getArrayValue(1));
b = int(c.getArrayValue(2));
}
}
public void controlEvent2(CallbackEvent event) {
String s1 = "abcdt";
if (event.getAction() == ControlP5.ACTION_CLICK) {
final String controlName = event.getController().getName();
/*
Ring Areas
*/
//Ring1 Areas
for (int i = 0; i < s1.length(); i++) {
if (controlName.equals("Ring1AREA" + str(i +1))){
println("RING1AREA" + (i+1) + " is Pressed");
if (port != null) port.write(s1.charAt(i) + "\n");}}
}
}
首先:
- controlEvent1 单独工作正常。
- controlEvent2 一直工作正常。
我的问题是,每当我同时启用两个 controlEvents 时,它controlEvent1
都不起作用。我的意思是,它仅在我删除该controlEvent2
部分并且我不知道如何修复它时才有效。
我认为原因可能是在颜色选择器中使用鼠标点击条件,所以在 controlevent1; 然后ACTION_CLICK
在 controlevent2 上使用。在这种情况下他们会发生冲突吗?:
void mousePressed() {
if( mouseX > 40 && mouseX <240 && mouseY>360 && mouseY<560){
if(port == null){
println("no serial, ignoring");
return;
}
String sendColor = nf(r_, 3) + "," + nf(g_, 3) + "," + nf(b_, 3) + '\n';
println("sending to Arduino:", sendColor);
port.write(sendColor);
}
}