MultitaskingTest1.h | |
---|---|
#ifndef _MULTTASKTEST #define _MULTTASKTEST #include "Task.h" class MultitaskingTest1 : public Task { public: // execute()の状態 int state1 ; int state2 ; char *name; MultitaskingTest1 ( char* name ); void show ( char* text ); protected: virtual void execute (); }; #endif |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
MultitaskingTest1.cpp | |
---|---|
#include "MultitaskingTest1.h" extern Serial pc; MultitaskingTest1::MultitaskingTest1 ( char* name ) { this->name = name ; state1 = 1; state2 = 2; } void MultitaskingTest1::show ( char* text ) { pc.printf ("%s : %s\n", name, text ) ; } void MultitaskingTest1::execute () { switch ( state ) { case 0: show ( "Initial state" ) ; nextState ( state1 ) ; break ; case 1: show ( "State 1" ) ; nextState ( state2 ) ; break ; case 2: show ( "State 2" ) ; stop () ; break ; default: // 異常な状態を捕獲し停止するためにdefaultにする stop () ; break; } // switch } //execute |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
main.cpp | |
---|---|
#include "mbed.h" #include "MultitaskingTest1.h" Serial pc(USBTX, USBRX); // tx, rx int main() { pc.baud(115200); new MultitaskingTest1 ( "Task 1" ) ; new MultitaskingTest1 ( "Task 2" ) ; new MultitaskingTest1 ( "Task 3" ) ; Task::TaskManager () ; pc.printf( "All done\n" ) ; } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
Task 3 : Initial state Task 1 : Initial state Task 2 : Initial state Task 3 : State 1 Task 1 : State 1 Task 2 : State 1 Task 3 : State 2 Task 1 : State 2 Task 2 : State 2 All done