调试中由于数据量较多,需要实时记录串口的发送数据和接收数据,如何制作一个LOG文件自动保存调试的信息?????

解决方案 »

  1.   

    定义一个FILE*全局变量,一开始运行的时候打开一个文本文件,程序推出前关闭,读写数据的时候,用fprintf写log,定期flush
      

  2.   

    呵呵,建议去www.vckbase.com看看例子吧
      

  3.   

    参考:
    BOOL CLogFile::WriteLogFile(CString sFilePath)//sFilePath :  c:\work\file.log
    {
    BOOL bRtn = TRUE;
    CStdioFile fLogFile;
    CFileFind fFind;
    if ( !fFind.FindFile(sFilePath, 0) )
    {
    //create log file
    if ( !fLogFile.Open(sFilePath, CFile::modeCreate | CFile::modeWrite) )
    {
    //error
    CErrMsg errMsg;
    errMsg.GetWarningErr(LOG_FILE_WRITE_ERR, sFilePath);
    bRtn = FALSE;
    }
    else
    {
    CString sHeadStr; sHeadStr = _T("操作時間,操作タイプ,操作ファイル,前後版数,結果");
    fLogFile.WriteString(sHeadStr);
    fLogFile.WriteString(_T("\n")); CString sTmp; sTmp = this->m_ExeTime + _T(",");
    sTmp += this->m_ExeType + _T(",");
    sTmp += this->m_ExeFile + _T(",");
    sTmp += this->m_VerChg + _T(",");
    sTmp += this->m_Result + _T("\n"); fLogFile.WriteString(sTmp);
    fLogFile.Close();
    }
    }
    else
    {
    if ( !fLogFile.Open(sFilePath, CFile::modeWrite) )
    {
    //error
    CErrMsg errMsg;
    errMsg.GetWarningErr(LOG_FILE_WRITE_ERR, sFilePath);
    bRtn = FALSE;
    }
    else
    {
    CString sTmp;
    fLogFile.SeekToEnd(); sTmp = this->m_ExeTime + _T(",");
    sTmp += this->m_ExeType + _T(",");
    sTmp += this->m_ExeFile + _T(",");
    sTmp += this->m_VerChg + _T(",");
    sTmp += this->m_Result + _T("\n"); fLogFile.WriteString(sTmp);
    fLogFile.Close();
    }
    }
    return bRtn;