与 python-xbee库中,我编写了代码将数据从端点发送到协调器。我已成功将数据发送到协调器,协调器接收该数据。但是,在终点代码中,协调器获取数据后,我想结束通信。我应该写什么才能检测到协调器已收到数据?
我正在发送数据
class XbeeSend(Concurrent):
def __init__(self):
self.stopped = False
threading.Thread.__init__(self)
def run(self):
try:
while self.stopped == False :
data_ = str( .... )
xbee.send('tx',frame_id='\x01',dest_addr_long=DEST_ADDR_LONG,dest_addr="\xff\xfe",data=data_)
time.sleep(1)
threading.Timer(2, self.run())
except:
None
最佳答案
当协调器收到您的消息时,您应该在发送节点上收到成功的“传输状态”消息(帧类型 0x88)。这是一个低级状态消息,表明 radio (XBee 模块)已收到该消息,并不能保证您的应用程序层已实际处理该消息。
例如,如果您的应用程序崩溃了,但 XBee 仍处于通电状态,您仍然会看到传输状态为 SUCCESS。
我不知道如何配置 python-xbee
来接收传输状态消息的副本。您需要更新代码以使用递增的帧 ID(1 到 255,然后返回到 1)并保留最近发送的帧的表。将传输状态消息中引用的帧 ID 与您的表进行匹配,以了解已接收到哪些帧。
python-xbee
库应该有一种模式,它为发送的每条消息使用新的帧 ID,并提供该信息以供您在表中使用。
关于python - 如何获得确认并停止发送数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16566593/