#include "codec_m4.h" #include "QDebug" bool codec_m4::recvByte(int byte) { bool ack = false; if (fullFrame == true) { return fullFrame; } data.append(byte); switch (data.size()) { case 1: if(uint8_t(data[0])==0xff) { num_to_read=2; } else { data.remove(0,1); num_to_read=0; } break; case 2: { int len=data[1]; num_to_read=len+2; } break; default: break; } // 此时一帧数据已完成 if(num_to_read>0&&num_to_read==data.size()) { data.remove(0,2); qDebug()<<"recv_m4:"<=2&&(data.size()==(data[1]+2))){ return true; } return false; } myarray codec_m4::encode(int srcAddr, int dstAddr, int cmd, myarray data) { myarray r; r.append(0xff); r.append(char(data.size())); r.append(data); return r; } myarray codec_m4::decode(int &srcAddr, int &dstAddr, int &cmd, myarray data) { if(packCheck(data)){ return myarray(data.mid(2)); } } Codec *codec_get() { static Codec *codec_=nullptr; if(codec_==nullptr){ codec_=new codec_m4(); } return codec_; } codec_export(codec_m4,codec_get);