안녕하세요 쓰레드 생성 관련 질문 드립니다.
현재 구현하고자 하는것은 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에서 넘어오는 데이터를 계속 받고 싶은데 어떻게 해야할까요? 자세히 답변해주시면 감사하겠습니다...