gyo
SBDBT.cpp
- Committer:
- gotto0
- Date:
- 2017-05-06
- Revision:
- 1:8810976be033
- Parent:
- 0:afe58893bfe7
- Child:
- 2:1472e7c5317d
File content as of revision 1:8810976be033:
#include "SBDBT.h" namespace raven { SBDBT::SBDBT(PinName p1, PinName p2) { i = 0; flag = 0; length = 8; value = 128; position = 0; data = new char [length]; olddata = new char [length]; sr = new Serial(p1,p2); sr -> baud(2400); sr -> attach(this,&SBDBT::getf,Serial::RxIrq); } SBDBT::SBDBT(PinName p1, PinName p2, int baud) { i = 0; flag = 0; length = 8; value = 128; position = 0; data = new char [length]; olddata = new char [length]; sr = new Serial(p1,p2); sr -> baud(baud); sr -> attach(this,&SBDBT::getf,Serial::RxIrq); } void SBDBT::getf() { olddata[i] = data[i]; data[i] = sr -> getc(); if(data[i] == value) //受信したデータが訂正用定数であり { if(i != position) //訂正用定数を受信すべき位置でないとき { data[position] = value; //正しい位置に訂正用定数を代入 i = position + 1; //受信先も正しい位置へもどす } else //訂正用定数を受信すべき位置であるとき i++; //次の位置で受信する } else //受信したデータが訂正用定数でなく { if(i == position){} //訂正用定数を受信すべき位置であるとき //再度同じ位置で受信する else //訂正用定数を受信すべき場所でないとき i++; //次の位置で受信する } if(i>=length) //位置がデータの長さを超えたら { i=0; //位置を初期化 flag = 1; //全データ受信完了 } } SBDBT::~SBDBT() { delete sr; } }//namespace