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

2019-04-23 12:43

CPen *oldpen=NULL;

oldpen=dc.SelectObject(pPenBlack1);

dc.MoveTo(250+i*15,110); // 第一通道绘制纵轴系部分 dc.LineTo(250+i*15,20); }

for(int j=1;j<=9;j++) {

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(240,110-j*10,str);// 第一通道绘制部分 dc.TextOut(230,30,\数\ dc.TextOut(230,40,\值\

dc.TextOut(680,125,\时间(/s)\

dc.SelectObject(pOldFont);

dc.MoveTo(250,110-j*10); // 第一通道绘制横轴系部分 dc.LineTo(700,110-j*10);

CFont font,*pOldFont;

font.CreateFont(14, // nHeight 6, // nWidth

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

- 20 -

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); dc.SetTextColor(RGB(0,0,250));

dc.TextOut(420,6,\第一通道曲线图\ dc.SelectObject(pOldFont);

// Do not call CDialog::OnPaint() for painting messages

}

1.绘制曲线在坐标轴上的动态显示过程,当绘制曲线超出所绘制的框图时,采用刷新显示,即刷新原来的绘图曲线重新绘图,其代码如下:

void CPage1::OnTimer(UINT nIDEvent) { // TODO: Add your message handler code here and/or call default switch(nIDEvent) {

case 1: {

int offsetx=15; CClientDC dc(this); static int x=250; static int y=110;

CPen pen1(PS_SOLID,0,RGB(255,0,8)); CPen *oldpen1=NULL;

oldpen1=dc.SelectObject(&pen1); x=x+offsetx; if(x<=700) {

dc.MoveTo(x-offsetx,y); y=110-rand()?; dc.LineTo(x,y); } else {

CRect rect;

- 21 -

rect.SetRect(250,20,700,110); InvalidateRect(rect,TRUE); x=250;

y=110-rand()?; } } break;

CDialog::OnTimer(nIDEvent); }

3.3.4 采集数据存储模块

该模块用于对所采集的数据进行存储,存储过程为实时输出显示并存储于指定空间的.txt文件中,其软件流程图如图3.3.5所示:

数据显示 打开文件 数据保存 数据获取

图 3.3.5

实现代码如下:

void CPage1::OnPaint() {

CString strTmp;

strTmp.Format(\ str += strTmp ;

/*\ CStdioFile file( \

// 数据存储位置

file.WriteString(str); // 数据写入

- 22 -

file.Close(); // 关闭文件夹 }

3.3.5 均值、最值处理模块

该模块用于对采集数据均值、最值的实时显示,每个数据显示于相对应的文本控件中,各个控件所显示的值能随采集数值的变化而变化, 本例以第一通道各控件为例,各控件的赋值声明如表3.3.5所示: 表 3.3.5

控件ID IDC_EDIT10 IDC_EDIT11 IDC_EDIT12 IDC_EDIT13

各部分功能代码显示如下:

void CPage1::OnTimer(UINT nIDEvent)

{

// TODO: Add your message handler code here and/or call default

switch(nIDEvent) { case 1: {

int

offsetx=15; 数据类型 Int Float Int Int 成员名 m_caiji1 m_junzhi1 m_max1 m_min1 备注 采集数值 采集均值 采集最大值 采集最小值 CClientDC dc(this); static int x=250; static int y=110;

static int z=0;

static int j=0; static int max=0;

- 23 -

static int min=90;

CPen pen1(PS_SOLID,0,RGB(255,0,8)); CPen *oldpen1=NULL;

oldpen1=dc.SelectObject(&pen1); x=x+offsetx; if(x<=700) {

j++;

dc.MoveTo(x-offsetx,y); y=110-rand()?;

dc.LineTo(x,y);

m_caiji1=(110-y);

UpdateData(FALSE); // 采集数值显示部分 } else {

CRect rect;

rect.SetRect(250,20,700,110);

InvalidateRect(rect,TRUE); // 屏幕刷新区域

j++;

}

x=250;

y=110-rand()?; m_caiji1=(110-y);

UpdateData(FALSE); //采集数值显示部分

z+=m_caiji1;

if(max<=m_caiji1)

m_junzhi1=z/j;

UpdateData(FALSE); // 采集均值显示部分

- 24 -


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

下一篇:(CORELDRAW)课程标准

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

马上注册会员

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