使用CC3200实现UART接收Wi-Fi转发的一点疑问
时间:10-02
整理:3721RD
点击:
想用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); } }
UART读数据有没有丢数据的现象发生?
读数没有问题
读满PACKAGE个字节之后调用sl_SendTo发送一次?
这种机制本来就是丢包的机制,你打断点和自己调试肯定不丢包,因为,慢啊!
换个机制吧。
老师你好,能否给个思路?
如果串口有协议,就按照数据帧走发送;如果没有协议,就按照定时器走
我只能说到这儿了