mysql mfc120_C++ MFC实现基于RFID读写器的上位机软件

C++ MFC实现基于RFID读写器的上位机软件

运行和测试环境

Windows 10

Visual Studio 2013

msado15.dll(工程自带)

ZM124U.dll(工程自带)

RFID读写器ZM124U

理论支持全部Win32运行环境

参考内容

代码实现

软件框架

在消息响应函数OnInitDialog()中完成整个框架的内容设置,包括插入Tab选项卡标签,关联对话框,调整大小和设置默认选项卡

BOOL CUpperMonitorDlg::OnInitDialog() {

CDialogEx::OnInitDialog();

// TODO: 在此添加额外的初始化代码

// 1. 插入Tab选项卡标签

TCITEM tcItemDebugger;

tcItemDebugger.mask = TCIF_TEXT;

tcItemDebugger.pszText = _T("调试助手");

m_MainMenu.InsertItem(0, &tcItemDebugger);

TCITEM tcItemAppdev;

tcItemAppdev.mask = TCIF_TEXT;

tcItemAppdev.pszText = _T("应用开发");

m_MainMenu.InsertItem(1, &tcItemAppdev);

// 2. 关联对话框,将TAB控件设为选项卡对应对话框的父窗口

m_MenuDebugger.Create(IDD_DEBUGGER, GetDlgItem(IDC_TAB));

m_MenuAppdev.Create(IDD_APPDEV, GetDlgItem(IDC_TAB));

// 3. 获取TAB控件客户区大小,用于调整选项卡对话框在父窗口中的位置

CRect rect;

m_MainMenu.GetClientRect(&rect);

rect.top += 22;

rect.right -= 3;

rect.bottom -= 2;

rect.left += 1;

// 4. 设置子对话框尺寸并移动到指定位置

m_MenuDebugger.MoveWindow(&rect);

m_MenuAppdev.MoveWindow(&rect);

// 5. 设置默认选项卡,对选项卡对话框进行隐藏和显示

m_MenuDebugger.ShowWindow(SW_SHOWNORMAL);

m_MenuAppdev.ShowWindow(SW_HIDE);

m_MainMenu.SetCurSel(0);

return TRUE; // 除非将焦点设置到控件,否则返回 TRUE

}

在消息响应函数OnSelchangeTab()中完成选项卡切换,其实内容都一直存在,只是把非该选项卡的内容隐藏了,把该选项卡的内容显示出来,仅此而已

void CUpperMonitorDlg::OnSelchangeTab(NMHDR *pNMHDR, LRESULT *pResult) {

*pResult = 0;

// 获取当前点击选项卡标签下标

int cursel = m_MainMenu.GetCurSel();

// 根据下标将相应的对话框显示,其余隐藏

switch(cursel) {

case 0:

m_MenuDebugger.ShowWindow(SW_SHOWNORMAL);

m_MenuAppdev.ShowWindow(SW_HIDE);

break;

case 1:

m_MenuDebugger.ShowWindow(SW_HIDE);

m_MenuAppdev.ShowWindow(SW_SHOWNORMAL);

break;

default:

break;

}

}

调用ZM12xUE API

首先需要在工程中include相应的文件,就是已经封装好的ZM124U.lib和ZM124U.h

#pragma comment(lib, "./libs/ZM124U.lib")

#include "./libs/ZM124U.h"

然后就可以当作已经实现的函数一样,直接调用即可。库函数的传入参数和返回值全部都可以在上面的参考文件中找到,返回值一般使用IFD_OK足够了。下面以打开设备为例,展示一下如何使用

void CDebugger::OnBnClickedBtnopendevice() {

if(IDD_PowerOn() == IFD_OK) {

// 更新状态栏,成功

isDeviceOpen = true;

((CEdit*)GetDlgItem(IDC_EDITSTATUS))->SetWindowTextW(_T("开启设备成功"));

}

else {

// 更新状态栏,失败

isDeviceOpen = false;

((CEdit*)GetDlgItem(IDC_EDITSTATUS))->SetWindowTextW(_T("开启设备失败"));

}

}

类型转换

unsigned char转CString

这部分和printf函数相似,就是使用CString.Format()函数把它转换为相应的内容,然后拼接到最终的CString对象中。大多数类型转CString都可以使用这种方法,说明CString封装得好。CString.Format()函数的第一个参数的写法类似于printf的输出时的写法。详看MSDN上面的说明。

CString uid, temp;

unsigned char buff[1024];

uid.Empty();

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

// 将获得的UID数据(1 byte)转为16进制

temp.Format(_T("%02x"), buff[i]);

uid += temp;

}

CString转int / long

前提CString的内容是数字。使用函数_ttoi(CString) | _ttol(CString)即可,如需转unsigned char类型,再使用强制转换类型即可

CString mecNum;

int mecNumInt = _ttoi(mecNum);

long mecNumLong = _ttol(mecLong);

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值