1 Articles, Search Results for 'CString'

  1. 2007/05/25 String 을 분리하자. by Lucida_m

시리얼 포트를 통해 계측 장비가 계측한 결과를 보내준다.
이 결과가 입력 되는것은 언제인지 알 수가 없고.

한번에 데이터 셋이 다 들어온다는 보장도 없다.

확실한 것은 CR과 LF가 들어오면 하나의 데이터 셋이 끝났다는 것이다.

그래서 만든 것이 다음과 같은 코드

for(int i  = 0 ; i < iSize; i++)//들어온 갯수 만큼 데이터를 읽어 와 화면에 보여줌
 {
  (m_ComuModule->m_QueueRead).GetByte(&aByte);//큐에서 데이터 한개를 읽어옴

  str.Format("%c", aByte);
  tmpResult+=str;
  positionData+=str;

  //// 들어온 문자가 개행문자인지 확인한다.
  //// 데이터 한 셋이 끝나면, '13'(CR),'10'(LF) 가 들어 오기 때문에 이렇게 분리할 수 있다
  //// **** 초음파 위치 추적 장치에만 적용되는 방식이다. *****
  if(aByte == 10) {

   // 스트링 스캔 함수 사용 해서 값을 얻어낸다.
   sscanf(positionData ,"%d, %d, %d, %d, %d, %d",&m_IdistanceNum, &m_Idistance, &m_IxPosition, &m_IyPosition, &m_IzPosition, &m_Icycletime);

   // 데이터를 업데이트 한다.
   m_strUSPositionX.Format("%d",m_IxPosition);
   m_strUSPositionY.Format("%d",m_IyPosition);
   m_strUSPositionZ.Format("%d",m_IzPosition);

   setDataToDlg();

   // 스트링을 정리한다.
   positionData="";

   m_bSendUSDataFlag = true;
  }

 }


하지만, CString은 놀라운 기능을 가지고 있으니.
바로 token 기능이다.

eachData = receivedData.Tokenize("#",curPos);
 while (eachData != "") {
  m_dataArray.Add(eachData);
  eachData = receivedData.Tokenize("#",curPos);
 }

같은 기능을 하는 코드인데,
훨씬 간단 하게 끝났다.

CString 은 너무 MFC에 의존한다고 생각 했던 시절도 있었지만.
요즘 드는 생각은 ..
내가 MS 윈도우즈가 아닌 환경에서 개발할 일이 얼마나 있겠냐... 라는 생각이다.
CString의 기능을 구현하거나, 같은 기능을 가지는 클래스를 찾는 것보다.
내 일을 더 하는게 훨씬 나을 것이라는 생각이다.


이올린에 북마크하기
2007/05/25 18:07 2007/05/25 18:07
Posted by Lucida_m.
TAGS , ,