This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

CC2640R2F: 有没有办法保证一主多从通信中,某一次通信一定成功?

Part Number: CC2640R2F


请问有没有办法保证一主多从通信中,某一次通信一定成功?就是说主机给从机发送命令,一定一次成功。不进行重发。只要有一次就行,不要求每次都是一次性成功。

  • 您好,针对于您描述的问题:只要有一次就行,不要求每次都是一次性成功。

    那您可以直接去多次发送就可以了,取消掉重发判断就可以了,主机一直发,不去接受从机接受成功的回传判断条件即可。

  • 还有就是对于您这边提到的一次发送一定成功,任何通信都是做不到的,尤其是多个从机以及复杂的通信环境下。

    您不想去进行单个数据多次重发的话,就直接去写发送数据过去就可以了,把接受重发回传条件去掉。

    也就是主机一直在发,不去管从机是否能收到。

    这样就可以做到每次发送的数据都是最新的状态,也就不会影响你数据的实时性,但是这样做可能会丢掉某一次的数据。

  • extern bStatus_t GATT_Notification( uint16 connHandle, attHandleValueNoti_t *pNoti,
    uint8 authenticated );(不需要主机回应就可以继续发送)

    我刚刚为您找到了这个函数,这个函数与GATT——Indication的区别是一个需要主机回应而另一个不需要主机的回应。

  • BLE重传机制是一定能保证从机的数据一定被主机接收吗?

  • 您好,对的如果主机收不到数据的话不回去进行回传标志的,这样就会一直发送,直到有应答之后再进行下一步

    当然这也取决你的程序如何设计。

    这边我给您提供了这个函数,希望可以帮助到您。

    extern bStatus_t GATT_Notification( uint16 connHandle, attHandleValueNoti_t *pNoti,
    uint8 authenticated );(不需要主机回应就可以继续发送)

    我刚刚为您找到了这个函数,这个函数与GATT——Indication的区别是一个需要主机回应而另一个不需要主机的回应。