
#<함수형>**********************************************
void _Com_수신이벤트_(unsigned char   p포트번호,
                    unsigned short  p이벤트발생수신개수,
                    unsigned char   p사용유무);

#define  _Com_RxEvent_    _Com_수신이벤트_

#<인수>
'p포트번호'
통신포트 번호(0 부터 유효).
'p이벤트발생수신개수'
지정된 개수가 수신될때마다 이벤트가 발생됩니다(1부터 유효).
'p사용유무'
1 : 수신이벤트를 사용합니다.
0 : 수신이벤트를 중지합니다.

#<반환값>

#*****************************************************

#<적용구분>

"맷돌 전용"

#<선언문서>

"_Com_수신이벤트_.h"

#<설명>

지정 통신포트의 수신이벤트를 설정합니다.
이벤트는 사용자가 지정된 크기만큼 수신이 될때마다 자동으로 발생되며,
이 기능은 일정한 길이를 가진 묶음통신의 경우 매우 편리합니다.

수신이벤트를 사용하기 위해서는 "_Event_전체_()" 를 사용하여 전체 이벤트를 허용해주어야 하며
"_MsgQ_생성_()" 함수로 [알림문저장소] 를 생성해 주어야 합니다.

이 함수는 "_Com_열기_()" 함수로 해당 통신포트가 열려 있는 경우만 동작이 유효합니다.

이벤트알림문은 "_Event_전체.h" 문서에 정의돼 있습니다.

#<예제>

  //사용된 함수들은 [설계묶음] 안의 [함수묶음] 에 등록되 있어야 합니다.

  //[VAR]
  //{
      //최대 255 개의 이벤트알림문을 저장하도록 설정(1 개는 무효).
      unsigned char  알림문저장소[256];
      
      //최대 255 바이트를 수신할수 있도록 설정(1 개는 무효).
      unsigned char  수신저장소0[256];   //통신포트0.
      
      //최대 1023 바이트를 수신할수 있도록 설정(1 개는 무효).
      unsigned char  수신저장소1[1024];  //통신포트1.
      
  //} 

  // ...
 
  void event(void)
  {
    //[!]{-------------------------------------------------------------------
    //맷돌-C 에서 예약된 이벤트 처리 전용 함수.
    //이벤트가 발생하면 무조건 이 함수가 호출됩니다.
    //사용자는 _MsgQ_읽기_() 함수로 [알림문] 을 하나씩 읽어서 해당 이벤트를 처리하면 됩니다.
    //}----------------------------------------------------------------------
    
    //[VAR]
    //{ 
        //한개의 알림문은 1 바이트 크기입니다.
        unsigned char  알림문;
    
    //}
    
    //알림문 한개 꺼내기.
    알림문 = _MsgQ_읽기_();
    
    switch(알림문)
    {
      case d_EvtMsg_Com0Rx :
      {
        //통신포트0 의 수신이벤트를 처리.
        //직접 처리하거나, 해당 처리 함수를 호출할수 있음.
       
      } break;
    
      case d_EvtMsg_Com1Rx :
      {
        //통신포트1 의 수신이벤트를 처리.
        //직접 처리하거나, 해당 처리 함수를 호출할수 있음.
      
      } break;
    
      // 다른 이벤트도 같이 처리 하는 경우 계속 추가.
    
    }
  
  }
  
  // ...
  
  void main(void)
  {
    //[알림문저장소 설정]
    //{
        //[알림문저장소] 를 생성합니다(해당 배열의 크기와 동일하게 설정).
        _MsgQ_생성_(알림문저장소, 256);
      
    //}
  
    //각각의 통신포트는 개별적으로 동작됩니다.
  
    //[통신포트0 설정]
    //{
        //통신포트0 을 해당 설정으로 생성하고 열어줍니다.
        _Com_열기_(0,         //0번포트. 
                  1,         //송신사용.
                  1,         //수신사용.
                  수신저장소0,  //수신저장소 지정.
                  256,        //수신저장소 크기 지정(해당 배열의 크기와 동일하게 설정).
                  115200);    //115200BPS 사용.
      
        //1 바이트 마다 이벤트가 발생하게 만든다.
        _Com_수신이벤트_(0,       //0번포트.
                       1,       //1 바이트 수신시마다 이벤트 발생.
                       1);      //이벤트 사용하기.
      
    //}
    
    //[통신포트1 설정]
    //{
        //통신포트1 을 해당 설정으로 생성하고 열어줍니다.
        _Com_열기_(1,         //1번포트. 
                  1,         //송신사용.
                  1,         //수신사용.
                  수신저장소1,  //수신저장소 지정.
                  1024,       //수신저장소 크기 지정(해당 배열의 크기와 동일하게 설정).
                  921600);    //921600BPS 사용.
      
        //1 바이트 마다 이벤트가 발생하게 만든다.
        _Com_수신이벤트_(1,       //1번포트.
                       10,      //10 바이트 수신시마다 이벤트 발생.
                       1);      //이벤트 사용하기.
      
    //}
    
    //[전체 이벤트 허용]
    //{    
        //전체이벤트를 허용한다(허용(1), 해제(0)).
        _Event_전체_(1);
      
    //}    
    
    //이벤트를 대기합니다.
    while(1);  
    
    //계속 이벤트를 대기하거나, 다른 처리를 수행해도 됩니다.
    //이 경우도 이벤트가 발생하면 이벤트가 처리됩니다.
    
  }  
  
  