WIZnet Developer Forum

udp 수신과 softwareserial

W5500 레오나르도 보드를 사용하고 있습니다.

GPS정보를 softwareSerial로 받아오면서
외부에서 udp로 제어명령을 보내면 그에 따른 반응을 하게 하려고 합니다.

문제는 udp 수신을 위해 parsepacket() 함수를 사용하면
GPS 정보가 매초마다 갱신이 잘 안된다는 점입니다.

코드 전문을 올리려니 너무 길어서 순서만 간략히 적어둡니다.
loop문 내에는 이하의 순서로 코딩이 되어 있습니다.


if(GPS_Serial.available())
{
GPS 데이터 수신 및 parsing
}

currentMillis = millis();
if(currentMillis - previousMillis >= LED_Interval)
{
previousMillis = currentMillis;
Serial.println(“GPS_Data”);
Serial.println(PwrData.C_GPSTime[0]);
Serial.println(PwrData.C_GPSTime[1]);
Serial.println(PwrData.C_GPSTime[2]);
Serial.println(PwrData.C_Lati);
Serial.println(PwrData.C_Longi);
}

if(Udp2.parsePacket())
{
제어명령 확인 및 동작
}
if(Udp4.parsePacket())
{
제어명령 확인 및 동작
}

parsepacket()에서 if문을 모두 주석처리하고
int packetSize = Udp2.parsePacket();
이 한 줄만 넣어도 GPS데이터 갱신에 영향이 미칩니다.

이에 대한 해결방법이 있을까요?

W5500관련문의는 답변드릴수 있습니다만,
아두이노 코드에 대한 내용은 아두이노포럼에서 문제 해결하는 것이 빠를것 같습니다.
도움을 드리지 못해 죄송합니다.

Copyright © 2017 WIZnet Co., Ltd. All Rights Reserved.