ボタンを押すと、 バッテリ更新を停止し、 他のボタンもロックさせる

Dependencies:   RemoteIR TextLCD

Revision:
26:0badbc9f9cb3
Parent:
25:8ed98982faa7
Child:
27:90962c01bfeb
--- a/main.cpp	Wed Aug 05 07:48:24 2020 +0000
+++ b/main.cpp	Wed Aug 05 07:51:56 2020 +0000
@@ -1007,84 +1007,89 @@
         pc.printf("+++++++++++++++++succed rec end+++++++++++++++++++++\r\n");
         if( strstr(webdata, "GO") != NULL ) {
             pc.printf("+++++++++++++++++前進+++++++++++++++++++++\r\n");
-            //run = ADVANCE;           // 前進
+            run = ADVANCE;           // 前進
             mode = READY;            // モードs変更
-//            display();          // ディスプレイ表示
- 
+            display();          // ディスプレイ表示
         }
- 
+
         if( strstr(webdata, "LEFT") != NULL ) {
             pc.printf("+++++++++++++++++左折+++++++++++++++++++++\r\n");
-            //run = LEFT;
+            run = LEFT;
             mode = READY;
-//            display();          // ディスプレイ表示
+            display();          // ディスプレイ表示
         }
  
         if( strstr(webdata, "STOP") != NULL ) {
             pc.printf("+++++++++++++++++停止+++++++++++++++++++++\r\n");
-//            run = STOP;
+            run = STOP;
             mode = READY;
-//            display();          // ディスプレイ表示
+            display();          // ディスプレイ表示
         }
  
         if( strstr(webdata, "RIGHT") != NULL ) {
             pc.printf("+++++++++++++++++右折+++++++++++++++++++++\r\n");
-//            run = RIGHT;
+            run = RIGHT;
             mode = READY;
-//            display();          // ディスプレイ表示
+            display();          // ディスプレイ表示
         }
  
         if( strstr(webdata, "BACK") != NULL ) {
             pc.printf("+++++++++++++++++後進+++++++++++++++++++++\r\n");
-//            run = BACK;
+            run = BACK;
             mode = READY;
-//            display();          // ディスプレイ表示
+            display();          // ディスプレイ表示
         }
         pc.printf("+++++++++++++++++succed+++++++++++++++++++++");
  
         if( strstr(webdata, "AVOIDANCE") != NULL ) {
             pc.printf("+++++++++++++++++AVOIDANCE+++++++++++++++++++++");
-            //if(avoi_thread->get_state() == Thread::Deleted) {
-            //    delete avoi_thread;
-            //    avoi_thread = new Thread(avoidance);
-            //    avoi_thread -> set_priority(osPriorityHigh);
-            //}
+            if(avoi_thread->get_state() == Thread::Deleted) {
+                delete avoi_thread;
+                avoi_thread = new Thread(avoidance);
+                avoi_thread -> set_priority(osPriorityHigh);
+            }
             mode=AVOIDANCE;
-//            run = ADVANCE;
-//            display();          // ディスプレイ表示
+            run = ADVANCE;
+            display();          // ディスプレイ表示
         }
         if( strstr(webdata, "LINE_TRACE") != NULL ) {
             pc.printf("+++++++++++++++++LINET RACE+++++++++++++++++++++");
             pc.printf("mode = LINE_TRACE\r\n");
-            //if(trace_thread->get_state() == Thread::Deleted) {
-            //    delete trace_thread;
-            //    trace_thread = new Thread(trace);
-            //    trace_thread -> set_priority(osPriorityHigh);
-            //}
+            if(trace_thread->get_state() == Thread::Deleted) {
+                delete trace_thread;
+                trace_thread = new Thread(trace);
+                trace_thread -> set_priority(osPriorityHigh);
+            }
             mode=LINE_TRACE;
-//            display();          // ディスプレイ表示
+            display();          // ディスプレイ表示
         }
         if( strstr(webdata, "Normal") != NULL ) {
             pc.printf("++++++++++++++++++Normal++++++++++++++++++++");
             mode = SPEED;       // スピードモード
             flag_sp = 0;
-//            display();          // ディスプレイ表示
+            display();          // ディスプレイ表示
             mode = beforeMode;  // 現在のモードに前回のモードを設定
         }
         if( strstr(webdata, "Fast") != NULL ) {
             pc.printf("++++++++++++++++++++Fast++++++++++++++++++");
             mode = SPEED;       // スピードモード
             flag_sp = 1;
-//            display();          // ディスプレイ表示
+            display();          // ディスプレイ表示
             mode = beforeMode;  // 現在のモードに前回のモードを設定
         }
         if( strstr(webdata, "VeryFast") != NULL ) {
             pc.printf("+++++++++++++++++++VeryFast+++++++++++++++++++");
-            mode = SPEED;       // スピードモード d
+            mode = SPEED;       // スピードモード 
             flag_sp = 2;
-//            display();          // ディスプレイ表示
+            display();          // ディスプレイ表示
             mode = beforeMode;  // 現在のモードに前回のモードを設定
         }
+        if(mode != LINE_TRACE && trace_thread->get_state() != Thread::Deleted){
+            trace_thread->terminate();
+        }
+        if(mode != AVOIDANCE && avoi_thread->get_state() != Thread::Deleted){
+            avoi_thread->terminate();
+        }
         sprintf(channel, "%d",linkID);
         if (strstr(webdata, "GET") != NULL) {
             servreq=1;