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

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) void PingMessage::WriteData(Stream& ms, byte code, const Array& bs)
{ {
TS("PingMessage::WriteData"); TS("PingMessage::WriteData");
byte len = bs.Length() - 1; int remain = MaxSize - ms.Position() - 3;
//if(ms.Position() + 3 + len > MaxSize) return; if(remain <= 0) return;
byte remain = MaxSize - ms.Position() - 3;
byte len = bs.Length();
if(len > remain) len = remain; if(len > remain) len = remain;
ms.Write(code); // 子功能码 ms.Write(code); // 子功能码
ms.Write((byte)0x01); // 起始地址 ms.Write((byte)0x01); // 起始地址
ms.Write(len); // 长度 ms.Write(len); // 长度
ms.Write(Array((byte*)bs.GetBuffer() + 1, len)); ms.Write(Array(bs.GetBuffer(), len));
} }
/*// 0x02 配置数据 /*// 0x02 配置数据
void PingMessage::ReadConfig(Stream& ms, Array& bs) void PingMessage::ReadConfig(Stream& ms, Array& bs)
{ {

View File

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