Avatar billede tula Nybegynder
26. maj 2004 - 14:56

Switch: metode-kald med forskellige værdier.

Hej!

Jeg skal sende 2 forskellige værdier afsted på forskellige tidspunkter. En værdi skal kun sendes, når der forekommer ændringer i den. Dvs. at jeg skal holde styr på en oldValue og en newValue. Når den gamle og den nye værdier er forskellige, skal den nye værdi sendes afsted i et metode-kald. Lige nu har jeg lavet en løsning, hvor jeg bruger Switch. Findes der ikke en bedre metode til at løse dette. Jeg vil gerne belaste mit system så lidt så muligt for jeg får værdier ind hvert 7 ms.

Her er min foreløbige metode:

//Læser værdier fra seriel porten.
  public void readLine() {

  float lineValue;
  float oldLineValueOne = -1;
  float oldLineValueTwo = -1;
  int nodeValue;

  while(true) {
    try {

      //Stabiliserer inputtet
      String values[] = in.readLine().split("[^0-9]");
        for(int i=0;i<values.length;i++)
        {
            if(values[i].length() != 0)
            {
                lineValue = Float.parseFloat(values[i]);

                // Metode-kald til slider men kun
                // når værdierne ændrer sig
             
                switch(i){
                  case 0:
                    if(Math.abs(lineValue-oldLineValueOne) > 3)
                    {
                      nodeValue = 1000 + i;
                      doSendSlider(lineValue,nodeValue);
                      oldLineValueOne = lineValue;
                      System.out.println("send value to slider: " + lineValue);
                      break;
                    }
                  case 1:
                    if(Math.abs(lineValue-oldLineValueTwo) > 3)
                    {
                      nodeValue = 1000 + i;
                      doSendSlider(lineValue,nodeValue);
                      oldLineValueTwo = lineValue;
                      System.out.println("send value to slider: " + lineValue);
                      break;
                    }
                } //end switch

                //for debugging             
                System.out.println("Afstand: " + lineValue + "  Lydspor: 100" + i);
            }
        }

    }
    catch( IOException e ) {
      error("readLine " + e );
    }
  }
  }
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester