MFC工控项目实例之十五定时刷新PC6325A模拟量输入

承接专栏《MFC工控项目实例之十四模拟量信号名称从文件读写》

1、在BoardTest.h文件中添加代码

cpp 复制代码
class CBoardTest : public CDialog
{
public:
	short m_saveData[32];
	unsigned short m_cardAddr;
	CBoardTest(CWnd* pParent = NULL);   // standard constructor
	CButtonST   m_btnStart[16],m_btnStart_O[16];
	CWinThread* pThread; 
	bool isThreadBegin ;  //线程退出/执行控制
	void My_Func();
  static UINT My_TheradFunc(LPVOID lparam);
    

CString NO_Combox[16];
CString strTemp[16];//数据项名称
CString strRead[16];
int strReadId[16];
char strBuff[256];
CString	m_Path;
CString strFilePath;
...
protected:
unsigned short nAddr;

2、在BoardTest.cpp文件中添加代码

cpp 复制代码
UINT CBoardTest::My_TheradFunc(LPVOID lparam)//将窗口指针赋给无类型指针
 
{
 
     CBoardTest *dlg = (CBoardTest*)lparam;   //可以调用CBoardTest定义的类成员函数
     while (dlg->isThreadBegin)
	{
		dlg->My_Func(); //线程要执行的函数(调用CTheradtDlg定义的类成员函数)
	
	}
 return 0;
     
}

void CBoardTest::My_Func() //处理函数在这里写
{
	
int i;
	int b[16];
	CString	n[16];
    CString str1;
    int m1= rand() % 65537; 
    //int m1= 9; 
//	str1.Format("%d",m1);
//	SetDlgItemText(IDC_EDIT1,str1);
	for (i=0;i<16;i++)
	{
	//	b[i]=((m1>>i)& 1);
      b[i]=(( DI6408All(nAddr)>>i)& 1); 
    }
	for (i=0;i<16;i++)
	{
		n[i].Format("%d",b[i]);
    }
		for (i=0;i<16;i++)
		{
	if ( b[i] == 1)
	{
     m_btnStart[i].SetIcon(IDI_ICON_LedOn);	 
	}
	else  
	{
		m_btnStart[i].SetIcon(IDI_ICON_LedOff);
	}
		}
	
Sleep(500);
}




void CBoardTest::OnButton1() 
{
isThreadBegin  = false;            //停止线程执行
KillTimer(1); 
 Sleep(500);
EndDialog(IDD_DIALOG_BOA_TEST);	
}

void CBoardTest::OnTimer(UINT nIDEvent) 
{
// TODO: Add your message handler code here and/or call default
	if( nIDEvent == 1 )
	{
		//16通道,2 = -5000 -- 5000 mV采集
        AI6325AAllSingle(0X110, 2, m_saveData);
		CString tempStr;
		tempStr.Format("错误号: %d", GetDll_LastErrNO());
		SetWindowText(tempStr);        
		for(int i=0; i<16; i++)
		{
			tempStr.Format("%d mV", m_saveData[i]);
			SetDlgItemText(IDC_STATIC0+i, tempStr);
		}
		UpdateData(TRUE);
	}	

	CDialog::OnTimer(nIDEvent);
}

运行程序

相关推荐
_OP_CHEN4 小时前
从零开始的Qt开发指南:(五)Qt 常用控件之 QWidget(上):解锁 Qt 界面开发的核心基石
开发语言·c++·qt·前端开发·qwidget·gui开发·qt常用控件
sulikey6 小时前
深入讲解:什么是 RAII(资源获取即初始化)——原理、实现、面试常考点与实战示例
c++·面试·智能指针·raii·shared_ptr·auto_ptr·资源获取即初始化
艾莉丝努力练剑6 小时前
【Git:多人协作】Git多人协作实战:从同分支到多分支工作流
服务器·c++·人工智能·git·gitee·centos·项目管理
散峰而望13 小时前
C++数组(二)(算法竞赛)
开发语言·c++·算法·github
利刃大大14 小时前
【动态规划:背包问题】完全平方数
c++·算法·动态规划·背包问题·完全背包
笑非不退14 小时前
C# c++ 实现程序开机自启动
开发语言·c++·c#
AA陈超15 小时前
从0开始学习 **Lyra Starter Game** 项目
c++·笔记·学习·游戏·ue5·lyra
q***T58315 小时前
C++在游戏中的Unreal Engine
c++·游戏·虚幻
保持低旋律节奏15 小时前
C++——C++11特性
开发语言·c++·windows
小张成长计划..17 小时前
【C++】16:模板进阶
c++·算法