ch573 lwns_uninetflood 例程向多個(gè)mac地址發(fā)數(shù)據(jù)問題

一主十從,用了

lwns_uninetflood_example.c測試,只向一個(gè)目標(biāo)發(fā)數(shù)據(jù),正常,向多個(gè)目標(biāo)連續(xù)發(fā),出現(xiàn)丟包嚴(yán)重問題,我們的速度要求也比較高,20ms內(nèi)要向十個(gè)目標(biāo)發(fā)完數(shù)據(jù)

問題1:如果加快發(fā)送的速度?

? ? ? ?2:這個(gè)例程,如果向多個(gè)目標(biāo)發(fā)不同的數(shù)據(jù),要怎么發(fā)才盡量不會(huì)丟包?


發(fā)包函數(shù)

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]; //移位發(fā)送數(shù)據(jù),以便觀察效果

? ? ? ? }

? ? ? ? TX_DATA[9] = temp;

? ? ? ? */

/*試過,輪詢,目標(biāo)多的話,時(shí)間不夠快

? ? ? ? change_cnt++;

? ? ? ? if(change_cnt % 2 == 0){

? ? ? ? ? ? TX_DATA[0]++;

? ? ? ? ? ? lwns_buffer_load_data(TX_DATA, sizeof(TX_DATA)); //載入需要發(fā)送的數(shù)據(jù)到緩沖區(qū)

? ? ? ? ? ? lwns_uninetflood_send(&uninetflood, &dst_addr2);

? ? ? ? } else {

? ? ? ? ? ? lwns_buffer_load_data(TX_DATA, sizeof(TX_DATA)); //載入需要發(fā)送的數(shù)據(jù)到緩沖區(qū)

? ? ? ? ? ? lwns_uninetflood_send(&uninetflood, &dst_addr);? //單播網(wǎng)絡(luò)泛洪發(fā)送數(shù)據(jù)給目標(biāo)地址

? ? ? ? }

*/

/*連線發(fā),丟包嚴(yán)重

? ? ? ? ? ? TX_DATA[0]++;

? ? ? ? ? ? lwns_buffer_load_data(TX_DATA, sizeof(TX_DATA)); //載入需要發(fā)送的數(shù)據(jù)到緩沖區(qū)

? ? ? ? ? ? lwns_uninetflood_send(&uninetflood, &dst_addr2);


? ? ? ? ? ? lwns_buffer_load_data(TX_DATA, sizeof(TX_DATA)); //載入需要發(fā)送的數(shù)據(jù)到緩沖區(qū)

? ? ? ? ? ? lwns_uninetflood_send(&uninetflood, &dst_addr);? //單播網(wǎng)絡(luò)泛洪發(fā)送數(shù)據(jù)給目標(biāo)地址

? ? ? ? }

*/


//目標(biāo)多,也達(dá)不到要求

? ? ? ? TX_DATA[0]++;

? ? ? ? g_send_sucess_flag = 0;

? ? ? ? lwns_buffer_load_data(TX_DATA, sizeof(TX_DATA)); //載入需要發(fā)送的數(shù)據(jù)到緩沖區(qū)

? ? ? ? lwns_uninetflood_send(&uninetflood, &dst_addr);? //單播網(wǎng)絡(luò)泛洪發(fā)送數(shù)據(jù)給目標(biāo)地址

? ? ? ? while(!g_send_sucess_flag);

? ? ? ? g_send_sucess_flag = 0;

? ? ? ? lwns_buffer_load_data(TX_DATA, sizeof(TX_DATA)); //載入需要發(fā)送的數(shù)據(jù)到緩沖區(qū)

? ? ? ? lwns_uninetflood_send(&uninetflood, &dst_addr2);



? ? ? ? tmos_start_task(uninetflood_taskID, UNINETFLOOD_EXAMPLE_TX_PERIOD_EVT,

? ? ? ? ? ? ? ? ? ? ? ? MS1_TO_SYSTEM_TIME(20)); //周期性發(fā)送

? ? ? ? return events ^ UNINETFLOOD_EXAMPLE_TX_PERIOD_EVT;

? ? }

有沒有更好的處理方案?或者我用錯(cuò)了例程?

您好,當(dāng)涉及到組網(wǎng)場景時(shí),速度和發(fā)送頻率是無法過快的,路由節(jié)點(diǎn)需要轉(zhuǎn)發(fā)時(shí)間,節(jié)點(diǎn)需要轉(zhuǎn)發(fā)緩存。

20ms輪詢完10個(gè)節(jié)點(diǎn),建議使用星型網(wǎng)絡(luò),通過RF點(diǎn)對(duì)點(diǎn)透傳;用netflood和mesh都需要更充裕的時(shí)間以保證通訊準(zhǔn)確。


有沒有這樣類似的工程例子,有的話方便發(fā)一下參考嗎?個(gè)人信息保護(hù),已隱藏


2.4G星型組網(wǎng)沒有完整方案,需要您參考RF_PHY例程,自擬發(fā)包邏輯實(shí)現(xiàn)。


只有登錄才能回復(fù),可以選擇微信賬號(hào)登錄

国产91精品新入口,国产成人综合网在线播放,九热这里只有精品,本道在线观看,美女视频a美女视频,韩国美女激情视频,日本美女pvp视频