В настоящее время я читаю с ресивера через com-порт на моем ПК, считывая сигналы, передаваемые между двумя другими радиостанциями.Проблема, с которой я сталкиваюсь, заключается в том, как он правильно отображается в списке, поскольку он не начинается сверху, он помещает много пустых строк над выводом, заставляя меня прокручивать страницу вниз, чтобы увидеть его, а также, что мой цикл ведет себя странно,Вот код:
void Cserial_NewDlg::OnBnClickedButton1()
{
CString tempStr;
bool bReading = true;
//memset(&port, 0, sizeof(port));
//memset(buffer,0,BUFFER_SIZE);
while(bReading) {
ReadFile(file,&buffer[0],BUFFER_SIZE,&bytesRead,NULL); //reading opened port
if(bytesRead == 0)
break;
tempStr = buffer;
int Pos = tempStr.Find("TX",0); //finding the start of each transmission
if(Pos > 0){/*memcpy*/}
else {
memmove(processBuffer,&buffer[Pos],PROCESS_SIZE); //copying buffer to a new buffer of correct size
m_ListBox.AddString(processBuffer); //displaying
}
/*if(bytesRead == PROCESS_SIZE)
bReading = false;*/
}
}
При первом нажатии кнопки 'read' она хорошо читается, но у меня проблема с processBuffer (29 байт, так как это длина передачи) не повторное копирование данных из предыдущего буфера (64 байта, с учетом некоторого переполнения) после первого обхода цикла, поэтому я вынужден снова нажать кнопку чтения, это не то, что я намеревался, и я не могуНайдите проблему, есть идеи?