智能小車的映像播放器

來源:互聯網
上載者:User

智能小車的映像播放器

作者:一點一滴的Beer http://beer.cnblogs.com/

 

映像播放器:

 

 

     智能小車利用車載網路攝影機採集跑道資料,然後儲存到小車中央控制主板的儲存空間中。等小車跑完一周后,再串口通訊傳到電腦上,並儲存為二進位檔案。

     然後這個軟體就是讀取這個二進位檔案,每次讀取40*80=3200個資料上來,然後用GDI繪製3200個灰階像素點,用定時器,每隔一段時間從檔案中讀取資料並重新繪製一次,然後就形成了這種動畫類似於播放器的功能了。

     這是自己大三的時候用VC6.0寫的一個軟體,現在想來,其實實用性不強,僅可以把現場的資料擷取上來,做一些上位機的模擬。不過,也算是自己大三的一點小心血吧。現在清理硬碟,把這個軟體的效果示範做成一個視頻,作個紀念,然後再刪除吧。

 

主要的技術問題就是:讀檔案,GDI繪圖,定時器。

1.讀檔案

void CPicMovieDlg::OnOpenfile() {// TODO: Add your control notification handler code here//開啟檔案//建立檔案名稱緩衝(fileBuffer)和檔案讀取緩衝(rBuffer)//此處如果不把緩衝置,在後面的設定中就會出錯,如果是動態申請的,請用memset或者for迴圈把數組清零char fileBuffer[5010] = {0}, rBuffer[row * column] = {0};//定義一個CFile類,用來處理檔案//CFile in;//放到此對話方塊的成員變數中。因為我要持續對此檔案進行操作。要有較長的組建循環。???權宜之計//定義一個CFileDialog類,用來顯示標準的開啟檔案對話方塊CFileDialog inDlg(FALSE, NULL, NULL, NULL, _T("自訂檔案類型(*.sav)|*.sav|所有檔案(*.*)|*.*||"), NULL);inDlg.m_ofn.lpstrTitle = _T("開啟自訂檔案");//設定一個檔案名稱緩衝,因為CFileDialog內建的檔案名稱緩衝長度只有,但是很多時候,檔案的路徑遠大於這個數,為了保險起見,所以要自己設定一個檔案名稱緩衝inDlg.m_ofn.lpstrFile = fileBuffer;//設定緩衝長度inDlg.m_ofn.nMaxFile = 5000;//顯示對話方塊,並處理按了確定按鈕的事件if(inDlg.DoModal() == IDOK) {//以唯讀方式開啟檔案if(in.Open(inDlg.GetPathName(), CFile::modeRead)) {OperateFile();bStopFlag = 1;//開啟檔案後,不自動播放。//關閉檔案//in.Close();//將此語句放在程式結束時。//MessageBox("開啟檔案成功", "搞定了", MB_ICONEXCLAMATION | MB_OK);} else {MessageBox("開啟檔案失敗,可能您沒有關閉當前檔案", "失敗了", MB_ICONSTOP | MB_OK);bOpenFlag = 0;}}}

 

 

 

2.GDI繪製像素點

 

void CPicMovieDlg:: DrawOrigin(BYTE dataTemp[][column],CDC* pDC){for (int i=0;i<row;i++)for (int j=0;j<column;j++){int recWidth=8;int recHeight=14;COLORREF clrRec=RGB(dataTemp[i][j],dataTemp[i][j],dataTemp[i][j]);pDC->Rectangle(recWidth*j/2,recHeight*i/2,recWidth*(j+1)/2,recHeight*(i+1)/2);//下面的填充函數將原來有的筆刷效果全部給覆蓋了。pDC->FillSolidRect(recWidth*j/2,recHeight*i/2,recWidth/2,recHeight/2,clrRec);}}

 

 

 

 

3.定時器

 

    在對話方塊初始化的時候,設定定時器,然後再到定時器的事件中執行繪圖函數。具體用法可以到網上查閱。

 

 

    結尾:本文不作為技術文,只是作為自己的一個回憶紀念文吧。所以,沒有詳細對解決問題的細節進行說明了。寫完本文後,就直接將原始碼全部刪除了。只留下了上面的那些思路了。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.