添加广播方式升级

This commit is contained in:
ranchuan
2023-11-29 15:36:45 +08:00
parent a0b0f41c39
commit e34b8111dc
30 changed files with 1388 additions and 146 deletions

View File

@@ -75,15 +75,28 @@ myarray CodecYm::decode(int &srcAddr, int &dstAddr, int &cmd, myarray data)
{
cmd = this->cmd;
if (is_big_data == false)
r = data.mid(7, len - 3);
r = data.mid(offset+7, len - 3);
else
r = data.mid(11, len - 7);
r = data.mid(offset+11, len - 7);
}
return r;
}
bool CodecYm::packCheck(myarray data)
int CodecYm::packCheck(myarray data)
{
bool ack = false;
int ack = 0;
offset=0;
while(data.size()>=2){
if ((uint8_t(data[0]) != 0x59u) || (uint8_t(data[1]) != 0x6du))
{
// 帧头不对
// qWarning("frame head not 0x59 0x6d");
// return ack;
data.remove(0,1);
offset++;
}else{
break;
}
}
if (data.size() < 9)
{
// 主机一帧数据至少9字节
@@ -91,13 +104,6 @@ bool CodecYm::packCheck(myarray data)
return ack;
}
if ((uint8_t(data[0]) != 0x59u) || (uint8_t(data[1]) != 0x6du))
{
// 帧头不对
qWarning("frame head not 0x59 0x6d");
return ack;
}
len = (data[2] | (data[3] << 8));
if (len == 65535)
{
@@ -109,7 +115,7 @@ bool CodecYm::packCheck(myarray data)
{
is_big_data = false;
}
if (len + 6 != data.size())
if (len + 6 > data.size())
{
// 如果长度不相等则产生了数据丢失
qWarning("recv data have lossed");
@@ -127,7 +133,7 @@ bool CodecYm::packCheck(myarray data)
cmd_no = data[5] | (data[6] << 8);
cmd = data[4];
// 数据负载
return true;
return len+offset;
}
myarray CodecYm::encode(int srcAddr, int dstAddr, int cmd, myarray data)
{