8.1.8. ecdoGetOne


SYNOPSYS

t_bool ecdoGetOne(
  t_i32 NetID,
  t_ui32 DoChannel,
  t_i32 *ErrCode)

t_bool ecdoGetOne_L(
  t_i32 NetID,
  t_ui16 SlvPhysAddr,
  t_ui32 DoChannel,
  t_i32 *ErrCode)

DESCRIPTION

  • ecdoGetOne 함수는 단일 채널에 대한 디지털 출력 상태를 반환합니다

  • ecdoGetOne_L 함수는 지역 채널 방식으로 지정된 디지털출력 채널의 출력 상태를 반환합니다.

PARAMETER

  • NetID : Network 번호

  • DoChannel : 디지털 출력 채널 번호

  • SlvPhysAddr: 슬레이브 주소

  • ErrCode : 이 매개 변수를 통하여 현재의 에러 코드를 반환합니다. 단, 이 매개 변수에 NULL을 전달하면 에러 코드를 반환하지 않습니다.

RETURN VALUE

  • 출력 상태 값을 반환합니다.

EXAMPLE

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
/**********************************************************
채널의 DO 상태를 확인 하는 예제
슬레이브에서 할당 받은 초기 채널과 채널 수를 이용하여
슬레이브의 모든 채널 Do 상태를 확인
***********************************************************/

#include "ComiEcatSdk_Api.h"
#define DO_CHNUMBER 0 //사용자가 출력을 원하는 DO 채널 번호

t_32 Error_Num = 0;//함수 별 에러 코드 저장 변수

void DO_PutOne(void)
{
       TEcSlvTypeInfo pTypeInfoBuf // 구조체 관련 내용 9장 참고

       t_i16 DO_InitCh = 0; //시작 채널 번호 저장 변수
       t_i16 DO_NumCh =0; // DO채널 개수 저장 변수
       t_bool State = 0; // 출력 값

       DO_InitCh = pTypeInfoBuf . DO. StaGlobChannel; //구조체 할당 후 DI 시작 채널 얻어 옴
       DO_NumCh = pTypeInfoBuf . DO . NumChannels; //구조체 할당 후 DI 채널 개수 얻어옴

       if(!ecdoPutOne (Device_Info.NetIdx, DI_InitCh, DO_CHNUMBER, State, &Error_Num))
       {
               //DO 실패 시 예외 처리
       }
} // DO_PutOne 함수 종료

void DO_GetOne(void)
{
       TEcSlvTypeInfo pTypeInfoBuf // 구조체 관련 내용 9장 참고

       t_i16 DO_InitCh = 0; //시작 채널 번호 저장 변수
       t_i16 DO_NumCh =0; // DO채널 개수 저장 변수

       DO_InitCh = pTypeInfoBuf . DO. StaGlobChannel; //구조체 할당 후 DI 시작 채널 얻어 옴
       DO_NumCh = pTypeInfoBuf . DO . NumChannels; //구조체 할당 후 DI 채널 개수 얻어옴

       for(int i = DO_InitCh; i < DO_NumCh ; i++)
       {
               if(ecdoGetOne (Device_Info.NetIdx, i, &Error_Num))
               {
                       //DO 결과가 1일 경우 처리
               }
               else
               {
                       //DO 결과가 0일 경우 처리
               }
       }
 } // DO_GetOne 함수 종료

See also

ecdoPutOne