• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            笑看風(fēng)云淡

            寵辱不驚,看庭前花開花落;去留無意,望天空云卷云舒
            posts - 96, comments - 48, trackbacks - 0, articles - 0
              C++博客 :: 首頁 :: 新隨筆 ::  :: 聚合  :: 管理

            FPGA測試軟件

            Posted on 2008-04-07 17:29 天之驕子 閱讀(613) 評論(1)  編輯 收藏 引用

                    這兩周配合同事徐軍搞了個FPGA測試軟件。在測試過程中出現(xiàn)了幾個問題,現(xiàn)在終于解決了,現(xiàn)在總結(jié)如下:
                    1、char *pTemp=new char[800];
                          然后是一些關(guān)于pTemp的操作,例如
                  for(int i=0;i<800;i++)
                  {
                           ......;
                           pTemp++;
                  }
                 然后我用delete pTemp;程序運行就出現(xiàn)錯誤了,經(jīng)過調(diào)試發(fā)現(xiàn),應(yīng)該char *pBuf;    pBuf=pTemp;然后delete pBuf;就可以了。這樣既不會產(chǎn)生內(nèi)存泄漏,又不會刪除空的內(nèi)存。
                  2、軟件定時刷新顯示,我將從單片機要來的數(shù)據(jù)顯示在CRichEditCtrl控件上面,代碼如下:

            CHARFORMAT CTestView::GetCharFormat(DWORD dwMask)
            {
             CHARFORMAT cf;
             cf.cbSize = sizeof(CHARFORMAT);
             cf.dwMask = dwMask;
             m_richEdit.GetSelectionCharFormat(cf);
             return cf;
            }

            void CTestView::showData(CString szData,COLORREF crColorData)
            {
             int len;
             
             CHARFORMAT cf = GetCharFormat(1); //初始化
             if (cf.dwEffects & CFE_AUTOCOLOR)
              cf.dwEffects -= CFE_AUTOCOLOR;
             cf.dwMask= CFM_COLOR;
             
             //寫入數(shù)據(jù)太多時,richedit控件不能正確顯示顏色,所以分段顯示
             int count = szData.GetLength()/5000;
             long Base = 0;

             for(int i=0;i<count;i++)
             {
              cf.crTextColor = crColorData;
              m_richEdit.SetSelectionCharFormat(cf);
              len = m_richEdit.GetWindowTextLength();
              m_richEdit.SetSel(len,len);
              m_richEdit.ReplaceSel(szData.Mid(Base,szData.GetLength()/count));
              Base += szData.GetLength()/count;
             }
             cf.crTextColor = crColorData;
             m_richEdit.SetSelectionCharFormat(cf);
             len = m_richEdit.GetWindowTextLength();
             m_richEdit.SetSel(len,len);
             m_richEdit.ReplaceSel(szData.Mid(Base));
             
             //m_richEdit.LineScroll(m_richEdit.GetLineCount());
             m_richEdit.SetModify(FALSE);
            }

            void CTestView::showString(CString szTitle,COLORREF crColorTitle,
                     CString szData,COLORREF crColorData)
            {
             CString szText="";
             CHARFORMAT cf= GetCharFormat(1);
             if (cf.dwEffects & CFE_AUTOCOLOR)
              cf.dwEffects -= CFE_AUTOCOLOR;
             cf.dwMask  = CFM_COLOR;
             cf.crTextColor = crColorTitle;
             m_richEdit.SetSelectionCharFormat(cf);
             
             int len = m_richEdit.GetWindowTextLength();
             m_richEdit.SetSel(len,len);
             m_richEdit.ReplaceSel(szTitle);
             m_richEdit.LineScroll(1);
             m_richEdit.SetModify(FALSE);

             cf.crTextColor = crColorData;
             m_richEdit.SetSelectionCharFormat(cf);
             
             len = m_richEdit.GetWindowTextLength();
             m_richEdit.SetSel(len,len);
             m_richEdit.ReplaceSel(szData);
             m_richEdit.LineScroll(1);
             m_richEdit.SetModify(FALSE);

             cf.crTextColor =  RGB(0,0,255);
             m_richEdit.SetSelectionCharFormat(cf);
             
             len = m_richEdit.GetWindowTextLength();
             m_richEdit.SetSel(len,len);
             m_richEdit.ReplaceSel(szText);
             m_richEdit.LineScroll(1);
             m_richEdit.SetModify(FALSE);
            }
            在OnInitialUpdate()函數(shù)中,我初始化m_richEdit如下:
            //初始化m_richEdit
             m_richEdit.Create(WS_VSCROLL|WS_CHILD|WS_VISIBLE|ES_AUTOVSCROLL|ES_MULTILINE|ES_WANTRETURN,
              CRect(10,34,486,380), this, 1);
             m_richEdit.ModifyStyleEx(1, WS_EX_CLIENTEDGE);
             m_richEdit.SetReadOnly();

            在定時顯示里面,我調(diào)用showData()函數(shù):
            row=absoluteAddr;
              while(*pTemp!='\0')
              {
               strtemp=pTemp;
               for(i=0;i<48;i++)
                pTemp++;
               
               //顯示行號
               str.Format("%04x",row);
               row += 0x10;
               str += "   ";
               showData(str,RGB(128,128,0));
               
               //顯示前八個字節(jié)
               str=strtemp.Left(24);
               str += "  ";
               showData(str,RGB(0,0,255));
               
               //顯示后八個字節(jié)
               str=strtemp.Mid(24,24);
               showData(str,RGB(0,0,255));

               //換行
               str="\r\n";
               showData(str,RGB(0,0,255));
            }

            后來發(fā)現(xiàn)一個問題,當(dāng)顯示行號為000f時候,即最后一行的時候總是回比前面的多往前縮進一個空格,考慮到最后一行還多加了一個回車換行,我把代碼該成如下:
            for(row=absoluteAddr;row<absoluteAddr+0x0F*0x10;row += 0x10)
              {
               strtemp=pTemp;
               for(i=0;i<48;i++)
                pTemp++;
               
               //顯示行號
               str.Format("%04x",row);
               str += "   ";
               showData(str,RGB(128,128,0));
               
               //顯示前八個字節(jié)
               str=strtemp.Left(24);
               str += "   ";
               showData(str,RGB(0,0,255));
               
               //顯示后八個字節(jié)
               str=strtemp.Mid(24,24);
               showData(str,RGB(0,0,255));

               //換行
               str="\r\n";
               showData(str,RGB(0,0,255));
              }
              str.Format("%04x",row);
              str += "    ";
              showData(str,RGB(128,128,0));
              
              strtemp=pTemp;
              //顯示前八個字節(jié)
              str=strtemp.Left(24);
              str += "   ";
              showData(str,RGB(0,0,255));
              
              //顯示后八個字節(jié)
              str=strtemp.Mid(24,24);
              showData(str,RGB(0,0,255));

             

            Feedback

            # re: FPGA測試軟件  回復(fù)  更多評論   

            2008-04-12 18:15 by wxj120bw
            FPGA的編程語言是HDL,測試也是在ISE或QUARTUS軟件進行的,怎么會用C++語言寫測試軟件呢???

            只有注冊用戶登錄后才能發(fā)表評論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


            久久久久久久亚洲Av无码| 久久亚洲欧美国产精品 | 久久精品国产久精国产一老狼| 2021久久国自产拍精品| 99精品国产在热久久无毒不卡| 亚洲狠狠婷婷综合久久蜜芽| 婷婷五月深深久久精品| 亚洲AV乱码久久精品蜜桃| 久久人人爽人人爽人人片av高请| 午夜欧美精品久久久久久久| 天天爽天天狠久久久综合麻豆| 欧美精品久久久久久久自慰| 久久国产乱子伦精品免费强| 国内精品伊人久久久久影院对白| 久久天天躁狠狠躁夜夜2020| 久久精品视频一| AV无码久久久久不卡网站下载| 品成人欧美大片久久国产欧美| 久久亚洲国产精品123区| 91麻豆国产精品91久久久| 久久人人妻人人爽人人爽| 成人午夜精品久久久久久久小说 | 久久久久久久综合综合狠狠| 天天做夜夜做久久做狠狠| 中文精品久久久久人妻不卡| 国产一久久香蕉国产线看观看| 午夜精品久久久久9999高清| 久久久久无码精品国产不卡| 中文字幕成人精品久久不卡| 久久香综合精品久久伊人| 天天久久狠狠色综合| 伊人久久大香线蕉av不卡| 国产高清美女一级a毛片久久w | 99久久国产亚洲综合精品| 国产午夜久久影院| 亚洲国产欧洲综合997久久| 久久久久亚洲精品天堂久久久久久 | 大伊人青草狠狠久久| 亚洲国产视频久久| 国产2021久久精品| 99国产精品久久|