게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
MFC 쓰레드 생성 관련 질문드립니다...
게시물ID : programmer_8001짧은주소 복사하기
작성자 : Starter
추천 : 0
조회수 : 1048회
댓글수 : 1개
등록시간 : 2015/02/04 15:35:33
안녕하세요 쓰레드 생성 관련 질문 드립니다.
 
현재 구현하고자 하는것은 txt 파일의 한 줄을 모두 보낸 뒤 fpga 보드에서 a값을 받아 a가 들어오면 그 다음줄을 또 fpga보드로 넘기는 코딩을 하고있는데요.
 
---------------------
한줄 보내는 코드
---------------------
m_comm->Receive(data, sizeof(data));
 
이런 식으로 코딩을 하니 한번밖에 받지 못 하는 것 같아 쓰레드를 생성하는게 어떻냐는 답글을 받아 시도해 보고 있습니다.
근데 MFC가 처음이라 좀 어렵네요...
현재 위의 코드는 .cpp 에 구현돼 있는 코드입니다.
또한 .cpp 코드 안에
LRESULT  Cuart_ctrlDlg::OnReceive(WPARAM length, LPARAM lpara)

 
 if (m_comm)
 {
  m_comm->Receive(data, length);
  data[length] = '\0';  //전역변수로 지정 하여 받는 데이터를 사용
  for (int i = 0; i <(int)length; i++){
   str += data[i];
  }
  m_edit_rcv_view.ReplaceSel(str);
  m_edit_rcv_view.LineScroll(m_edit_rcv_view.GetLineCount());
  str = "";
  
 }
 
 //return 0;
 
}
코드가 있구요.
 
Mycomm.cpp 안에

int CMycomm::Receive(LPSTR inbuf, int len)
{
 
                  CSingleLock lockObj((CSyncObject*) m_pEvent,FALSE);
                  // argument value is not valid
                  if (len == 0)
                                   return -1;
                  else if  (len > MAXBUF)
                                   return -1;
     
                  if (m_nLength == 0)
                  {
                                   inbuf[0] = '\0';
                                   return 0;
       }
                  else if (m_nLength <= len)
                  {
                                   lockObj.Lock();
           memcpy(inbuf, m_sInBuf, m_nLength);
                                   memset(m_sInBuf,0,MAXBUF*2);
                                   int tmp = m_nLength;
                                   m_nLength = 0;
                                    lockObj.Unlock();
                                   return tmp;
                  }
                  else
                  {
                                   lockObj.Lock();
                                   memcpy(inbuf,m_sInBuf,len);
                                   memmove(m_sInBuf,m_sInBuf+len,MAXBUF*2-len);
                                   m_nLength -= len;
                                   lockObj.Unlock();
                                   return len;
                  }
     
}
코드가 존재합니다.
 
즉, fpga에서 넘어오는 데이터를 계속 받고 싶은데 어떻게 해야할까요? 자세히 답변해주시면 감사하겠습니다...
전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호