gyo
Diff: SBDBT.cpp
- 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; //全データ受信完了 } }