组网成功更新一次最后活跃时间

This commit is contained in:
nnhy 2015-08-22 01:29:46 +00:00
parent 19a14bc5dc
commit 692ca31fed
4 changed files with 23 additions and 13 deletions

View File

@ -15,4 +15,7 @@ void TConfig::LoadDefault()
{ {
Type = Sys.Code; Type = Sys.Code;
//Server = 0x01; //Server = 0x01;
PingTime = 15;
OfflineTime = 60;
} }

View File

@ -22,7 +22,11 @@ public:
byte Server; // 网关ID byte Server; // 网关ID
byte Channel; // 通道 byte Channel; // 通道
byte Speed; // 传输速度 byte Speed; // 传输速度
ByteArray ServerKey; // 服务端组网密码退网时使用。一般6字节 byte ServerKey[16]; // 服务端组网密码退网时使用。一般6字节
ushort PingTime; // 心跳时间。秒
ushort OfflineTime; // 离线阀值时间。秒
ushort SleepTime; // 睡眠时间。秒
// 初始化各字段为0 // 初始化各字段为0
void Init(); void Init();

View File

@ -241,30 +241,33 @@ bool TinyClient::OnJoin(TinyMessage& msg)
// 客户端只处理Discover响应 // 客户端只处理Discover响应
if(!msg.Reply || msg.Error) return true; if(!msg.Reply || msg.Error) return true;
// 校验不对
if(TranID != msg.Sequence)
{
debug_printf("发现响应序列号 %d 不等于内部序列号 %d \r\n", msg.Sequence, TranID);
//return true;
}
// 解析数据 // 解析数据
JoinMessage dm; JoinMessage dm;
dm.ReadMessage(msg); dm.ReadMessage(msg);
dm.Show(true); dm.Show(true);
// 校验不对
if(TranID != dm.TranID)
{
debug_printf("发现响应序列号 0x%08X 不等于内部序列号 0x%08X \r\n", dm.TranID, TranID);
//return true;
}
Control->Address = dm.Address; Control->Address = dm.Address;
Password = dm.Password; Password = dm.Password;
// 记住服务端地址 // 记住服务端地址
Server = dm.Server; Server = dm.Server;
debug_printf("组网成功!由网关 0x%02X 分配得到节点地址 0x%02X ,频道:%d密码", Server, dm.Address, 0); debug_printf("组网成功!由网关 0x%02X 分配得到节点地址 0x%02X ,频道:%d密码", Server, dm.Address, dm.Channel);
Password.Show(true); Password.Show(true);
// 取消Join任务启动Ping任务 // 取消Join任务启动Ping任务
Task* task = Scheduler[_TaskID]; Task* task = Scheduler[_TaskID];
task->Period = 15000000; task->Period = Config.PingTime;
// 组网成功更新一次最后活跃时间
LastActive = Time.Current();
return true; return true;
} }
@ -278,11 +281,11 @@ bool TinyClient::OnDisjoin(TinyMessage& msg)
// 心跳 // 心跳
void TinyClient::Ping() void TinyClient::Ping()
{ {
if(LastActive > 0 && LastActive + 60000000 < Time.Current()) if(LastActive > 0 && LastActive + Config.OfflineTime * 1000000 < Time.Current())
{ {
if(Server == 0) return; if(Server == 0) return;
debug_printf("30秒无法联系服务端可能已经掉线重启Join任务关闭Ping任务\r\n"); debug_printf("%d 秒无法联系服务端可能已经掉线重启Join任务关闭Ping任务\r\n", Config.OfflineTime);
Task* task = Scheduler[_TaskID]; Task* task = Scheduler[_TaskID];
task->Period = 5000000; task->Period = 5000000;

View File

@ -167,7 +167,7 @@ bool TinyServer::OnJoin(TinyMessage& msg)
} }
dv->LastTime = Time.Current(); dv->LastTime = Time.Current();
debug_printf("\r\nTinyServer::新设备 "); debug_printf("\r\nTinyServer::新设备组网 0x%08X \r\n", dm.TranID);
dv->Show(true); dv->Show(true);
// 对于已注册的设备,再来发现消息不做处理 // 对于已注册的设备,再来发现消息不做处理