0

我正在使用带有 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);
  }
}
4

0 回答 0