W5500 send 함수 사용방법

현재 드라이버 포팅을 하고 loopback 테스트 까치 완료하였습니다.
저는 2byte의 데이터를 pc로 송신만 하고 싶습니다.

ex)
uint8_t dbuf[2] = {32, 20};


case SOCK_ESTABLISHED :
sentsize = 0;
while(2 != sentsize)
{
ret = send(sn,dbuf+sentsize,2-sentsize);
if(ret < 0)
{
close(sn);
return ret;
}
sentsize += ret;
}
break;

이렇게 소스를 작성하여 데이터를 보내면 정상적으로 보내지지 않습니다.
그럼 다시 uint8_t dbuf[2] = {‘a’, ‘b’}; 부분만 이렇게 바꾸어서 확인해보면
ab 라는 값이 정삭적으로 출력이 됩니다.

제가 올바르지않는 커뮤니케이션을 하고있습니까?

안녕하세요

우선작성해주신 코드를 보기에는 Sn_IR_CON비트를 클리어해주는 부분빼고는 맞습니다.
하지만 작성해주신 코드만 가지고는 문제 해결에는 도움이 될것 같지 않습니다.

  1. wireshark 프로그램(무료)을 이용하여 TCP 동작하는 부분을 캡쳐한 파일
  2. TCP send가 쓰이는 코드파일(아마도, main.c 같은것이 겠지요?)

위의 두가지를 첨부해주시면 빠른 문제해결이 될것 같습니다.
감사합니다.
EK :slight_smile:

안녕하세요 ^^

32는 아스키 값으로 SP 즉 Space입니다. 그리고
20은 아스키 값으로 DC4라는 제어 문자 입니다.

PC에서 화면 출력을 아스키로 설정해 놓았다면 아무것도 출력되지 않습니다.

‘a’,'b’는 각각 아스키 코드로 변환되어 실제로는 97과 98로 전송되게 됩니다.

수고하세요.