W5500으로 클라이언트 기능 구성은 어떻게

#1

안녕하세요?

전화 통화랑은 틀리게 게시판 문의는 친절 하게 답변해 주셔서 빠르게 진행이 되어 가고 있습니다.

서버가 뭔지 클라이언트가 먼지 소켓은 또 먼지 모르는 1인으로 아래와 같은 기능을 구현 해야 됩니다.

제가 가지고 있는 PC를 서버로 두고 ------ W5500을 클라이언트로 구성을 한뒤

PC 프로그램에서 0x88 이라고 데이타를 보내면.
W5500 에서는 0x88 일경우 거기에 맞는 데이타를 보내 주고.

0x99 일경우는 거기에 맞는 데이타를 보내 주는 그런 동작을 구현하고 싶습니다.

Main 에서 설정은 기존과 같이 하면 될거 같고.

여기 게시글을 보면 무슨 소켓을 생겅 해야 되는거 같은데…

이건 어떻게 해야 되나요?

그리고 데이타 받아서 보내 주는 동작도 어떻게 해야 되는지 궁금합니다.

#2

W5500은 소켓이 8개 있습니다.
실제 통신은 각 소켓별로 이루어집니다.

데이터를 수신하고 데이터를 송신하고 연결을 끊고 연결을 형성하고 하는 일련의 과정으로 통신 프로그램이 이루어집니다.
그리고 소켓의 연결 상태에 따라서 어떤 일을 할 것인지가 정해져야합니다.

github.com에 있는 예제 코드를 참조하세요.
loopback 예제를 참고하시면 됩니다.

#3

안녕하세요?

근로자의 날인데 고생이 많으 십니다.
깃허브 에 있는 loopback 소스를 간추려 보면

while(1){
/* PHY Status checker: [PHY status] checked every ‘SEC_PHYSTATUS_CHECK’ seconds */
if(PHYStatus_check_flag){
PHYStatus_check_flag = false;
PHYStatus_Check();
}

if(run_user_applications) { /* Loopback test : TCP Server / UDP */ 
  if ((ret = loopback_tcps(SOCK_TCPS, buffer, PORT_TCPS)) < 0){// TCP server loopback test 

#ifdef MAIN_DEBUG
printf(“SOCKET ERROR : %ld\r\n”, ret);
#endif
}
if((ret = loopback_udps(SOCK_UDPS, buffer, PORT_UDPS)) < 0){ // UDP loopback test
#ifdef MAIN_DEBUG
printf(“SOCKET ERROR : %ld\r\n”, ret);
#endif
}
} // End of user’s code
} // End of Main loop

위와 같이 되고
void PHYStatus_Check(void){
uint8_t tmp;
do{
ctlwizchip(CW_GET_PHYLINK, (void*) &tmp);
if(tmp == PHY_LINK_OFF) {
//여기다 뭘 넣어야 되는거야?
}
}while(tmp == PHY_LINK_OFF);
}
여렇게 있음 되는거 같은데…

여기 글들 보면 소켓을 Open 하니 close 하니 뭐 그런 얘기 들이 있는데 여긴 그런 내용이 없어요,
아직 잘 모르기는 한데 소켓 하나만 있으면 되는거 같은데.

맞게 하고 있는건가요?
PC 에서 오는 데이타를 어떻게 받고… 데이타 확인해 보내는 방법은 어떻게 하나요?

#4

loopback_tcps()함수내에서 위에서 설명드렸던 일들을 합니다.
loopback_tcps()함수는 TCP Server 모드로 소켓을 열어서 Loopback 통신을 하는 함수입니다.
loopback.c 파일내에 보시면 loopback_tcps()함수가 있습니다.

loopback.c 파일의 위치는 아래와 같습니다.

감사합니다.

#5

한국어 포럼으로 이동시키겠습니다.

감사합니다.
irina

#6

안녕하세요?

https://blog.naver.com/newspacekor/221527749216

관련 해서 위와 같이 테스트를 했는데요.

SOCK_LISTEN 상태만 계속 나오네요.

#7

PC 프로그램에서 보드쪽으로 연결 요청을 해야 SOCK_ESTABLISHED 상태로 바뀝니다.

TCP 프로토콜에 대한 상세한 것은 아래 문서를 참고하세요.

https://wizwiki.net/wiki/doku.php?id=products:w5500:application:tcp_function