1

使用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
4

1 回答 1

1

当协调器收到您的消息时,您应该在发送节点上收到 SUCCESS 的“传输状态”消息(帧类型 0x88)。这是无线电(XBee 模块)收到消息的低级状态消息,并不能保证您的应用层已经实际处理了该消息。

例如,如果您的应用程序崩溃了,但 XBee 仍然通电,您仍然会看到 SUCCESS 的传输状态。

我不知道您将如何配置python-xbee接收传输状态消息的副本。您需要更新代码以使用递增的帧 ID(1 到 255 并返回 1)并保留最近发送的帧表。将传输状态消息中引用的帧 ID 与您的表格相匹配,以了解已接收到哪些帧。

python-xbee应该有一个模式,它为每条发送的消息使用一个新的帧 ID,并将该信息提供给您以在您的表中使用。

于 2013-05-20T17:30:49.657 回答