字节数组增加Load/Save,支持保存到普通字节指针
This commit is contained in:
parent
26b9cf49c0
commit
54b2fd48dc
1
Config.h
1
Config.h
|
@ -19,6 +19,7 @@ public:
|
||||||
byte SoftVer; // 软件版本
|
byte SoftVer; // 软件版本
|
||||||
ushort Type; // 类型
|
ushort Type; // 类型
|
||||||
byte Address; // 分配得到的设备地址
|
byte Address; // 分配得到的设备地址
|
||||||
|
byte Password[16]; // 通信密码
|
||||||
byte Server; // 网关ID
|
byte Server; // 网关ID
|
||||||
byte Channel; // 通道
|
byte Channel; // 通道
|
||||||
ushort Speed; // 传输速度
|
ushort Speed; // 传输速度
|
||||||
|
|
|
@ -40,8 +40,13 @@ void TinyClient::Open()
|
||||||
|
|
||||||
_TaskID = Sys.AddTask(TinyClientTask, this, 0, 5000000, "客户端服务");
|
_TaskID = Sys.AddTask(TinyClientTask, this, 0, 5000000, "客户端服务");
|
||||||
|
|
||||||
if(Config.Address > 0) Control->Address = Config.Address;
|
if(Config.Address > 0 && Config.Server > 0)
|
||||||
if(Config.Server > 0) Server = Config.Server;
|
{
|
||||||
|
Control->Address = Config.Address;
|
||||||
|
Server = Config.Server;
|
||||||
|
|
||||||
|
Password.Load(Config.Password, ArrayLength(Config.Password));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void TinyClient::Close()
|
void TinyClient::Close()
|
||||||
|
@ -259,11 +264,16 @@ bool TinyClient::OnJoin(TinyMessage& msg)
|
||||||
|
|
||||||
Control->Address = dm.Address;
|
Control->Address = dm.Address;
|
||||||
Password = dm.Password;
|
Password = dm.Password;
|
||||||
|
Password.Save(Config.Password, ArrayLength(Config.Password));
|
||||||
|
|
||||||
// 记住服务端地址
|
// 记住服务端地址
|
||||||
Server = dm.Server;
|
Server = dm.Server;
|
||||||
Config.Channel = dm.Channel;
|
Config.Channel = dm.Channel;
|
||||||
Config.Speed = dm.Speed == 0 ? 250 : (dm.Speed == 1 ? 1000 : 2000);;
|
Config.Speed = dm.Speed == 0 ? 250 : (dm.Speed == 1 ? 1000 : 2000);
|
||||||
|
|
||||||
|
// 服务端组网密码,退网使用
|
||||||
|
Config.ServerKey[0] = dm.HardID.Length();
|
||||||
|
dm.HardID.Save(Config.ServerKey, ArrayLength(Config.ServerKey));
|
||||||
|
|
||||||
debug_printf("组网成功!由网关 0x%02X 分配得到节点地址 0x%02X ,频道:%d,传输速率:%dkbps,密码:", Server, dm.Address, dm.Channel, Config.Speed);
|
debug_printf("组网成功!由网关 0x%02X 分配得到节点地址 0x%02X ,频道:%d,传输速率:%dkbps,密码:", Server, dm.Address, dm.Channel, Config.Speed);
|
||||||
Password.Show(true);
|
Password.Show(true);
|
||||||
|
|
31
Type.cpp
31
Type.cpp
|
@ -117,6 +117,37 @@ String ByteArray::ToHex(char sep, int newLine) const
|
||||||
return ToHex(str, sep, newLine);
|
return ToHex(str, sep, newLine);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 保存到普通字节数组,首字节为长度
|
||||||
|
int ByteArray::Load(const byte* data, int maxsize)
|
||||||
|
{
|
||||||
|
/*// 压缩编码整数最大4字节
|
||||||
|
Stream ms(data, 4);
|
||||||
|
_Length = ms.ReadEncodeInt();
|
||||||
|
|
||||||
|
return Copy(data + ms.Position(), _Length);*/
|
||||||
|
|
||||||
|
_Length = data[0] <= maxsize ? data[0] : maxsize;
|
||||||
|
|
||||||
|
return Copy(data + 1, _Length);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 从普通字节数据组加载,首字节为长度
|
||||||
|
int ByteArray::Save(byte* data, int maxsize)
|
||||||
|
{
|
||||||
|
/*// 压缩编码整数最大4字节
|
||||||
|
Stream ms(data, 4);
|
||||||
|
ms.WriteEncodeInt(_Length);
|
||||||
|
|
||||||
|
return CopyTo(data + ms.Position(), _Length);*/
|
||||||
|
|
||||||
|
assert_param(_Length <= 0xFF);
|
||||||
|
|
||||||
|
int len = _Length <= maxsize ? _Length : maxsize;
|
||||||
|
data[0] = len;
|
||||||
|
|
||||||
|
return CopyTo(data + 1, len);
|
||||||
|
}
|
||||||
|
|
||||||
String& ByteArray::ToStr(String& str) const
|
String& ByteArray::ToStr(String& str) const
|
||||||
{
|
{
|
||||||
return ToHex(str, '-', 0x20);
|
return ToHex(str, '-', 0x20);
|
||||||
|
|
5
Type.h
5
Type.h
|
@ -395,6 +395,11 @@ public:
|
||||||
// 显示十六进制数据,指定分隔字符和换行长度
|
// 显示十六进制数据,指定分隔字符和换行长度
|
||||||
String ToHex(char sep = '-', int newLine = 0x10) const;
|
String ToHex(char sep = '-', int newLine = 0x10) const;
|
||||||
|
|
||||||
|
// 保存到普通字节数组,首字节为长度
|
||||||
|
int Load(const byte* data, int maxsize = -1);
|
||||||
|
// 从普通字节数据组加载,首字节为长度
|
||||||
|
int Save(byte* data, int maxsize = -1);
|
||||||
|
|
||||||
// 输出对象的字符串表示方式
|
// 输出对象的字符串表示方式
|
||||||
virtual String& ToStr(String& str) const;
|
virtual String& ToStr(String& str) const;
|
||||||
// 显示对象。默认显示ToString
|
// 显示对象。默认显示ToString
|
||||||
|
|
Loading…
Reference in New Issue