如何让接收方知道发送方收到了确认包?
How to let the receiver know that an acknolegement packet was received by the sender?
我已经使用 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));
有没有办法在不改变角色和编写大量额外代码的情况下实现其他步骤?或者图书馆是否提供了一些简单的方法来做到这一点?
您可以通过放入有效载荷来发送ACK(在步骤5中描述)。可能需要用一个很小的 header 包装您的有效负载。这个header可以用来表示是data还是second 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;
我已经使用 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));
有没有办法在不改变角色和编写大量额外代码的情况下实现其他步骤?或者图书馆是否提供了一些简单的方法来做到这一点?
您可以通过放入有效载荷来发送ACK(在步骤5中描述)。可能需要用一个很小的 header 包装您的有效负载。这个header可以用来表示是data还是second 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;