【问题标题】:How to let the receiver know that an acknolegement packet was received by the sender?如何让接收方知道发送方收到了确认包?
【发布时间】:2020-01-04 23:40:22
【问题描述】:

我使用tmrh20 库连接了两个nrf24l01+ 模块。我想实现以下场景:

1. A sends a payload packet to B
2. B receives the payload packet
3. B responds with an ACK packet
4. A receives the ACK packet
5. A sends an ACK packet to B
6. B receives the ACK packet

现在我可以通过简单地在发件人上使用此代码来实现第 4 步:

bool delivered = radio.read(&message, sizeof(Message));

有没有办法在不改变角色和编写大量额外代码的情况下实现其他步骤?或者图书馆是否提供了一些简单的方法来做到这一点?

【问题讨论】:

    标签: arduino radio


    【解决方案1】:

    您可以通过放入有效负载来发送 ACK(在第 5 步中描述)。可能需要用一个很小的标头来包装您的有效负载。这个头可以用来表示是数据还是第二个ACK。

    #define MAX_PAYLOAD_DATA_SIZE   (10u)
    
    typedef enum packet_type{
      DATA_PACKET, 
      ACK_PACKET,
    
      PACKET_MAX
    }packet_type_t;
    
    typedef struct payload{
      packet_type_t packetType;
      uint8_t len;
      uint8_t data[MAX_PAYLOAD_DATA_SIZE];
    }payload_t;
    

    【讨论】:

      猜你喜欢
      • 2015-02-08
      • 1970-01-01
      • 2022-11-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-09
      • 2020-06-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多