본문 바로가기 주메뉴 바로가기 하위메뉴 바로가기

생활속의 위성 항법 보다 안전하게 제공하겠습니다.

프린트하기

Ntrip Client Library

개요

dgnssLib는 NTRIP 클라이언트를 위한 API를 제공하는 라이브러리로, 개발환경은 visual studio 2010 C++로 빌드되었습니다. 다음의 <그림>과 같이 iNTRIP은 라이브러리 내에서 클래스로 구현되어 각 기능을 제공하고, 라이브러리 사용자는 iREPLY 인터페이스를 상속받아 클래스로 구 현하여 사용하여야 합니다. 다음 <그림>은 NTRIP 클라이언트 라이브러리와 응용프로그램 간의 관계 및 호출순서를 보여 주며, 라이브러리 파일은 dgnssLib.h, dgnssLib.lib, dgnssLibD.lib로 제공되고, 라이브러리 사 용예제 프로젝트는 NtripSample로 제공됩니다.

        

makeNtrip

구문
  • iNTRIP *makeNtrip(
    iREPLY *reply
    );
매개변수
  • reply : NTRIP 결과를 받기 위한 객체 포인터
반환값
  • iNTRIP 인터페이스를 상속한 클래스 객체 포인터
설명
  • 위의 <그림>의 ①과 같이 iREPLY 객체를 매개변수로, NTRIP 클라이언트를 수행하는 쓰레드 객체를 생성하기 위한 함수입니다.
요구사항
  • 반환된 iNTRIP 객체는 사용 후에 반드시 소멸(delete)시켜야 합니다.
예제
  • int main(int argc, char* argv[])
    {
    iNTRIP *ntrip;
    cREPLY reply;
    NTRIP info;
    SourceTable table;

    ntrip = makeNtrip(&reply);
    info.addr = inet_addr(argv[1]);
    info.port = htons(atoi(argv[2]));
    strcpy(info.mount, argv[3]);
    sprintf(info.user, "%s:%s", argv[4], argv[5]);
    ntrip->runNtrip(&info);

    getchar();
    ntrip->runNtrip();

    delete ntrip;

    return 0;
    }

getSource

구문
  • void getSource(
    uint32 ip,
    uint16 port,
    sourceTbl *table
    );
매개변수
  • ip : NTRIP SOURCE TABLE을 조회하기 위한 NTRIP 캐스터의 IP 주소
  • port : NTRIP SOURCE TABLE을 조회하기 위한 NTRIP 캐스터의 포트번호
  • table : NTRIP SOURCE TABLE을 저장하기 위한 vector 포인터
설명
  • RTCM 데이터를 RINEX로 변환하는 객체를 생성하기 위한 함수입니다.
요구사항
  • vector 리스트로서 사용 후에 반드시 비워(clear)주어야 합니다.
예제
  • void update(uint32 addr, int16 port)
    {
    srcTable table;
    int count;

    if ((_ntrip.addr == addr) && (_ntrip.port == port))
    return;

    table.reserve(1024);
    getSource(_ntrip.addr, _ntrip.port, &table);
    count = table.size();

    table.clear();
    }

runNtrip

구문
  • void iNTRIP::runNtrip(
    NTRIP *ntrip
    );
매개변수
  • ntrip : NTRIP 캐스터에 접속하기 위한 클라이언트 정보 구조체(struct NTRIP) 포인터
설명
  • 위의 <그림>의 ②와 같이 ntrip 값이 NULL이 아니면 NTRIP 클라이언트 쓰레드를 시작하고, ③와 같이 NULL이면 쓰레드를 종료합니다. 정보는 IP 주소, 포트번호, 사용자 ID와 비밀번호, MOUNT POINT명이 명시되어야 합니다. 쓰레드가 시작되면 ③의 iREPLY::setState()로 상태정보와 ④의 iREPLY::outNtrip()으로 RTCM 데이터가 반복적으로 수신됩니다.
요구사항
  • 사용자 ID와 비밀번호는 콜론(:)으로 구분하여 연결되어야 합니다. 예를 들면 ID가 “user”이고, 비밀번호가 “1234”이면 “user:1234”로 제공되어야 합니다.
예제
  • int main(int argc, char* argv[])
    {
    iNTRIP *ntrip;
    cREPLY reply;
    NTRIP info;
    SourceTable table;

    ntrip = makeNtrip(&reply);

    info.addr = inet_addr(argv[1]);
    info.port = htons(atoi(argv[2]));
    strcpy(info.mount, argv[3]);
    sprintf(info.user, "%s:%s", argv[4], argv[5]);
    ntrip->runNtrip(&info);

    getchar();

    ntrip->runNtrip();

    delete ntrip;

    return 0;
    }

setState

구문
  • void iREPLY::setState(
    int32 state
    );
매개변수
  • state : NTRIP 클라이언트의 상태값
설명
  • <그림>의 ③과 같이 쓰레드로 동작하는 NTRIP 클라이언트의 상태가 변경되면 상태정보를 전달합니다.
  • NTRIP_CLOSE : NTRIP 클라이언트 종료 상태
  • NTRIP_OPEN : NTRIP 클라이언트 시작 상태
  • NTRIP_RUN : NTRIP 클라이언트로 정상 동작
  • NTRIP_ERROR : 네트워크가 불가능한 경우
  • NTRIP_DISCONNECT : NTRIP 캐스터로 연결이 불가능한 경우
  • NTRIP_TIMEOUT : NTRIP 데이터가 4초이상 지연되는 경우
  • NTRIP_HANGUP : 연결이 끊긴 경우
  • NTRIP_NOTFOUND : NTRIP 캐스터를 찾을 수 없는 경우
  • NTRIP_UNAUTHORIZED : ID 또는 비밀번호가 틀린 경우
  • NTRIP_NOTIMPLEMENTED : 지원이 불가능한 경우
  • NTRIP_INCORRECT : 기타 정보 또는 환경이 정확하지 않은 경우
예제
  • #define NTRIP_CLOSE          0
    #define NTRIP_OPEN 1
    #define NTRIP_RUN 2
    #define NTRIP_ERROR -1
    #define NTRIP_DISCONNECT -2
    #define NTRIP_TIMEOUT -3
    #define NTRIP_HANGUP -4
    #define NTRIP_NOTFOUND -5
    #define NTRIP_UNAUTHORIZED -6
    #define NTRIP_NOTIMPLEMENTED -7
    #define NTRIP_INCORRECT -8

    STDMETHODIMP_(void) cREPLY::setState(int32 state)
    {
    printf("outState() : %d\n", state);
    _state = state;
    }

outNtrip

구문
  • void iREPLY::outNtrip((
    char *data,
    int32 size
    );
매개변수
  • data : NTRIP 클라이언트에 의해 수신된 데이터 포인터
  • size : 수신된 데이터의 길이
설명
  • <그림>의 ④와 같이 NTRIP 쓰레드에서 수신된 데이터를 전달합니다.
  • NTRIP_CLOSE : NTRIP 클라이언트 종료 상태
  • NTRIP_OPEN : NTRIP 클라이언트 시작 상태
  • NTRIP_RUN : NTRIP 클라이언트로 정상 동작
  • NTRIP_ERROR : 네트워크가 불가능한 경우
  • NTRIP_DISCONNECT : NTRIP 캐스터로 연결이 불가능한 경우
  • NTRIP_TIMEOUT : NTRIP 데이터가 4초이상 지연되는 경우
  • NTRIP_HANGUP : 연결이 끊긴 경우
  • NTRIP_NOTFOUND : NTRIP 캐스터를 찾을 수 없는 경우
  • NTRIP_UNAUTHORIZED : ID 또는 비밀번호가 틀린 경우
  • NTRIP_NOTIMPLEMENTED : 지원이 불가능한 경우
  • NTRIP_INCORRECT : 기타 정보 또는 환경이 정확하지 않은 경우
예제
  • STDMETHODIMP_( void ) cREPLY::outNtr ip( char * data , int32 size)
    {
    // RTCM 디코딩
    printf("ourNtrip() : %d\n", size);
    }
        
만족도 조사

최종수정일 : 2018-01-04

이 페이지에서 제공하는 정보에 대하여 만족하십니까?

top
back