一起學習CC3200系列教程之TCP 速度 測試 netio

一起學習CC3200系列教程之TCP 速度  測試


         阿湯哥

序:

能力有限,難免有錯,有問題請聯繫我,

QQ1519256298       [email protected]

Pdf下載http://pan.baidu.com/s/1hqiWB56


關鍵字:TCP netio


我們應該都比較想知道CC3200的速度有快,特地花了一晚上的時間寫這個測試。

測試環境:CC3200作爲STA連接家裏的網絡,自己的電腦也連上家裏的網絡,使用的測試方法是netio,我自己模仿了netio編寫了代碼。我的電腦也是用無線連網絡的,所以速度可能會慢點,因爲我的電腦不能發現CC3200的ap,所以想直接連好像沒辦法,如果你能直接連,並測試了,請發測試圖片給我,謝謝。因爲wifi可能有涉及到某些設置(窗體啊,或者是其他的參數,我也不太懂),因此測試僅供參考,如果你對改進wifi速度有啥建議,請教我下。謝謝。

測試工具連接http://download.csdn.net/detail/hytgab/8810159

測試結果:





左邊的是電腦的,右邊的是cc3200打印的,因爲我在cc3200的定時器是秒爲單位的,不能精確到毫秒,圖簡單,因此兩邊的速度可能有些差異。

參考代碼:沒有實現udp的測試

typedef struct
{
  unsigned long  cmd;
  unsigned long data;
}CONTROL;
#define CMD_QUIT  0
#define CMD_C2S   1
#define CMD_S2C   2
#define CMD_RES   3

#define CTLSIZE sizeof(CONTROL)
char G_Buf[1024 * 32];
int G_TimerOver = 0;
int G_TimerCounter = 0;
int G_TimerMs = 0;
void TimerRefIntHandler(void)
{

    Timer_IF_InterruptClear(TIMERA1_BASE);
    G_TimerMs++;
    if (G_TimerMs == G_TimerCounter) {
    	G_TimerOver = 1;

    }
}
void vTimerInit(int iSecond) {

	G_TimerOver = 0;
	G_TimerCounter = iSecond;
	G_TimerMs = 0;
    Timer_IF_Init(PRCM_TIMERA1, TIMERA1_BASE, TIMER_CFG_PERIODIC, TIMER_A, 0);

    Timer_IF_IntSetup(TIMERA1_BASE, TIMER_A, TimerRefIntHandler);


    Timer_IF_Start(TIMERA1_BASE, TIMER_A, 1000);
}
void vTimerStop(void) {

	Timer_IF_Stop(TIMERA1_BASE, TIMER_A);
}
void vNetioTcp(void *pvParameters) {
	SlSockAddrIn_t xServer,xClient;
	int iServer,iClient,iRetVal,iRc,iRcvSize,iSendSize;
	unsigned long ulData;
	SlFdSet_t xFds;
	SlSocklen_t xAddrLen;
	struct SlTimeval_t tv;
	SlSockWinsize_t size;
	CONTROL ctl;

	tv.tv_sec = 3600;
	tv.tv_usec = 0;

	 WlanInit();
	iServer = sl_Socket(SL_AF_INET,SL_SOCK_STREAM, 0);
    if( iServer < 0 ){
       //出錯處理:略
       UART_PRINT("\r\n sl_Socket \r\n");
    }
    //設置ip及端口信息
   xServer.sin_family = SL_AF_INET;
   xServer.sin_port = sl_Htons((unsigned short)0x494F);
   xServer.sin_addr.s_addr = SL_INADDR_ANY;

   iRetVal = sl_Bind(iServer,(SlSockAddr_t *) &xServer,sizeof(xServer));
   if (iRetVal < 0 ) {
	   //出錯處理:略
	   UART_PRINT("\r\n sl_Bind \r\n");
   }
   //創建監聽,listen隊列中等待的連接數爲2
    iRetVal = sl_Listen(iServer,2);
    if (iRetVal < 0 ) {
        //出錯處理:略
        UART_PRINT("\r\n sl_Listen \r\n");
    }
    while(1) {
    	SL_FD_ZERO(&xFds); //清空
    	//初始化監聽集合,
    	SL_FD_SET(iServer,&xFds);
    	iRc = sl_Select(iServer + 1,&xFds,0,0,&tv);
    	if ((iRc == 0) || (SL_FD_ISSET(iServer,&xFds) == 0)) {
    		continue;
    	}
    	xAddrLen = sizeof(xClient);
    	 //進行接受
    	iClient = sl_Accept(iServer,(struct SlSockAddr_t *)&xClient,&xAddrLen);
    	if (iClient < 0) {
    		UART_PRINT("\r\n sl_Accept \r\n");
    	}
        size.Winsize =1024 * 8;  // bytes
    	sl_SetSockOpt(iClient,SL_SOL_SOCKET,SL_SO_RCVBUF, (_u8 *)&size, sizeof(size));
    	while(1) {

    		iRetVal = sl_Recv(iClient,(void *)&ctl,CTLSIZE,0);
    		if (iRetVal < 0) {
    			UART_PRINT("\r\n sl_Recv \r\n");
    		}
    		ctl.cmd = sl_Htonl(ctl.cmd);
    		ctl.data = sl_Htonl(ctl.data);
    		if (ctl.cmd == CMD_C2S) {
    			ulData = 0;
    			vTimerInit(100);
    			do{
					for (iRcvSize = 0;iRcvSize < ctl.data;) {
						iRetVal = sl_Recv(iClient,(void *)(G_Buf+iRcvSize),ctl.data - iRcvSize,0);
						 if (iRetVal < 0) {
								UART_PRINT("\r\n sl_Recv \r\n");
						 } else {
							 iRcvSize += iRetVal;
						 }


					}
					ulData += ctl.data;
    			}while(G_Buf[0] == 0 && iRetVal > 0);
    			vTimerStop();
    			UART_PRINT("Packet size %dk bytes:%d KBytes/s Rx,",ctl.data/1024,ulData/(1024*G_TimerMs));
    		} else if (ctl.cmd == CMD_S2C) {
    			vTimerInit(6);
    			G_Buf[0] = 0;
    			ulData = 0;
    			while(!G_TimerOver) {
					for (iSendSize = 0; iSendSize < ctl.data;) {
						iRetVal = sl_Send(iClient,(void *)&G_Buf,ctl.data - iSendSize,0);
						if (iRetVal < 0) {
							UART_PRINT("\r\n sl_Send \r\n");
						} else {
							iSendSize += iRetVal;
						}

					}
					ulData += ctl.data;
    			}
    			G_Buf[0] = 1;

    			sl_Send(iClient,(void *)&G_Buf,ctl.data,0);
    			vTimerStop();
    			UART_PRINT("  %d KBytes/s Tx.\r\n",ulData/(1024*G_TimerMs));
    		} else {
    			break;
    		}

    	}
    	sl_Close(iClient);

    }
}




發佈了44 篇原創文章 · 獲贊 13 · 訪問量 14萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章