COM 라이브러리

본 장에서는 SRLGW 관점에서 COM 라이브러리에서 제공하는 각각의 API에 대한 사용법을 설명한다. COM 라이브러리의 프로토타입은 comhead.h 헤더 파일에 정의되어 있다.

1. 개요

COM 라이브러리는 리모트 노드에서 Tmax의 SRLGW와 RS232로 통신할 수 있도록 Tmax에서 제공하는 라이브러리이다. SRLGW와 통신을 원하는 리모트 노드는 반드시 COM 라이브러리를 사용하여 통신해야 한다. 리모트 노드의 사용자는 COM 라이브러리를 이용하여 Tmax과 Serial로 서비스를 요청하거나, 또는 서비스 요청을 받을 수 있다. 리모트 노드의 사용자는 Tmax와 통신할 때 통신 관련 부분을 COM 라이브러리에서 처리하므로 쉽게 Tmax의 서비스를 이용할 수 있다.

다음은 COM 라이브러리에서 제공하는 API 목록이다.

API 설명

ComOpen

Tmax의 SRLGW와 Serial로 연결을 맺고 리모트 노드를 SRLGW에 등록하는 함수이다.

ComDetach

Tmax의 SRLGW와의 등록을 해제하기 위해서 사용하는 함수이다.

ComClose

Tmax의 SRLGW와 등록을 해제하고 연결을 끊는 함수이다.

ComSend

리모트 노드에서 Tmax의 SRLGW로 데이터를 전송하는 함수이다.

ComRecv

Tmax의 SRLGW로부터 데이터를 수신하는 함수이다.

2. ComOpen

Tmax의 SRLGW와 Serial로 연결을 맺고 리모트 노드를 SRLGW에 등록하는 함수이다.

Tmax의 SRLGW의 환경 파일의 서비스명 항목에 서비스명을 등록하지 않았으면 이 함수를 이용하여 반드시 서비스명을 등록해야 한다. 서비스명이 등록되지 않았으면 리모트 노드에서 Tmax으로 서비스는 요청할 수 있으나 반대로 Tmax에서 리모트 노드로 서비스는 요청할 수 없다. 사용자는 다른 함수를 사용하기 전에 반드시 이 함수를 사용하여 Tmax의 SRLGW와 연결해야 한다.

  • 프로토타입

    int ComOpen(int type, char *id, char *port)
  • 파라미터

    파라미터 설명

    type

    Tmax와 통신이 사용할 프로토콜(TCPIP/SERIAL)을 나타낸다.

    각각의 프로토콜은 comhead.h 파일에 등록되어 있다.

    id

    리모트 노드를 식별하는 코드이다. 이 코드는 위에서 설명한 SRLGW 환경 파일과 관련이 있다. 환경 파일에 서비스명을 등록하거나 또는 코드를 지정하여 리모트 노드를 식별하는 코드를 등록할 수 있다. 등록하는 코드는 반드시 Tmax 환경 파일의 SERVICE 절에 등록된 서비스명이어야 한다.

    port

    Tmax의 SRLGW와 연결할 때 사용할 포트를 지정하는 항목이다. Serial로 통신하는 경우에는 위에서 설명한 SRLGW의 환경설정에 등록한 각각의 항목을 지정한다.

    포트에 정보를 String으로 연속해서 지정하면 된다. (예:“COM1:9600:8:ODD:1”)

  • 반환값

    반환값 설명

    0

    함수 호출에 성공한 경우이다.

    -1

    함수 호출에 실패한 경우이다.

3. ComDetach

Tmax의 SRLGW와의 등록을 해제하기 위해서 사용하는 함수이다. 등록만 해제하고 실질적인 연결을 끊지 않는다. ComDetach 함수를 사용하면 Tmax의 SRLGW와 데이터를 송수신할 수 없다.

  • 프로토타입

    int ComDetach(void)
  • 반환값

    반환값 설명

    0

    함수 호출에 성공한 경우이다.

    -1

    함수 호출에 실패한 경우이다.

4. ComClose

Tmax의 SRLGW와 등록을 해제하고 연결을 끊는 함수이다. Tmax의 SRLGW와 통신을 끊고자 하는 경우에는 반드시 함수를 호출해야만 한다. 특히 Serial 통신인 경우에 SRLGW에서 리모트 노드의 프로그램이 다운되었는지의 여부를 알 수 없으므로 함수를 이용하여 SRLGW와 연결을 해제해야 한다.

  • 프로토타입

    int ComClose(void)
  • 반환값

    반환값 설명

    0

    함수 호출에 성공한 경우이다.

    -1

    함수 호출에 실패한 경우이다.

5. ComSend

리모트 노드에서 Tmax의 SRLGW로 데이터를 전송하는 함수이다. 함수를 이용하여 Tmax에 서비스를 요청하거나 또는 응답을 전송할 수 있다. Tmax의 서비스 요청에 대한 응답을 보낼 경우에도 반드시 Tmax의 새로운 서비스명을 지정해야 한다.

  • 프로토타입

    Int ComSend(char *svc, int msgtype, char *data, long len, long flags)
  • 파라미터

    파라미터 설명

    svc

    Tmax에 요청할 서비스명을 지정하는 항목이다.

    msgtype

    Tmax의 SRLGW에 전송하는 데이터의 종류를 나타낸다. 각각의 메시지 타입은 commhead.h 파일을 참고한다.

    data

    Tmax의 SRLGW에 전송할 테이터가 저장된 버퍼의 포인터이다.

    len

    전송할 데이터의 길이를 나타낸다.

    flags

    서비스 요청시 SRLGW가 해당 요청을 어떻게 처리해야 하는지를 나타낸다.

    flags에 COMMDELAY가 설정되어 있으면 SRLGW는 해당 데이터를 지연처리로 인식하여 RQ에 저장하고, COMMNOREPLY가 설정되어 있으면 서비스만 요청하고 응답을 받지 않겠다는 의미로 인식된다.

    현재 flags에 지정할 수 있는 값은 2가지로 commhead.h 파일을 참고한다.

  • 반환값

    반환값 설명

    0

    함수 호출에 성공한 경우이다.

    -1

    함수 호출에 실패한 경우이다.

6. ComRecv

Tmax의 SRLGW로부터 데이터를 수신하는 함수이다. 데이터는 서비스 요청일 수도 있고, 응답 데이터일 수도 있다.

  • 프로토타입

    Int ComRecv(char *svc, int *msgtype, char *data, long *len, long flags)
  • 파라미터

    파라미터 설명

    svc

    Tmax에 요청한 서비스명이 저장될 항목이다.

    msgtype

    Tmax의 SRLGW에서 전송하는 데이터의 종류를 나타낸다. 각각의 메시지 타입은 commhead.h 파일을 참고한다.

    data

    Tmax의 SRLGW에서 수신한 테이터가 저장될 버퍼의 포인터이다. 이 버퍼는 수신 데이터중 가장 큰 데이터의 버퍼 크기를 가져야 한다.

    len

    수신한 데이터의 길이를 나타낸다.

    flags

    사용하지 않는다.

  • 반환값

    반환값 설명

    0

    함수 호출에 성공한 경우이다.

    -1

    함수 호출에 실패한 경우이다.