W550IO 모듈과 PC와의 브로드캐스팅 통신을 하는데 있어서
W500IO 모듈에서 수신과 송신은 되는데
PC에서 수신이 되지 않습니다.
다만 Wireshark 프로그램을 실행시키면 양쪽 모두에서 송수신이 원할하게 이루어지지만
Wireshark 프로그램을 종료시키면 PC에서 수신이 되지 않습니다.
(W550IO 모듈은 atmega128과 SPI 통신을 하고 있습니다.)
//////////////////////////////////////////////////////////////////////////////////////////////////
switch(getSn_SR(SOCK_UDPS))
{
case SOCK_UDP:
if((size = getSn_RX_RSR(SOCK_UDPS)) > 0)
{
if(size > NET_RX_LEN)
size = NET_RX_LEN;
ret = recvfrom(SOCK_UDPS, buffer, size, destip, (uint16_t*)&destport);
if(ret <= 0)
{
DebugPrint(“Udp recvfrom error…\r\n”);
return;
}
size = ret;
//멀티캐스팅 그룹에 등록하는 절차
close(SOCK_UDPS);
delay_ms(10);
memcpy(mac, gWIZNETINFO.mac, 6);
mac[3] = gWIZNETINFO.ip[1] & 0x7F;
mac[4] = gWIZNETINFO.ip[2];
mac[5] = gWIZNETINFO.ip[3];
setSn_DPORT(SOCK_UDPS, destport);
setSn_DIPR(SOCK_UDPS, destip);
setSn_DHAR(SOCK_UDPS, mac);
delay_ms(10);
ret = socket(SOCK_UDPS, Sn_MR_UDP, UDP_PORT, SF_MULTI_ENABLE);
if(ret != SOCK_UDPS)
{
DebugPrint("Udp Socket Error..%d\r\n", ret);
break;
}
else
DebugPrint("Udp Server Start..\r\n");
////////////////////////////////////////////////////////////
//set or get network configuration
ConfigurationData(buffer, size, destip, destport);
DebugPrint("recvfrom : %d.%d.%d.%d, %ld, %ld, %02X\r\n", destip[0], destip[1], destip[2], destip[3], destport, size, buffer[0]);
//DebugPrint("====%d\r\n", ret);
}
break;
case SOCK_CLOSED:
ret = socket(SOCK_UDPS, Sn_MR_UDP, UDP_PORT, SF_MULTI_ENABLE);
if(ret != SOCK_UDPS)
DebugPrint("Udp Socket Error..%d\r\n", ret);
else
DebugPrint("Udp Server Start..\r\n");
break;
}
/////////////////////////////////////////////////////////////////////////////////////////////////////
W550IO 모듈 설정이 잘못 된건가요?
답변해 주시면 고맙겠습니다.
감사합니다.