gyo

Revision:
2:1472e7c5317d
Parent:
1:8810976be033
Child:
3:16a15d26ebe8
--- a/SBDBT.cpp	Sat May 06 02:32:51 2017 +0000
+++ b/SBDBT.cpp	Sat May 06 03:02:04 2017 +0000
@@ -6,12 +6,12 @@
     SBDBT::SBDBT(PinName p1, PinName p2)
     {
         i = 0;
-        flag = 0;
+        readstat = 0;
         length = 8;
         value = 128;
         position = 0;
+        tmp = new char [length];
         data = new char [length];
-        olddata = new char [length];
         sr = new Serial(p1,p2);
         sr -> baud(2400);
         sr -> attach(this,&SBDBT::getf,Serial::RxIrq);
@@ -20,12 +20,12 @@
     SBDBT::SBDBT(PinName p1, PinName p2, int baud)
     {
         i = 0;
-        flag = 0;
+        readable = 0;
         length = 8;
         value = 128;
         position = 0;
+        tmp = new char [length];
         data = new char [length];
-        olddata = new char [length];
         sr = new Serial(p1,p2);
         sr -> baud(baud);
         sr -> attach(this,&SBDBT::getf,Serial::RxIrq);
@@ -33,13 +33,12 @@
     
     void SBDBT::getf()
     {
-        olddata[i] = data[i];
-        data[i] = sr -> getc();
-        if(data[i] == value)    //受信したデータが訂正用定数であり
+        tmp[i] = sr -> getc();
+        if(tmp[i] == value)    //受信したデータが訂正用定数であり
         {
             if(i != position)       //訂正用定数を受信すべき位置でないとき
             {
-                data[position] = value;     //正しい位置に訂正用定数を代入
+                tmp[position] = value;     //正しい位置に訂正用定数を代入
                 i = position + 1;           //受信先も正しい位置へもどす
             }
             else                    //訂正用定数を受信すべき位置であるとき
@@ -54,8 +53,16 @@
         }
         if(i>=length)           //位置がデータの長さを超えたら
         {
+            data[0] = tmp[0];
+            data[1] = tmp[1];
+            data[2] = tmp[2];
+            data[3] = tmp[3];
+            data[4] = tmp[4];
+            data[5] = tmp[5];
+            data[6] = tmp[6];
+            data[7] = tmp[7];
+            readable = 1;               //全データ受信完了
             i=0;                    //位置を初期化
-            flag = 1;               //全データ受信完了
         }
     }