VC++16通道数据采集系统 - 图文(4)

2019-04-23 12:43

return FALSE;

// TODO: add reinitialization code here // (SDI documents will reuse this document) CMyDlg dlg; dlg.DoModal(); return TRUE; }

重载OnOK()与OnCancel()函数,添加代码如下:

void CMyDlg::OnOK() {

// TODO: Add extra validation here UpdateData(TRUE);

if((m_strUser==\ {

CDialog::OnOK(); } else {

m_strUser=\ m_strPassword=\

AfxMessageBox(\密码输入错误,请重新登录!\ UpdateData(FALSE); }

}

/*****************************************************/

void CMyDlg::OnCancel()

{

// TODO: Add extra cleanup here

CDialog::OnCancel(); exit(0); }

用户名或密码输入错误会出现如图3.3.2所示:

- 15 -

图3.3.2

3.3.2 数据通道选择模块

系统采集得到的数据需对应于每一个通道,每个不同的通道对应一个不同ID的单选按钮,通过判断某个单选按钮是否被选中来判断该通道是否被选中,为实现此功能,需对各按钮控件进行赋值声明如表1.15所示:

表1.15

按钮ID IDC_RADIO1 IDC_RADIO2 IDC_RADIO3 IDC_RADIO4 该模块程序功能流程图如图3.3.3所示:

执行下一步 选择某通道 进行通道选择 备注 通道一选择 通道二选择 通道三选择 通道四选择 图 3.3.3

- 16 -

为实现各通道是否被选中,其代码如下:

/***********通道一选择******************/ void CPage1::OnButton1()

{

// TODO: Add your control notification handler code here CButton* theradio = (CButton*) GetDlgItem(IDC_RADIO1); bool check1=theradio->GetCheck();

if(check1==TRUE) // 如果单选按钮1被选中 {

SetTimer(1,1000,NULL); // 启动时钟触发器,每秒钟触发一次 }

} //其中部分代码略有删除

/***********通道二选择******************/ void CPage1::OnButton2() {

// TODO: Add your control notification handler code here CButton* theradio = (CButton*) GetDlgItem(IDC_RADIO1); bool check1=theradio->GetCheck(); if(check1==TRUE) {

SetTimer(1,1000,NULL); } }

/***********通道三选择******************/ void CPage1::OnButton3() {

// TODO: Add your control notification handler code here CButton* theradio = (CButton*) GetDlgItem(IDC_RADIO1); bool check1=theradio->GetCheck(); if(check1==TRUE) {

SetTimer(1,1000,NULL); } }

/***********通道四选择******************/ void CPage1::OnButton4() {

// TODO: Add your control notification handler code here

- 17 -

CButton* theradio = (CButton*) GetDlgItem(IDC_RADIO1); bool check1=theradio->GetCheck(); if(check1==TRUE) {

SetTimer(1,1000,NULL); } }

3.3.3 实时动态曲线显示模块

实时动态曲线,顾名思义就是曲线在坐标轴上随时间的动态显示过程。通过实时动态曲线能够较直观的反应出采集量的大致变化趋势,实时动态曲线有很多不同的显示方式,本设计所采用的是逐点移动式,绘制结果如图3.3.4所示:

图3.3.4 其软件流程图如图3.3.4所示:

数据采集 实时显示 超出范围 刷屏 重新绘图

图 3.3.4 其绘制过程及代码如下:

- 18 -

1.选定所要绘制的矩形区域绘制时间-采集数据的平面直角坐标系,

其绘制代码如下:

void CPage1::OnPaint() {

CPaintDC dc(this); // device context for painting

// TODO: Add your message handler code here CPen *pPenBlack=new CPen();

pPenBlack->CreatePen(PS_SOLID,3,RGB(0,0,0)); // 用于定义坐标系的画笔类型、颜色及粗细 CPen *oldpen=NULL;

oldpen=dc.SelectObject(pPenBlack); dc.MoveTo(250,20);

dc.LineTo(250,110); //第一通道坐标系轮廓绘制部分 dc.LineTo(700,110);

for(int i=0;i<=30;i++) {

CString str;

CFont font,*pOldFont;

font.CreateFont(10, // nHeight 4, // nWidth

0, // nEscapement 0, // nOrientation 500, // nWeight FALSE, // bItalic FALSE, // bUnderline 0, // cStrikeOut

ANSI_CHARSET, // nCharSet

OUT_DEFAULT_PRECIS, // nOutPrecision CLIP_DEFAULT_PRECIS, // nClipPrecision DEFAULT_QUALITY, // nQuality

DEFAULT_PITCH | FF_SWISS, //

nPitchAndFamily _T( \

pOldFont=dc.SelectObject(&font); str.Format(\

dc.TextOut(250+15*i,115,str);// 第一通道绘制坐标系值部分 dc.SelectObject(pOldFont);

CPen *pPenBlack1=new CPen();

pPenBlack1->CreatePen(PS_SOLID ,1,RGB(88,88,88));

- 19 -


VC++16通道数据采集系统 - 图文(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:(CORELDRAW)课程标准

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: