Почему интерфейс всегда застревает? MFC для связи с последовательным портом с MSComm

Я работаю над интерфейсом для связи с последовательным портом с помощью ActiveX MSComm: получать данные от датчика через последовательный порт и отображать в окне редактирования в VS 2005.

Но каждый раз, когда я запускаю программу, после получения определенных данных (около 1-2 секунд), программа застревает, и мне приходится использовать диспетчер задач, чтобы остановить ее. Кажется, что буфер заполнен, но я очистил буфер, используя put_InBufferCount (0) (если я использовал его правильно).

Другой возможной причиной является размер поля редактирования SetLimitText (10000000000000000); Но это тоже не работает.

Спасибо заранее!

Вот код в OnCommMscomm1 ()

void CwtsDlg::OnCommMscomm1()
{
// TODO: Add your message handler code here

VARIANT variant_inp;
COleSafeArray safearray_inp;
LONG len,k;
BYTE rxdata[2048]; //An 8-bit integer that is not signed.
CString strtemp;

if(m_MSComm.get_CommEvent()==2) //2 means there is data in the buffer
{
CString m_strRe;
variant_inp=m_MSComm.get_Input(); //Read buffer
m_MSComm.put_InBufferCount(0);//clear the buffer
safearray_inp=variant_inp; //ColeSafeArray Covert
len=safearray_inp.GetOneDimSize(); //get safe data length
for(k=0;k<len;k++)
safearray_inp.GetElement(&k,rxdata+k);//convert to BYTE array
for(k=0;k<len;k++) //convert array to Cstring
{
BYTE bt=*(char*)(rxdata+k); //character
strtemp.Format(L"%02X ",bt); //put characters into temperary varibles with space
m_strRe+=strtemp; //the data in this buffer
}
AppendLineToMultilineEditCtrl(m_editReceive,m_strRe);//append data to edit box
}
}

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]