ch573 lwns_uninetflood 例程向多个mac地址发数据问题

一主十从,用了

lwns_uninetflood_example.c测试,只向一个目标发数据,正常,向多个目标连续发,出现丢包严重问题,我们的速度要求也比较高,20ms内要向十个目标发完数据

问题1:如果加快发送的速度?

       2:这个例程,如果向多个目标发不同的数据,要怎么发才尽量不会丢包?


发包函数

uint16_t lwns_uninetflood_ProcessEvent(uint8_t task_id, uint16_t events)

{

    static uint8_t change_cnt = 0;

    if(events & UNINETFLOOD_EXAMPLE_TX_PERIOD_EVT)

    {

        /*

        uint8_t temp;

        temp = TX_DATA[0];

        for(uint8_t i = 0; i < 9; i++)

        {

            TX_DATA[i] = TX_DATA[i + 1]; //移位发送数据,以便观察效果

        }

        TX_DATA[9] = temp;

        */

/*试过,轮询,目标多的话,时间不够快

        change_cnt++;

        if(change_cnt % 2 == 0){

            TX_DATA[0]++;

            lwns_buffer_load_data(TX_DATA, sizeof(TX_DATA)); //载入需要发送的数据到缓冲区

            lwns_uninetflood_send(&uninetflood, &dst_addr2);

        } else {

            lwns_buffer_load_data(TX_DATA, sizeof(TX_DATA)); //载入需要发送的数据到缓冲区

            lwns_uninetflood_send(&uninetflood, &dst_addr);  //单播网络泛洪发送数据给目标地址

        }

*/

/*连线发,丢包严重

            TX_DATA[0]++;

            lwns_buffer_load_data(TX_DATA, sizeof(TX_DATA)); //载入需要发送的数据到缓冲区

            lwns_uninetflood_send(&uninetflood, &dst_addr2);


            lwns_buffer_load_data(TX_DATA, sizeof(TX_DATA)); //载入需要发送的数据到缓冲区

            lwns_uninetflood_send(&uninetflood, &dst_addr);  //单播网络泛洪发送数据给目标地址

        }

*/


//目标多,也达不到要求

        TX_DATA[0]++;

        g_send_sucess_flag = 0;

        lwns_buffer_load_data(TX_DATA, sizeof(TX_DATA)); //载入需要发送的数据到缓冲区

        lwns_uninetflood_send(&uninetflood, &dst_addr);  //单播网络泛洪发送数据给目标地址

        while(!g_send_sucess_flag);

        g_send_sucess_flag = 0;

        lwns_buffer_load_data(TX_DATA, sizeof(TX_DATA)); //载入需要发送的数据到缓冲区

        lwns_uninetflood_send(&uninetflood, &dst_addr2);



        tmos_start_task(uninetflood_taskID, UNINETFLOOD_EXAMPLE_TX_PERIOD_EVT,

                        MS1_TO_SYSTEM_TIME(20)); //周期性发送

        return events ^ UNINETFLOOD_EXAMPLE_TX_PERIOD_EVT;

    }

有没有更好的处理方案?或者我用错了例程?

您好,当涉及到组网场景时,速度和发送频率是无法过快的,路由节点需要转发时间,节点需要转发缓存。

20ms轮询完10个节点,建议使用星型网络,通过RF点对点透传;用netflood和mesh都需要更充裕的时间以保证通讯准确。


有没有这样类似的工程例子,有的话方便发一下参考吗?个人信息保护,已隐藏


2.4G星型组网没有完整方案,需要您参考RF_PHY例程,自拟发包逻辑实现。


只有登录才能回复,可以选择微信账号登录