うごく

Dependencies:   mbed

Revision:
1:f50a49407c60
Parent:
0:9a0a89ffaa43
Child:
2:ad8fad576e79
--- a/main.cpp	Fri May 08 15:44:13 2015 +0000
+++ b/main.cpp	Sat May 09 08:07:38 2015 +0000
@@ -21,6 +21,8 @@
 
 
 DigitalOut myled(LED1);
+//タイムアウトタイマー初期化
+Timer timeOutTimer;
 
 //シリアル初期化
 Serial sensSerial (dp16, dp15);
@@ -157,6 +159,8 @@
 
 //受信関数
 //受信完了時0~4095
+//タイムアウト検出用のタイマーをグローバルで初期化する必要あり
+//Timer timeOutTimer;
 int stringReceive()
 {
     //各種定数
@@ -173,10 +177,33 @@
     char receiveChar = '\0';
     //受信データ格納バッファ文字列
     static char receiveDataString [dataLength] = {'\0'};//7個
+    //データ送信要求フラグ
+    static bool Cflag = true;
+    //関数内セットアップルーチン実行staticフラグ
+    //はじめてこの関数が呼ばれたときだけ実行される
+    static bool setup = false;
+    if(!setup){
+        timeOutTimer.start();
+        setup = true;
+        }
 
+    //タイムアウトによるデータ送信要求フラグセット
+    if(timeOutTimer.read() >= 1){
+        Cflag = true;
+        }
 
     //データ送信要求
-    sensSerial.putc('C');
+    //sensSerial.putc('C');
+    if(Cflag){
+        sensSerial.putc('C');
+        Cflag = false;
+        //タイマリセット
+        timeOutTimer.stop();
+        timeOutTimer.reset();
+        timeOutTimer.start();
+        }
+    
+    
     //ハードウェアバッファに到着した情報があるか
     //空ならリターン、あるなら受信値格納用変数にうつす
     if(!sensSerial.readable()) {
@@ -270,6 +297,8 @@
         trimString[sizeof(trimString) - 1] = '\0'; /* NULL 終端する */
         //文字列→数値
         intVal = atoi(trimString);
+        //送信要求フラグセット
+        Cflag = true;
         //数値リターン
         return intVal;