SerialPort,该怎么处理

SerialPort
我模仿串口助手将里面的OnCommunication函数放到我的程序里面,我点击按钮发送一个16进制数之后,我的显示在一直接受数据
C/C++ code

DDX_Text(pDX,IDC_EDIT1,m_ReceiveData);
DDX_Control(pDX,IDC_EDIT1,m_ctrlReceiveData);

LONG CComTestDlg::OnCommunication(WPARAM ch, LPARAM port)
{
    if (port <= 0 || port > 4)
        return -1;
    //如果选择了"十六进制显示",则显示十六进制值
    CString str;
    str.Format("%02X ",ch);
    int nLen=m_ctrlReceiveData.GetWindowTextLength();
    m_ctrlReceiveData.SetSel(nLen, nLen);
    m_ctrlReceiveData.ReplaceSel(str);
    nLen+=str.GetLength();
    
    m_ReceiveData+=str;
    return 0;
}

void CComTestDlg::OnButton2() 
{
    // TODO: Add your control notification handler code here
    if(m_Port.m_hComm==NULL)
    {
        AfxMessageBox("串口没有打开,请打开串口");
        return;
    }
    else
    {
        char data[2];
        CString m_strSendData="02";
        int len=Str2Hex(m_strSendData,data);
        m_Port.WriteToPort(data,len);
    }
}



比如我发送02 之后在串口助手接收到的是00 0A,但是我的程序里面会接受到00 0A,之后会一直接受OA OA OA OA,请求援助,谢谢大家!

------解决方案--------------------
PurgeComm(hCom,PURGE_TXABORT|PURGE_RXABORT|PURGE_TXCLEAR|PURGE_RXCLEAR);
接收完数据要清空缓冲区
------解决方案--------------------
楼主给的代码看不出什么问题。