Other Parts Discussed in Thread: PACKET-SNIFFER
终端节点带有继电器,并可采集数据传给协调器
网络中还有一个终端节点,带有按键,可控制带有继电器的终端节点
本来控制都挺正常的,发送数据也是正常的
但不知为什么,带有继电器的终端节点突然断网就再也连不上了
我在程序中用数码管显示_NIB.nwkState的值观察终端节点的联网状态,发现其值为NWK_ENDDEVICE,按理说应该是正常的啊
NIB.nwkState的可能值为
typedef enum
{
NWK_INIT,
NWK_JOINING_ORPHAN,
NWK_DISC,
NWK_JOINING,
NWK_ENDDEVICE,
PAN_CHNL_SELECTION,
PAN_CHNL_VERIFY,
PAN_STARTING,
NWK_ROUTER,
NWK_REJOINING
} nwk_states_t;
可是,led指示灯却一直闪烁不停,明显是已经断网
在这种状况下,终端节点就没办法重连了
另,出现这个情况之前,我是用带有按键的终端节点连续控制了几下带有继电器的终端节点,之后发现按键控制没响应了
还有协调器跟带有继电器的终端节点放在一个房间,在另一个房间放了个路由跟带按键的终端节点
情况就是这样的,这是怎么回事,还请指教,谢谢
个人判断:
后来做了一个测试,将终端节点的数据直接发送到路由器,
路由器收到后一方面用作自己显示数据,另一方面马上再转发给协调器,
这种情况下发现,终端节点运行几个小时或者一天后,
led指示灯就会闪烁不停,这应该是出错时的状态吧,
以上终端节点和路由器发送数据都有开ACK_REQUEST,
个人觉得可能是因为节点向路由器发送完数据后,等待路由器的ACK,
而路由器由于忙于向协调器转发数据,没有响应节点的请求,
导致节点没收到路由器的ACK,
从接收到的数据看,节点每组数据都发了3遍(无响应重发3次),
也证明了这一点,
时间长了,就出错了?
另,我把ACK_REQUEST取消掉之后,运行一周都没问题。