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데이터 갱신에 영향이 미칩니다.
이에 대한 해결방법이 있을까요?