想用3200转发串口读取的数据,协议用的是UDP,我的想法是,读满PACKAGE个字节之后调用sl_SendTo发送一次,但是在实际测试中会有丢包的情况发生(速度只有100kb/s),为了排除UDP导致的丢包,我让3200自己产生递增数然后通过udp发走(速度保持在100k/s),测试没有丢包现象,所以我想是不是因为在运行sl_SendTo的时候错过了串口发来的数据导致丢包,如果是这个原因,我应该如何做才能保证不丢包?
while(1){ for(i = 0;i < PACKAGE; i++ ){ g_cBsdBuf[i] = (char)UARTCharGet(UARTA0_BASE);} if( i == PACKAGE){iStatus1 = sl_SendTo(iSockID, g_cBsdBuf, PACKAGE, 0,(SlSockAddr_t *)&sAddr, iAddrSize);}}
Yonghua Pan:
UART读数据有没有丢数据的现象发生?
苜蓿草:
回复 Yonghua Pan:
读数没有问题
Yonggang Wang2:
回复 苜蓿草:
读满PACKAGE个字节之后调用sl_SendTo发送一次??
这种机制本来就是丢包的机制,你打断点和自己调试肯定不丢包,因为,慢啊!
换个机制吧。
苜蓿草:
回复 Yonggang Wang2:
老师你好,能否给个思路?