現在、私のPCのcomポート経由で受信者から2つの無線間で送信された信号を読み込んでいます。私が抱えている問題は、それがリストボックスに正しく表示されているかどうかです。先頭から始まらないので、出力の上に空白行がたくさん表示され、下にスクロールして私のループが奇妙な動作をしています。2つの無線、シリアル通信の間で送信された信号の読み取り
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;*/
}
}
初めて「読み取り」ボタンが(それがtranmissionの長さであるとして、29バイト)、それは罰金を読み込み、私はprocessBufferに問題を抱えてい押される:ここで コードです前回のバッファからデータを再コピーしないでください(64バイト、何らかのオーバーフローを許します)。これにより、最初にループをラウンドした後に、再度読込みボタンを押す必要があります。これは私が意図したものではなく、問題、任意のアイデア?
これは長続きしていないので、私はそれを以下の答えに移しています。 – Nate