본문 바로가기

[INTERFACE]/iMCU_W7100

[W7100 EVM] UDP 테스트

[W7100 EVM] UDP 테스트



UDP는 신뢰성을 보장하지 않는 대신 커넥션이 필요 없으므로 속도가 빠르고 간단하게 제어 할수 있다. 접속필요 없이 IP와 포트를 알고 있으면 바로 데이터를 보낼 수 있다.

UDP처리를 간단히 코드로 나타내면 아래와 같이 된다.
//UDP처리
void ProcessUDP(void)
{
//소켓번호
int s = SOCK_UDP;
//포트번호
int port = 3000;

 switch (getSn_SR())
 {
//연결되어 데이터를 수신하게 되면
 case SOCK_UDP:
  //UDP 데이터전송되면
    len = recvfrom(s, data_buf, len, (uint8*)gDestip, &dDestport);
   

   // 처리 한다.
   EthernetTest(data_buf, len);
  break;

 //연결종료
 case SOCK_CLOSED:
  close(s);
  socket(s,Sn_MR_UDP,port,0);  
   break;
}


UDP 호스트 프로그램은 예전에 작성했던  초간단 VB UDP 테스트 프로그램  테스트 했다.
udp_host.zip



W7100 UDP 테스트 코드
void main()
{
 unsigned int cnt = 0;
 unsigned char buffer[32]; 
 
 SystemInit();  //Initialize iMCU

 init_iMCU();
 
 Led1Init(); Led1On();
 Led2Init(); Led2Off();

 U0_Init(BAUD_115200);
 U0_PutStr("iMCU Serial Test\r\n");

 Init_Network();  // Initialize   Network Configuration
 
 Sw1Init();
 
 while(1)
 {
  ProcessUDP();

  //스위치 처리
  if(GetSw1())
  {
   sw_flag ^= 1;
   if(sw_flag == 1)Led2On();
   else Led2Off();

   sprintf(buffer, "cnt%d\r\n", cnt++);
   printf(buffer);
   
   //UDP로 데이터 전송
   sendto(0,buffer, strlen(buffer), (uint8*)gDestip, gDestport);
   
   Cbi(EIF, BIT1);
   Delay(100);
  }
 }



iMCU W7100 UDP 테스트 동영상
W7100 EVM보드상의 스위치를 누르면  누른 카운트값을 UDP로 전송하는 예제. PC프로그램에서 UDP로 데이터 전송하여 LED On/Off.

태그