사용자 도구

사이트 도구

English

moacon:netrecv:index

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판 이전 판
다음 판
이전 판
moacon:netrecv:index [2016/03/23 23:23]
Comfile Technology
moacon:netrecv:index [2020/02/23 14:01] (현재)
Comfile Technology [사용예]
줄 1: 줄 1:
 +====== netRecv ​ ======
  
 +''​u16 netRecv( u8 socket, u8 * buf, u16 len) ''​
 +|socket : 소켓번호 (0 부터 3 사이 값)  | 
 +|buf :수신한 데이터를 저장할 곳의 포인터 ​  ​| ​
 +|len : 수신할 데이터의 바이트수 ​  ​| ​
 +
 +==== 설명 ====
 +이더넷 데이터 수신 함수입니다. netStatus 함수로 읽어본 상태가 SOCK_ESTABLISHED 일
 +경우에만 사용할 수 있습니다.
 +
 +수신할 데이터의 개수를 적어주어야 하므로, 본 함수를 사용하기 전에 수신버퍼에 데이터가
 +도착해 있는지를 살펴보아야 합니다. 이를 위한 netRxLen 함수가 준비되어 있습니다.
 +
 +성공하면 수신한데이터의 개수를 반환하고,​ 실패하면 –1 (0xffff)을 반환합니다. ​
 +
 +==== 사용예 ====
 +
 +다음은 TCP 루프백 테스트 프로그램입니다. 아래그림처럼 네트워크상에 TCP 에코처리를
 +해주는 별도의 디바이스가 있어야 테스트가 가능합니다. ​
 +
 +이 프로그램은 에코디바이스로 TCP 데이터를 송신하고,​ 같은 데이터가 되돌아 오는지를 확인하여,​ LCD 상에 표시해주는
 +프로그램입니다. 에코디바이스의 IP 어드레스는 192.168.0.1 로 되어 있습니다. ​
 +
 +
 +<code c>
 +#include "​moacon500.h"​
 +void cmain(void)
 +{
 + u8 i=0x35,j;
 + u16 k,​kk=0,​length1;​
 + ​clcdPower(1);​
 + ​clcdI2cInit(0);​
 + u8 GatewayIP[]={192,​168,​0,​1};​
 + u8 SubnetMask[]={255,​255,​255,​0};​
 + u8 MacAdr[]={0,​0,​34,​53,​12,​0};​
 + u8 DeviceIp[]={192,​168,​0,​12};​
 + u8 destIP[]={192,​168,​0,​2};​
 +
 + char data1[] = "​Comfile";​
 + char data2[20];
 + ​netBegin(GatewayIP,​ SubnetMask, MacAdr, DeviceIp);
 + ​socketOpen(0,​1000);​
 + ​connect(0,​destIP,​5000);​
 + while (1) {
 +   ​switch(netStatus(0)) {
 +   case SOCK_ESTABLISHED:​
 +     ​netPrint(0,"​Comfile%D%C",​kk++,​0);​
 +     ​delay(20);​
 +     ​length1 = netRxLen(0); ​
 +     ​clcdLocate(0,​2);​
 +     ​netRecv(0,​data2,​length1);​
 +     ​data2[--length1]=0;​
 +     ​clcdPrint(0,​2,​data2);​
 +     ​clcdPrint(0,​3,"​Rx=%d",​length1);​
 +     ​delay(200);​
 +     ​break;​
 +   case SOCK_CLOSE_WAIT:​
 +     ​disConnect(0);​
 +     ​clcdPrint(0,​0,"​Socket disconnect"​);​
 +     ​delay(200);​
 +     ​break;​
 +   case SOCK_CLOSED:​
 +     ​clcdPrint(0,​0,"​Socket Closed ");
 +     ​delay(200);​
 +     if (connect(0,​destIP,​5000) != 0 ) {
 +       ​clcdPrint(0,​0,"​Socket open ");
 +       }
 +   ​break;​
 +   }
 + }
 +
 +</​code>​
 +
 +{{ :​moacon:​netrxlen:​ethernetsample.png?​nolink |}}
 +
 +
 +[[moacon:​index#​-m-|라이브러리 목록으로 가기]]