사용자 도구

사이트 도구

English

moacon:nettxfree:index

netTxFree

u16 netTxFree( u8 socket)

socket : 소켓번호 (0 부터 3 사이 값)

설명

netSend 나 netPrint 함수가 실행되면 보내고자 하는 데이터는 송신버퍼에 저장됩니다. 해당 함수에서 송신이 끝날때까지 대기하지 않습니다. 이후 송신과정은 이더넷 모듈이 알아서 처리합니다.

만약, 데이터송신이 다 끝났는지 알고싶다면, netTxFree 함수를 이용해서 송신버퍼의 남아있는 용량을 체크하면됩니다. 최초상태에서는 2048 입니다. (2K 의 송신버퍼를 가지고 있기 때문입니다.)

즉, netTxFree 의 결과값이 2048 이라면, 더 이상 송신할 데이터가 없다는 뜻입니다.

사용예

다음은 TCP 루프백 테스트 프로그램입니다. 아래그림처럼 네트워크상에 TCP 에코처리를 해주는 별도의 디바이스가 있어야 테스트가 가능합니다.

이 프로그램은 에코디바이스로 TCP 데이터를 송신하고, 같은 데이터가 되돌아 오는지를 확인하여, LCD 상에 표시해주는 프로그램입니다. 에코디바이스의 IP 어드레스는 192.168.0.1 로 되어 있습니다.

#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;
   }
 }
} 

목록으로 가기

moacon/nettxfree/index.txt · 마지막으로 수정됨: 2016/04/14 09:50 (바깥 편집)