动态数据曲线绘制
關于數(shù)據(jù)曲線繪制的例程。
其實,當中的大多數(shù)人想從下位機的硬件上獲取數(shù)據(jù)然后通過串口或USB口送入PC后顯示出來。
本人曾經在本論壇上發(fā)表過一片類似的帖子——實時曲線繪制 https://bbs.bccn.net/thread-291884-1-1.html 。
今天再寫一篇這樣的帖子,希望對大家有所幫助。由于本人沒有下位機硬件,所以下面給大家展示的Demo例程中數(shù)據(jù)是由隨機數(shù)生成的。
先看效果圖:
這篇文章也被寫在了我在CSDN的博客上,鏈接地址為http://blog.csdn.net/onlymydreams_mfc/article/details/7378094
作為一個電子類專業(yè)的學生,下位機硬件是我們所擅長的,但是PC機從下位機獲取數(shù)據(jù)后顯示出來成為我們的一大難題,今天給大家展示了一個能實現(xiàn)上述功能的Demo例程。
?
首先,聲明兩點。第一,該例程中的曲線類是重用別人的;第二,由于沒有下位機,該例程的數(shù)據(jù)是通過隨機函數(shù)生成的,自己在使用時換成通過串口或USB口從下位機取得的數(shù)開始。下面簡要敘述一下開發(fā)過程。
?
Step1:在vc++6.0下建立一個基于對話框的程序,我的Demo取名為OscDemo,在對話框中加入一個圖片控件,根據(jù)你的需要調整該圖片大小,設置該圖片的ID號,該例程設置為IDC_OSC.另外添加一個控制曲線繪制的按鈕。
Step2:將COscopeCtrl.cpp和COscopeCtrl.h加入到你的工程中。這兩個文件在我給的我的Demo例程中有。
Step3:在COscDemoDlg.h中添加一個曲線控件變量
COScopeCtrl m_Osc;?
Step4:在COscDemoDlg.h中加入頭文件的包含
#include"OScopeCtrl.h"
Step5:在COscDemoDlg.cpp的初始化函數(shù)中初始化曲線控件的代碼
程序代碼: 01.BOOL COscDemoDlg::OnInitDialog()?
02.{?
03.??? CDialog::OnInitDialog();?
01.????//TODO: Add extra initialization here?
02.????//初始化曲線控件?
03.??? CRect rt;?
04.??? GetDlgItem(IDC_OSC)->GetWindowRect(rt);?
05.??? ScreenToClient(rt);?
06.??? m_Osc.Create(WS_VISIBLE | WS_CHILD,rt,this);?
07.????//配置曲線控件?
08.??? m_Osc.SetRange(-10.0,?10.0,?1) ;?
09.??? m_Osc.SetYUnits("電壓") ;?
10.??? m_Osc.SetXUnits("采樣點 (采樣頻率: 10sps)") ;?
11.??? m_Osc.SetBackgroundColor(RGB(0,?0,?64)) ;?
12.??? m_Osc.SetGridColor(RGB(192,?192,?255)) ;?
13.??? m_Osc.SetPlotColor(RGB(255,?255,?255)) ;?
14.?????
15.????returnTRUE;??//return TRUE??unless you set the focus to a control?
16.}?
Step6:通過定時器產生隨機數(shù)據(jù)供顯示。該例程通過單擊開始按鈕啟動定時器,產生隨機數(shù)并用于顯示。詳細代碼可以看Demo
其實,當中的大多數(shù)人想從下位機的硬件上獲取數(shù)據(jù)然后通過串口或USB口送入PC后顯示出來。
本人曾經在本論壇上發(fā)表過一片類似的帖子——實時曲線繪制 https://bbs.bccn.net/thread-291884-1-1.html 。
今天再寫一篇這樣的帖子,希望對大家有所幫助。由于本人沒有下位機硬件,所以下面給大家展示的Demo例程中數(shù)據(jù)是由隨機數(shù)生成的。
先看效果圖:
這篇文章也被寫在了我在CSDN的博客上,鏈接地址為http://blog.csdn.net/onlymydreams_mfc/article/details/7378094
作為一個電子類專業(yè)的學生,下位機硬件是我們所擅長的,但是PC機從下位機獲取數(shù)據(jù)后顯示出來成為我們的一大難題,今天給大家展示了一個能實現(xiàn)上述功能的Demo例程。
?
首先,聲明兩點。第一,該例程中的曲線類是重用別人的;第二,由于沒有下位機,該例程的數(shù)據(jù)是通過隨機函數(shù)生成的,自己在使用時換成通過串口或USB口從下位機取得的數(shù)開始。下面簡要敘述一下開發(fā)過程。
?
Step1:在vc++6.0下建立一個基于對話框的程序,我的Demo取名為OscDemo,在對話框中加入一個圖片控件,根據(jù)你的需要調整該圖片大小,設置該圖片的ID號,該例程設置為IDC_OSC.另外添加一個控制曲線繪制的按鈕。
Step2:將COscopeCtrl.cpp和COscopeCtrl.h加入到你的工程中。這兩個文件在我給的我的Demo例程中有。
Step3:在COscDemoDlg.h中添加一個曲線控件變量
COScopeCtrl m_Osc;?
Step4:在COscDemoDlg.h中加入頭文件的包含
#include"OScopeCtrl.h"
Step5:在COscDemoDlg.cpp的初始化函數(shù)中初始化曲線控件的代碼
程序代碼: 01.BOOL COscDemoDlg::OnInitDialog()?
02.{?
03.??? CDialog::OnInitDialog();?
01.????//TODO: Add extra initialization here?
02.????//初始化曲線控件?
03.??? CRect rt;?
04.??? GetDlgItem(IDC_OSC)->GetWindowRect(rt);?
05.??? ScreenToClient(rt);?
06.??? m_Osc.Create(WS_VISIBLE | WS_CHILD,rt,this);?
07.????//配置曲線控件?
08.??? m_Osc.SetRange(-10.0,?10.0,?1) ;?
09.??? m_Osc.SetYUnits("電壓") ;?
10.??? m_Osc.SetXUnits("采樣點 (采樣頻率: 10sps)") ;?
11.??? m_Osc.SetBackgroundColor(RGB(0,?0,?64)) ;?
12.??? m_Osc.SetGridColor(RGB(192,?192,?255)) ;?
13.??? m_Osc.SetPlotColor(RGB(255,?255,?255)) ;?
14.?????
15.????returnTRUE;??//return TRUE??unless you set the focus to a control?
16.}?
Step6:通過定時器產生隨機數(shù)據(jù)供顯示。該例程通過單擊開始按鈕啟動定時器,產生隨機數(shù)并用于顯示。詳細代碼可以看Demo
總結
- 上一篇: ffmpeg 过程分析
- 下一篇: 成为更优秀的开发人员:第二步-知道你的核