사용자 도구

사이트 도구

English

moacon:nettxfree:index

차이

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

차이 보기로 링크

다음 판
이전 판
moacon:nettxfree:index [2016/03/22 21:27]
Comfile Technology 만듦
moacon:nettxfree:index [2020/02/23 14:01] (현재)
Comfile Technology [사용예]
줄 1: 줄 1:
 +====== netTxFree ​ ======
  
 +''​u16 netTxFree( u8 socket) ''​
 +|socket : 소켓번호 (0 부터 3 사이 값)   ​| ​
 +
 +==== 설명 ====
 +netSend 나 netPrint 함수가 실행되면 보내고자 하는 데이터는 송신버퍼에 저장됩니다. 해당
 +함수에서 송신이 끝날때까지 대기하지 않습니다. 이후 송신과정은 이더넷 모듈이 알아서 처리합니다.
 +
 +만약, 데이터송신이 다 끝났는지 알고싶다면,​ netTxFree 함수를 이용해서 송신버퍼의 남아있는 용량을 체크하면됩니다. 최초상태에서는 2048 입니다. (2K 의 송신버퍼를 가지고 있기 때문입니다.)
 +
 +즉, netTxFree 의 결과값이 2048 이라면, 더 이상 송신할 데이터가 없다는 뜻입니다. ​
 +
 +==== 사용예 ====
 +
 +다음은 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-|라이브러리 목록으로 가기]]