Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migration of unmigrated content due to installation of a new plugin

Taskit eli oikeammin suomeksi säikeet ovat rinnakkaisia, yhtäaikaisesti toimivia ohjelman osia. Seuraavassa on yksinkertainen esimerkki säikeiden toteutuksesta.

Code Block
#pragma config(Sensor, S2,     touchSensor,         sensorTouch)


// task TOne();    /* jos funktiot tai taskit eli säikeet sijoitetaan main funktion jälkee, täytyy ne esitellä tässä eli //-merkit pois rivin alusta */
// task TTwo();   

 

task TOne()
{
  while(true)
  {
    wait1Msec(300);                                 // pieni odottelu

    nxtDisplayCenteredBigTextLine(3, "TASK 1");     // näytetään että eka taski on käynnissä

    nxtDisplayClearTextLine(6);                    
    nxtDisplayClearTextLine(7);                   
  }
  return;
}

task TTwo()
{
  while(true)
  {
    wait1Msec(300);                                 // Allow for a short wait, freeing up the CPU for other tasks.

    while(SensorValue(touchSensor) == 1)            //ollaan niin kauan silmukassa kunnes kosketusanturi menee tilaan yksi
    {
      StopTask(TOne);                                     // pysäyteään eka taski

      nxtDisplayCenteredBigTextLine(6, "TASK 2");         // näytetään, että toinen taski on käytössä

        nxtDisplayClearTextLine(3);                      //putsataan rivi kolme  
        nxtDisplayClearTextLine(4);                      //putsataan rivi neljä 

        wait1Msec(100);                                    
    }
    StartTask(TOne);                               
  }
  return;
}

task main()
{
  StartTask(TOne);                             // Käynnistetään ensimmäinen säie
  StartTask(TTwo);                             // Käynnistetään toinen säie

  while(true)
  {
    wait1Msec(300);                                 // odotellaan ja annetaan aikaa muille säikeille

    nxtDisplayCenteredBigTextLine(0, "TASK M");    
  }
  return;
}