본문 바로가기
VisualStudio.C++.C#/코딩팁,함수활용,단편

while 대기방식에서 일정시간 응답 없는 경우 while 탈출 로직.

by i.got.it 2015. 9. 1.

코드의 실행 대기 용도로 while() 문을 사용하는 경우가 있다. 

 

예. UART RX 로 데이터 수신된것을 폴링방식으로 읽는 경우를 보면,

아래처럼 작성된다.

 

 

while (RX 버퍼에 데이터가 없다면) ;   // 대기. 버퍼에 데이터가 있다면 빠져나온다.

함수 RX 버퍼 읽기.                       // 값읽기.

 

 

위 코드의 문제점은 while 문이 무한대기에 빠져 있을 수 있다는 점이다. 송신측에서 데이터를 보낸다는 보장이 없는 경우도 있다.

 

위 코드에 추가로 간단한 타이머 기능을 구현하면 아래와 같다.

 

 

uint32_t  count=10000; // 시스템 상황에 따라 최대값을 조정한다.

 

/// 대기상태. count 값 감소하여 0이 되어도 while탈출하고 혹은 count값이 0이 되기전에 RX버퍼에 데이터 수신되어도 탈출. 

while(RX버퍼에 데이터가 없다면. &&  --count) ;

 

if(count > 0)

{

 버퍼의 데이터 읽기처리.

}

else //count 가 0인 경우.

{

데이터 수신 못했음.  오류 처리.

}

 

 

///430.

 

댓글



 

비트코인




암호화폐       외환/나스닥/골드       암호화폐/외환/나스닥/골드 암호화폐/외환/나스닥/골드   암호화폐/외환/나스닥/골드
     
현물 |선물 인버스 |선물 USDT       전략매니저(카피트레이딩)     롤오버 이자 없는 스왑프리계좌
( 스왑프리 암호화폐도 거래 가능 )    
MT4, MT5 , cTrader 모두 지원     FTMO 계좌 매매운용. MT4,MT5