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

コーディネーターがメッセージを受信すると、送信ノードで成功の「送信ステータス」メッセージ (フレーム タイプ 0x88) を受信する必要があります。これは、ラジオ (XBee モジュール) がメッセージを受信したという低レベルのステータス メッセージであり、アプリケーション層が実際にメッセージを処理したことを保証するものではありません。

たとえば、アプリケーションがクラッシュしても XBee の電源が入っている場合、送信ステータスは引き続き SUCCESS と表示されます。

python-xbee送信ステータス メッセージのコピーを受信するように構成する方法がわかりません。増加するフレーム ID (1 から 255 に戻り、1 に戻る) を使用し、最近送信されたフレームのテーブルを保持するようにコードを更新する必要があります。送信ステータス メッセージで参照されているフレーム ID をテーブルと照合して、どのフレームが受信されたかを確認します。

ライブラリには、python-xbee送信されるメッセージごとに新しいフレーム ID を使用するモードが必要であり、テーブルで使用するためにその情報を提供します。

于 2013-05-20T17:30:49.657 に答える