MFC工控项目实例二十四模拟量校正值输入

承接专栏《MFC工控项目实例二十三模拟量输入设置界面》
对模拟量输入的零点校正值及满量程对应的电压值进行输入。
1、在SenSet.h文件中添加代码

#include "BtnST.h"
#include "ShadeButtonST.h"/
// SenSet dialogclass SenSet : public CDialog
{
// Construction
public:SenSet(CWnd* pParent = NULL);   // standard constructorCFont m_font;CString	m_Path;CString strFilePath;int nSel;CString nSel_str;// Dialog Data//{{AFX_DATA(SenSet)enum { IDD = IDD_DIALOG_SEN_TEST };CListCtrl	m_IDC_LIST2;CListBox	m_IDC_LIST1;CShadeButtonST	m_bAdd_2;CShadeButtonST	m_bDel_2;CShadeButtonST	m_bParameter_2;CShadeButtonST	m_bReturn_2;//}}AFX_DATA// Overrides// ClassWizard generated virtual function overrides//{{AFX_VIRTUAL(SenSet)protected:virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support//}}AFX_VIRTUAL// Implementation
protected:// Generated message map functions//{{AFX_MSG(SenSet)virtual BOOL OnInitDialog();afx_msg void OnButton7();afx_msg void OnSelchangeList1();afx_msg void OnClickList2(NMHDR* pNMHDR, LRESULT* pResult);afx_msg void OnButton1();//}}AFX_MSGDECLARE_MESSAGE_MAP()
};

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

#include "stdafx.h"
#include "seal_pressure.h"
#include "SenSet.h"
#include "Data_2.h"
#include "PC60002K.H"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif/
// SenSet dialogSenSet::SenSet(CWnd* pParent /*=NULL*/): CDialog(SenSet::IDD, pParent)
{
m_font.CreateFont(-28,0,0,0,700,FALSE,FALSE,0,134,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,FF_SWISS,"楷体_GB2312");TCHAR exeFullPath[MAX_PATH];GetModuleFileName(NULL,exeFullPath,MAX_PATH);m_Path = exeFullPath;for(int i = m_Path.GetLength() - 1; i > 0 ; i --){if(m_Path.GetAt(i) == '\\')break;}SetCurrentDirectory(m_Path);m_Path = m_Path.Left(i);strFilePath= m_Path + "\\Test.ini";nAddr_AD_2=0x110;	COMB_Data_AD_Number_2=(sizeof(COMB_Data_AD_2) / sizeof(COMB_Data_AD_2[1]));
}void SenSet::DoDataExchange(CDataExchange* pDX)
{CDialog::DoDataExchange(pDX);//{{AFX_DATA_MAP(SenSet)DDX_Control(pDX, IDC_LIST2, m_IDC_LIST2);DDX_Control(pDX, IDC_LIST1, m_IDC_LIST1);DDX_Control(pDX, IDC_BUTTON1, m_bAdd_2);DDX_Control(pDX, IDC_BUTTON2, m_bDel_2);DDX_Control(pDX, IDC_BUTTON6, m_bParameter_2);DDX_Control(pDX, IDC_BUTTON7, m_bReturn_2);//}}AFX_DATA_MAP
}BEGIN_MESSAGE_MAP(SenSet, CDialog)//{{AFX_MSG_MAP(SenSet)ON_BN_CLICKED(IDC_BUTTON7, OnButton7)ON_LBN_SELCHANGE(IDC_LIST1, OnSelchangeList1)ON_NOTIFY(NM_CLICK, IDC_LIST2, OnClickList2)ON_BN_CLICKED(IDC_BUTTON1, OnButton1)//}}AFX_MSG_MAP
END_MESSAGE_MAP()/
// SenSet message handlersBOOL SenSet::OnInitDialog() 
{CDialog::OnInitDialog();m_bAdd_2.SetShade(CShadeButtonST::SHS_HARDBUMP);m_bDel_2.SetShade(CShadeButtonST::SHS_HARDBUMP);m_bParameter_2.SetShade(CShadeButtonST::SHS_HARDBUMP);m_bReturn_2.SetShade(CShadeButtonST::SHS_HARDBUMP);DWORD dwExStyles = m_IDC_LIST2.GetExtendedStyle();m_IDC_LIST2.SetExtendedStyle(dwExStyles |LVS_EX_GRIDLINES |LVS_EX_FULLROWSELECT | LVS_EX_FLATSB |LVS_EX_ONECLICKACTIVATE);LVCOLUMN cloumn;int i;cloumn.mask = LVCF_TEXT|LVCF_WIDTH;cloumn.pszText = "序号";cloumn.cx =50;i = m_IDC_LIST2.InsertColumn(0,&cloumn);cloumn.mask = LVCF_TEXT|LVCF_WIDTH;cloumn.pszText = "电压";cloumn.cx =120;i =m_IDC_LIST2.InsertColumn(1,&cloumn);cloumn.pszText = "对应值";cloumn.cx =120;i = m_IDC_LIST2.InsertColumn(2,&cloumn);for( i=0;i<COMB_Data_AD_Number_2;i++){GetPrivateProfileString("AD输入",COMB_Data_AD_2[i],NULL,b_str_AD_2[i].GetBuffer(20),20,strFilePath);if (b_str_AD_2[i]!="-1" ){//  AD_2[i]=_ttoi(b_str_AD_2[i]);m_IDC_LIST1.AddString(COMB_Data_AD_2[i]);}}if( OpenDevice6K() != TRUE )
AfxMessageBox("Open device failed!");return TRUE;  // return TRUE unless you set the focus to a control// EXCEPTION: OCX Property Pages should return FALSE
}void SenSet::OnButton7() 
{EndDialog(IDD_DIALOG_BOA_TEST);}void SenSet::OnSelchangeList1() 
{m_bAdd_2.EnableWindow(true);m_bParameter_2.EnableWindow(true);nSel =m_IDC_LIST1.GetCurSel();m_IDC_LIST1.GetText(nSel,nSel_str);Sleep(500);CString str;str.Format("%d",nSel);CString str6[16],str7[16],str8[16],str9[16];GetPrivateProfileString("A/D设置",nSel_str+"零点电压",NULL,str6[16].GetBuffer(20),20,strFilePath);GetPrivateProfileString("A/D设置",nSel_str+"零点数值",NULL,str7[16].GetBuffer(20),20,strFilePath);GetPrivateProfileString("A/D设置",nSel_str+"量程电压",NULL,str8[16].GetBuffer(20),20,strFilePath);GetPrivateProfileString("A/D设置",nSel_str+"量程数值",NULL,str9[16].GetBuffer(20),20,strFilePath);m_IDC_LIST2.DeleteAllItems();m_IDC_LIST2.InsertItem(0, _T("1"));   m_IDC_LIST2.SetItemText(0, 1,_T(str6[16]));  m_IDC_LIST2.SetItemText(0, 2,str7[16]);m_IDC_LIST2.InsertItem(1, _T("2"));   m_IDC_LIST2.SetItemText(1, 1,str8[16]);  m_IDC_LIST2.SetItemText(1, 2,str9[16]);//	SetDlgItemText(IDC_STATIC99,str);  
}void SenSet::OnClickList2(NMHDR* pNMHDR, LRESULT* pResult) 
{m_bDel_2.EnableWindow(true);	*pResult = 0;
}void SenSet::OnButton1() 
{CString str1,str2,str4,str5;CString str6[16],str7[16],str8[16],str9[16];GetDlgItemText(IDC_EDIT1,str1);GetDlgItemText(IDC_EDIT2,str2);GetDlgItemText(IDC_EDIT4,str4);GetDlgItemText(IDC_EDIT5,str5);WritePrivateProfileString("A/D设置",nSel_str+"零点电压",str1,strFilePath);WritePrivateProfileString("A/D设置",nSel_str+"零点数值",str2,strFilePath);WritePrivateProfileString("A/D设置",nSel_str+"量程电压",str4,strFilePath);WritePrivateProfileString("A/D设置",nSel_str+"量程数值",str5,strFilePath);Sleep(500);GetPrivateProfileString("A/D设置",nSel_str+"零点电压",NULL,str6[16].GetBuffer(20),20,strFilePath);GetPrivateProfileString("A/D设置",nSel_str+"零点数值",NULL,str7[16].GetBuffer(20),20,strFilePath);GetPrivateProfileString("A/D设置",nSel_str+"量程电压",NULL,str8[16].GetBuffer(20),20,strFilePath);GetPrivateProfileString("A/D设置",nSel_str+"量程数值",NULL,str9[16].GetBuffer(20),20,strFilePath);Sleep(500);m_IDC_LIST2.DeleteAllItems();m_IDC_LIST2.InsertItem(0, _T("1"));   m_IDC_LIST2.SetItemText(0, 1,_T(str6[16]));  m_IDC_LIST2.SetItemText(0, 2,str7[16]); 
//	m_IDC_LIST2.DeleteAllItems();m_IDC_LIST2.InsertItem(1, _T("2"));   m_IDC_LIST2.SetItemText(1, 1,str8[16]);  m_IDC_LIST2.SetItemText(1, 2,str9[16]);    }

运行程序
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/450744.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

RPC通讯基础原理

1.RPC&#xff08;Remote Procedure Call&#xff09;概述 RPC是一种通过网络从远程计算机上调用程序的技术&#xff0c;使得构建分布式计算更加容易&#xff0c;在提供强大的远程调用能力时不损失本地调用的语义简洁性&#xff0c;提供一种透明调用机制&#xff0c;让使用者不…

Leetcode 跳跃游戏 二

核心任务是找出从数组的起点跳到终点所需的最小跳跃次数。 这段代码解决的是“跳跃游戏 II”&#xff08;Leetcode第45题&#xff09;&#xff0c;其核心任务是找出从数组的起点跳到终点所需的最小跳跃次数。 class Solution {public int jump(int[] nums) {//首先处理特殊情…

【文化课学习笔记】【化学】选必三:同分异构体的书写

【化学】选必三&#xff1a;同分异构体的书写 如果你是从 B 站一化儿笔记区来的&#xff0c;请先阅读我在第一篇有机化学笔记中的「读前须知」(点开头的黑色小三角展开)&#xff1a;链接 链状烃的取代和插空法 取代法 一取代物 甲烷、乙烷、丙烷、丁烷的种类 甲烷&#xff1a;只…

【AAOS】Android Automotive 14模拟器源码下载及编译

源码下载 repo init -u https://android.googlesource.com/platform/manifest -b android-14.0.0_r20 repo sync -c --no-tags --no-clone-bundle 源码编译 source build/envsetup.sh lunch sdk_car_x86_64-trunk_staging-eng make -j8 运行效果 emualtor Home All apps …

计算机是如何输入存储输出汉字、图片、音频、视频的

计算机是如何输入存储输出汉字、图片、音频、视频的 为了便于理解&#xff0c;先了解一下计算机的组成。 冯诺依曼计算机的五大组成部分。分别是运算器、控制器、存储器、输入设备和输出设备。参见下图&#xff1a; 一、运算器 运算器又称“算术逻辑单元”&#xff0c;是计算…

Android Camera2在textureView中的预览和拍照

Camera2预览和拍照 1、Camera2相机模型2、Camera2的重要类3、Camera2调用流程4、Camera2调用实现 1)定义TextureView作为预览界面2)设置相机参数3)开启相机4)开启相机预览5)实现PreviewCallback6)拍照 1、Camera2相机模型 解释上诉示意图&#xff0c;假如想要同时拍摄两张不同…

图像及视频的基本操作

文章目录 一、认识计算机中的图像二、图像数据的读取三、数据读取-视频四、图像的其他操作 一、认识计算机中的图像 一张彩色图片是由很多个像素点组合而成的&#xff0c;而一个像素点是由R G B三个通道组成。RGB代表红色&#xff08;Red&#xff09;、绿色&#xff08;Green&a…

【远程监控新体验】OpenObserve结合内网穿透无公网IP远程访问全攻略

文章目录 前言1. 安装Docker2. Docker镜像源添加方法3. 创建并启动OpenObserve容器4. 本地访问测试5. 公网访问本地部署的OpenObserve5.1 内网穿透工具安装5.2 创建公网地址6. 配置固定公网地址前言 本文主要介绍如何在Linux系统使用Docker快速本地化部署OpenObserve云原生可观…

MacOS RocketMQ安装

MacOS RocketMQ安装 文章目录 MacOS RocketMQ安装一、下载二、安装修改JVM参数启动关闭测试关闭测试测试收发消息运行自带的生产者测试类运行自带的消费者测试类参考博客&#xff1a;https://blog.csdn.net/zhiyikeji/article/details/140911649 一、下载 打开官网&#xff0c;…

并发-线程

1, 线程 线程(thread)也是并发的一种形式&#xff0c;线程是比进程更小的活动单位&#xff0c;一个进程中可以有多个线程&#xff0c;线程是进程内部的一个执行分支。 一个进程刚开始时只有一个线程(称之为主线程)&#xff0c;后续的代码中可以创建新的线程&#xff0c;可以指…

git提交到github个人记录

windows下git下载 1.进入git官网https://git-scm.com/downloads/win 一直默认选项即可 2.在settings中SSH and GPG keys中Add SSH key 3.选择git cmd git使用 1.配置用户名&#xff0c;和邮箱 git config --global user.email "youexample.com" git config --g…

aws(学习笔记第六课) AWS的虚拟私有,共有子网以及ACL,定义公网碉堡主机子网以及varnish反向代理

aws(学习笔记第六课) AWS的虚拟私有&#xff0c;共有子网以及ACL&#xff0c;定义公网碉堡主机子网以及varnish反向代理 学习内容&#xff1a; AWS的虚拟私有&#xff0c;共有子网以及ACL定义公网碉堡主机子网&#xff0c;私有子网和共有子网以及varnish反向代理 1. AWS的虚拟…

深入理解WPF中的命令机制

Windows Presentation Foundation&#xff08;WPF&#xff09;是微软推出的一种用于构建桌面客户端应用程序的技术。它被认为是现代Windows应用程序的基础&#xff0c;具有强大的图形和媒体处理能力。在WPF中&#xff0c;“命令”是一个重要的概念&#xff0c;它为应用程序开发…

如何在算家云搭建Video-Infinity(视频生成)

一、模型介绍 Video-Infinity是一个先进的视频生成模型&#xff0c;使用多个 GPU 快速生成长视频&#xff0c;无需额外训练。它能够基于用户提供的文本或图片提示&#xff0c;创造出高质量、多样化的视频内容。 二、模型搭建流程 1.大模型 Video-Infinity 一键使用 基础环境…

Nest.js 实战 (十四):如何获取客户端真实 IP

问题解析 在 Nest.js 应用中&#xff0c;当你试图通过 request.ip 获取客户端的 IP 地址时&#xff0c;如果总是返回 ::1 或者 ::ffff:127.0.0.1&#xff0c;这通常意味着请求来自本地主机。 因为在前后端分离应用中&#xff0c;前端请求后端服务一般的做法都是通过代理&…

SQL进阶技巧:如何删除第N次连续出现NULL值所存在的行?

目录 0 场景描述 1 数据准备 2 问题分析 问题拓展:如何删除第2次、第3次、第N次连续出现NULL值所在的行? 3 小结 0 场景描述 有下面的场景: 我们希望删除某id中连续存在NULL值的所有行,但是保留第一次出现不为NULL值的以下所有存在NULL值的行。具体如下图所示: 如…

Leetcode 判断子序列

通过双指针来判断字符串s是否是字符串t的子序列。 算法思想&#xff1a; 双指针法&#xff1a; 我们使用两个指针i和j分别遍历字符串s和t。初始时&#xff0c;i指向s的第一个字符&#xff0c;j指向t的第一个字符。 匹配字符&#xff1a; 每次比较s[i]和t[j]&#xff1a; 如果…

大数据治理-数据质量管理

目录 一、定义数据质量 1.1 数据质量的定义 1.2 数据质量的重要性 二、常见的数据质量问题 2.1 数据不准确 2.2 数据不完整 2.3 数据不一致 2.4 数据不及时 2.5 数据无效 2.6 数据重复 三、数据清洗与转换 3.1 数据清洗 3.1.1 数据审计 3.1.2 数据验证 3.1.3 数…

uniapp小程序自定义聚合点

注&#xff1a; 1.默认的聚合点可以点击自动展示子级点位&#xff0c;但是自定义的聚合点在ios上无法触发markerClusterClick的监听&#xff0c;至今未解决&#xff0c;不知啥原因 2.ios和安卓展示的点位样式还有有差别 源码附上 <template><view class"marke…

Linux - 环境变量 | 命令行参数 | 进程基础

文章目录 一、了解冯诺依曼体系结构1、概念2、对数据层面3、实例二、操作系统1、概念2、设计OS的目的3、定位4、操作系统怎么管理&#xff1f; 三、进程1、概念2、怎么管理进程3、描述进程-PCB4、描述进程怎么运行&#xff08;粗略&#xff09;5、进程属性6、创建子进程7、创建…