写入数据。同时写入头部大小,否则网关不知道数据区大小和配置区大小

This commit is contained in:
nnhy 2015-12-01 12:52:08 +00:00
parent 2d28d4d793
commit f69f44f775
2 changed files with 7 additions and 5 deletions

View File

@ -39,23 +39,24 @@ void PingMessage::ReadData(Stream& ms, Array& bs)
}
}
// 写入数据。同时写入头部大小,否则网关不知道数据区大小和配置区大小
void PingMessage::WriteData(Stream& ms, byte code, const Array& bs)
{
TS("PingMessage::WriteData");
byte len = bs.Length() - 1;
//if(ms.Position() + 3 + len > MaxSize) return;
byte remain = MaxSize - ms.Position() - 3;
int remain = MaxSize - ms.Position() - 3;
if(remain <= 0) return;
byte len = bs.Length();
if(len > remain) len = remain;
ms.Write(code); // 子功能码
ms.Write((byte)0x01); // 起始地址
ms.Write(len); // 长度
ms.Write(Array((byte*)bs.GetBuffer() + 1, len));
ms.Write(Array(bs.GetBuffer(), len));
}
/*// 0x02 配置数据
void PingMessage::ReadConfig(Stream& ms, Array& bs)
{

View File

@ -317,6 +317,7 @@ void TinyClient::Report(Message& msg)
auto ms = msg.ToStream();
PingMessage pm;
pm.MaxSize = ms.Remain();
if(pm.MaxSize > Control->Port->MaxSize) pm.MaxSize = Control->Port->MaxSize;
pm.WriteData(ms, 0x01, Store.Data);
pm.WriteHardCrc(ms, HardCrc);