2014-05-21 6 views
0

Arduino WiFi 방패가있는 Arduino Uno R3이 있습니다. WiFi 방패에는 가장 새로운 굳힌 모가있다 (V1.1.0). 라우터에 약 900 바이트의 패킷을 보내려고합니다 (패킷은 UPnP 포트 맵을 설정하기위한 것입니다). 이 패킷은 SRAM을 보존하기 위해 프로그램 메모리에 저장됩니다. strcat_P을 사용하면 메모리에서 버퍼로 패킷을 가져 와서 WiFiClient 라이브러리 (TCP)를 사용하여 보낼 수 있습니다.Arduino WiFi Shield가 전체 TCP 패킷을 보내지 않습니다.

문제는 전체 패킷을 보낼 수 없다는 것입니다. 테스트를 위해 패킷을보기 위해 패킷 스니퍼를 사용하는 동일한 LAN에있는 컴퓨터로 패킷을 보냅니다. WiFiClient.write()를 사용하면, 내가 사용하는 버퍼의 크기에 따라 다른 성능을 얻는다. 전체 패킷이 "전송"될 때까지 반복적으로 버퍼 크기가 80 인 WiFiClient.write()를 호출하는 최상의 성능을 얻는 것 같습니다. 약 80보다 큰 값은 상대방에 공백 패킷을 발생시킵니다. 그러나 80을 사용하면 보통 약 500 바이트 만 전송됩니다. 패킷은 항상 임의의 지점에서 끊어집니다. 아무도이 원인을 알 수 있습니까?

나는 인터넷 검색을 많이 해왔으며 비슷한 문제가있는 다른 사용자를 봅니다. 그래도 솔루션을 가로 질러 본 적이 없습니다.

답변

0

나는 이것이 오래된 것을 알고 있지만, 나는 최근에 당신이 설명하는 문제를 해결하는 this article을 발견했다.

tl; dr - 한 번에 90 바이트 만 Wi-Fi 방패의 버퍼에 쓸 수 있습니다.

관련 문제