Java - 每个声音只播放一次声音,然后再播放

时间:2014-03-16 20:54:16

标签: java arduino

编辑:如果我使用equals()来比较字符串,它会播放一次声音,然后崩溃。有没有人知道为什么循环可能超出范围?

代码已更新

编辑2:我尝试插入!myString.isEmpty,现在它不再崩溃,但它仍然只播放一次声音,并且在第一次迭代后不再播放。

当按钮按下的长度等于一定量时,我们正试图为玩具发出声音。打印方式,响应是按预期的,(至少对于短按钮按下),它将打印出阵列[1]点等于" S"但是由于某种原因,这并不是'当数组[1]等于" S"时,触发我们的if函数,该函数应该导致声音播放。有什么想法吗?

出于某种原因,这也不是阅读" L"或长按按钮。这让我们感到疯狂,我们已经把它搞砸了三个小时!你聪明的人会怎么想?

处理的Java代码:

 import processing.serial.*; //accepts serial input
import ddf.minim.*; //imports minim sound library
Minim minim;
String [] array;

Serial arduinoPort; //reads serial from arduino
AudioPlayer au_player1, au_player2, au_player3; //initializes sound files, au_player(n)      (n=number of wav files)

void setup() {
  minim = new Minim(this);
  au_player1 = minim.loadFile("comply_not.wav");
  au_player2 = minim.loadFile("go_away.wav");
  String portName = Serial.list()[2];
  arduinoPort = new Serial(this, portName, 9600);
}


void draw() {
  while (arduinoPort.available () > 0) {
    String myString = arduinoPort.readStringUntil('\n');


    if ((myString != null)&&(!myString.isEmpty)) {
//      println(myString);
      printArray(array);
      array = split(myString, ",");
      if (array[1].equals("S")) {
         au_player1.play();
      }
       else if (array[1].equals("L")) {
        au_player2.play();
      }
      delay(100);
    }
  } 
}

void stop() {
  minim.stop();
  super.stop();
}

Arduino代码:

基本上,这只是按下按钮然后被发送到处理全部用Java,所以如果你不知道arduino的东西并不是什么大不了的事。我认为这与Java有关。

#define BUTTON_PIN        2  // Button

#define LONGPRESS_LEN    25  // Min nr of loops for a long press
#define DELAY            100  // Delay per loop in ms
    Serial.print("No");
    Serial.print(",");
    Serial.print("No");
    Serial.print(",");
    Serial.println("No");
    break;
  case EV_SHORTPRESS:
    Serial.print(",");
    Serial.print("S");
    Serial.print(",");
    Serial.println("No");
    break;
  case EV_LONGPRESS:
    Serial.print(",");
    Serial.print("L");
    Serial.print(",");
    Serial.println("No");

1 个答案:

答案 0 :(得分:0)

想出来 -

由于某种原因声音需要重新振作!! (这对我来说很奇怪,因为它不是哈哈哈哈哈哈,但还可以!)

基本上我们添加了

soundclip.rewind();

每个声音片段,现在它正在工作。

感谢您的帮助!