⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 autonetfdldlg.cpp

📁 AutoNetFidelio酒店管理系统增加智能门锁进行入住发卡及退房收卡。
💻 CPP
字号:
// AutoNetFdlDlg.cpp : implementation file

#include "stdafx.h"
#include "AutoNetFdl.h"
#include "AutoNetFdlDlg.h"
#include "FrmMain.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

class CAboutDlg : public CDialog
{
public:
	CAboutDlg();
	
	//{{AFX_DATA(CAboutDlg)
	enum { IDD = IDD_ABOUTBOX };
	//}}AFX_DATA
	
	//{{AFX_VIRTUAL(CAboutDlg)
protected:
	virtual void DoDataExchange(CDataExchange* pDX);   
	//}}AFX_VIRTUAL
	
protected:
	//{{AFX_MSG(CAboutDlg)
	//}}AFX_MSG
	DECLARE_MESSAGE_MAP()
};

CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
	//{{AFX_DATA_INIT(CAboutDlg)
	//}}AFX_DATA_INIT
}

void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CAboutDlg)
	//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
//{{AFX_MSG_MAP(CAboutDlg)

//}}AFX_MSG_MAP
END_MESSAGE_MAP()


CAutoNetFdlDlg::CAutoNetFdlDlg(CWnd* pParent)
: CDialog(CAutoNetFdlDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CAutoNetFdlDlg)
	m_ServPort = 0;
	//}}AFX_DATA_INIT
	m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}

void CAutoNetFdlDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CAutoNetFdlDlg)
	DDX_Control(pDX, IDC_ADDR_COMBO, m_wndIPAddress);
	DDX_Text(pDX, IDC_SERVPORT_EDIT, m_ServPort);
	//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CAutoNetFdlDlg, CDialog)
//{{AFX_MSG_MAP(CAutoNetFdlDlg)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_BN_CLICKED(IDC_READCARD, OnReadcard)
ON_BN_CLICKED(IDC_CANCEL, OnCancel)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()

BOOL CAutoNetFdlDlg::OnInitDialog()
{
	CDialog::OnInitDialog();
	
	ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
	ASSERT(IDM_ABOUTBOX < 0xF000);
	
	CMenu* pSysMenu = GetSystemMenu(FALSE);
	if (pSysMenu != NULL)
	{
		CString strAboutMenu;
		strAboutMenu.LoadString(IDS_ABOUTBOX);
		if (!strAboutMenu.IsEmpty())
		{
			pSysMenu->AppendMenu(MF_SEPARATOR);
			pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
		}
	}
	
	SetIcon(m_hIcon, TRUE);			
	SetIcon(m_hIcon, FALSE);	
	
	//初始化控件信息
	InitControl();
	
	return TRUE;  
}

static const char *ComboxPort[5] = { 
	"COM1",
	"COM2",
	"COM3",
	"COM4",
	 "USB"
};

//门锁类型信息
static const char *ComboxDoorType[5] = { 
	"TM",
	"IC",
	"RF56",
	"RF57",
	"RF50"
};

//门锁类型信息
static const char *ComboxDoorTypeEn[5] = { 
	"TM Card Door Lock",
	"IC Card Door Lock",
	"RF56 Card Door Lock",
	"RF57 Card Door Lock",
	"RF50 Card Door Lock"
};

void CAutoNetFdlDlg::InitControl()
{
	//初始化多国语言界面
	char     szCaption[200];
	CString  ExtractFilePath = g_DefaultLangDir+"FrmLogIn.INI";
	m_InfoFilePath = g_DefaultLangDir+"AutoFdl.ini";
	
	if (g_IsFindLangDir)
	{
		GetPrivateProfileString ("Frm","FrmLogIn", NULL, szCaption, 200, ExtractFilePath);
		this->SetWindowText(szCaption);
		
		GetPrivateProfileString ("MEM","MemoInfo", NULL, szCaption, 200, ExtractFilePath);
		((CStatic*)GetDlgItem(IDC_HELP_STATIC))->SetWindowText(szCaption);
		GetPrivateProfileString ("LAB","LabFdlProt", NULL, szCaption, 200, ExtractFilePath);
		((CStatic*)GetDlgItem(IDC_ADDR_STATIC))->SetWindowText(szCaption);
		GetPrivateProfileString ("LAB","LabReadProt", NULL, szCaption, 200, ExtractFilePath);
		((CStatic*)GetDlgItem(IDC_PORT_STATIC))->SetWindowText(szCaption);
		GetPrivateProfileString ("LAB","LabDoorType", NULL, szCaption, 200, ExtractFilePath);
		((CStatic*)GetDlgItem(IDC_DOORTYPE_STATIC))->SetWindowText(szCaption);
		GetPrivateProfileString ("LAB","LabFdlKc", NULL, szCaption, 200, ExtractFilePath);
		((CStatic*)GetDlgItem(IDC_FDLKC_STATIC))->SetWindowText(szCaption);
		GetPrivateProfileString ("LAB","LabServerPort", NULL, szCaption, 200, ExtractFilePath);
		((CStatic*)GetDlgItem(IDC_SERVPORT_STATIC))->SetWindowText(szCaption);
		
		GetPrivateProfileString ("BUT","ButOk", NULL, szCaption, 200, ExtractFilePath);
		((CButton*)GetDlgItem(IDC_READCARD))->SetWindowText(szCaption);
		GetPrivateProfileString ("BUT","ButCan", NULL, szCaption, 200, ExtractFilePath);
		((CButton*)GetDlgItem(IDC_CANCEL))->SetWindowText(szCaption);
	}

	

	//初始化与多国语言无关的部分界面
	for (int i = 0 ; i < 5 ; ++i ) 
	{   
		((CComboBox *) GetDlgItem (IDC_PORT_COMBO))->AddString((LPCSTR) ComboxPort[i]);
		((CComboBox *) GetDlgItem (IDC_DOORTYPE_COMBO))->AddString((LPCSTR) ComboxDoorType[i]);
	}
	for (i=1;i<=80;i++)
	{
		CString str;
		str.Format("%d",i);
		((CComboBox *) GetDlgItem (IDC_FDLKC_COMBO))->AddString(str);
	}
	
	char     appPath[MAX_PATH];
	//取得应用程序当前路径
	GetModuleFileName(NULL,appPath,MAX_PATH);
	ConfigureFile.Format("%s",appPath);
	int pos=ConfigureFile.ReverseFind('\\');
	ConfigureFile=ConfigureFile.Left(pos);
	ConfigureFile+="\\zhao.dll";

	//是否已初始化过
	IsInit=GetPrivateProfileInt("IsIni","AutoFdl",0,ConfigureFile);
	//读取门锁类型
	DoorType=GetPrivateProfileInt("IsIni","DoorType",1,ConfigureFile);
	//读取发卡机端口
	Port=GetPrivateProfileInt("IsIni","Port",5,ConfigureFile);
	//读取FKC参数值
	FKC=GetPrivateProfileInt("IsIni","FKC",1,ConfigureFile);
	//读取Fidelio服务器IP地址
	GetPrivateProfileString ("IsIni","FidelioIP", "168.192.0.1", szCaption, 200, ConfigureFile);
	m_FidelioIP.Format("%s",szCaption);
	IPStrToByteArry(m_FidelioIP);
	//读取Fidelio服务器端口
	m_ServPort=GetPrivateProfileInt("IsIni","FidelioPort",5000,ConfigureFile);
	
	CString KeyName="StrAcc";
	CString szDoorType;
	szDoorType.Format("%d",DoorType);
	KeyName=KeyName+szDoorType;
	//读取StrAcc初始化参数
	GetPrivateProfileString ("IsIni",KeyName, NULL, szCaption, 200, ConfigureFile);
	StrAcc.Format("%s",szCaption);
	//写入zhao.dll配置文件中
	WritePrivateProfileString("IsIni","IsLogin","0",ConfigureFile);
	
	((CIPAddressCtrl *)GetDlgItem(IDC_ADDR_COMBO))->SetAddress(m_nField[0],m_nField[1],m_nField[2],m_nField[3]);
	((CComboBox *)GetDlgItem(IDC_PORT_COMBO))->SetCurSel(Port-1);
	((CComboBox *)GetDlgItem(IDC_DOORTYPE_COMBO))->SetCurSel(DoorType-1);
	((CComboBox *)GetDlgItem(IDC_FDLKC_COMBO))->SetCurSel(FKC-1);
	
	((CComboBox *)GetDlgItem(IDC_DOORTYPE_COMBO))->EnableWindow(IsInit?0:1);
	UpdateData(FALSE);
}

void CAutoNetFdlDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
	if ((nID & 0xFFF0) == IDM_ABOUTBOX)
	{
		CAboutDlg dlgAbout;
		dlgAbout.DoModal();
	}
	else
	{
		CDialog::OnSysCommand(nID, lParam);
	}
}

void CAutoNetFdlDlg::OnPaint() 
{
	if (IsIconic())
	{
		CPaintDC dc(this); 
		
		SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);
		
		int cxIcon = GetSystemMetrics(SM_CXICON);
		int cyIcon = GetSystemMetrics(SM_CYICON);
		CRect rect;
		GetClientRect(&rect);
		int x = (rect.Width() - cxIcon + 1) / 2;
		int y = (rect.Height() - cyIcon + 1) / 2;
		
		dc.DrawIcon(x, y, m_hIcon);
	}
	else
	{
		CDialog::OnPaint();
	}
}

HCURSOR CAutoNetFdlDlg::OnQueryDragIcon()
{
	return (HCURSOR) m_hIcon;
}

void CAutoNetFdlDlg::OnReadcard() 
{
	UpdateData(TRUE);
	short   Buf8[8]={0,0,0,0,0,0,0,0};
	CString Str;
	
	//设卡类型
	typedef short  (__stdcall *pSelectDoorLockType)(short);
	pSelectDoorLockType pFuncSelectDoorLockType= (pSelectDoorLockType)GetProcAddress (hInstCard,"SelectDoorLockType");
	m_StValue =pFuncSelectDoorLockType(((CComboBox*)GetDlgItem (IDC_DOORTYPE_COMBO))->GetCurSel()+1);
	if(m_StValue!=1)
	{
		MessageBox(Translate(m_InfoFilePath,"设置门锁类型错误!"),
				   Translate(m_InfoFilePath,"提示信息!"),MB_ICONASTERISK);
		return ;
	}
	
	//设端口号
	typedef short  (__stdcall *pMakeCardOpenPort)(short);
	pMakeCardOpenPort pFuncMakeCardOpenPort= (pMakeCardOpenPort)GetProcAddress (hInstCard,"MakeCardOpenPort");
	Port=((CComboBox*)GetDlgItem (IDC_PORT_COMBO))->GetCurSel()+1;
	m_StValue = pFuncMakeCardOpenPort(Port); //设端口号
	if(m_StValue !=1)
	{
		MessageBox(Translate(m_InfoFilePath,"打开读卡器端口错误!"),
				   Translate(m_InfoFilePath,"提示信息!"),MB_ICONASTERISK);
		return ;
	}
	
	//读取授权参数
	typedef short  (__stdcall *pReadSystemPas_EX)(short *);
	pReadSystemPas_EX pFuncReadSystemPas_EX= (pReadSystemPas_EX)GetProcAddress (hInstCard,"ReadSystemPas_EX");
	m_StValue = pFuncReadSystemPas_EX(Buf8); 
	//关闭端口
	typedef short  (__stdcall *pMakeCardClosePort)(short);
	pMakeCardClosePort pFuncMakeCardClosePort= (pMakeCardClosePort)GetProcAddress (hInstCard,"MakeCardClosePort");
	if(m_StValue!=1)
	{
		MessageBox(Translate(m_InfoFilePath,"读取授权参数错误!"),
				   Translate(m_InfoFilePath,"提示信息!"),MB_ICONASTERISK);
		m_StValue = pFuncMakeCardClosePort(Port);
		return;
	}
	m_StValue = pFuncMakeCardClosePort(Port);
	
	//保存设置
	((CIPAddressCtrl *)GetDlgItem(IDC_ADDR_COMBO))->GetAddress(m_nField[0],m_nField[1],m_nField[2],m_nField[3]);
	Port=((CComboBox*)GetDlgItem (IDC_PORT_COMBO))->GetCurSel()+1;
	DoorType=((CComboBox*)GetDlgItem (IDC_DOORTYPE_COMBO))->GetCurSel()+1;
	FKC=((CComboBox*)GetDlgItem (IDC_FDLKC_COMBO))->GetCurSel()+1;
	Str.Format("%d",Port);
	WritePrivateProfileString("IsIni","Port",Str,ConfigureFile);
	Str.Format("%d",FKC);
	WritePrivateProfileString("IsIni","FKC",Str,ConfigureFile);
	Str.Format("%d",m_ServPort);
	WritePrivateProfileString("IsIni","FidelioPort",Str,ConfigureFile);
	m_FidelioIP=ByteArryToIPStr(m_nField);
	WritePrivateProfileString("IsIni","FidelioIP",m_FidelioIP,ConfigureFile); 
	Str="";
	
	CString hexbuf;
	for (int i=0;i<8;i++)
	{
		hexbuf.Format("%02X",Buf8[i]);
		Str+=hexbuf;
	}
	
	if(IsInit)
	{
		if(Str==StrAcc)
            WritePrivateProfileString("IsIni","IsLogin","1",ConfigureFile);
		else
            WritePrivateProfileString("IsIni","IsLogin","0",ConfigureFile);
	}
	else
	{
		WritePrivateProfileString("IsIni","AutoFdl","1",ConfigureFile);
		WritePrivateProfileString("IsIni","IsLogin","1",ConfigureFile);
		
		CString KeyName="StrAcc";
		CString szDoorType;
		szDoorType.Format("%d",DoorType);
		KeyName=KeyName+szDoorType;
		WritePrivateProfileString("IsIni",KeyName,Str,ConfigureFile);
		
		Str.Format("%d",DoorType);
		WritePrivateProfileString("IsIni","DoorType",Str,ConfigureFile);
		
		char    appPath[MAX_PATH];
		//取得应用程序当前路径
    	GetModuleFileName(NULL,appPath,MAX_PATH);
		CString szRegistPath;
	    szRegistPath.Format("%s",appPath);
		
		LPBYTE lpRegistPath = CString_To_LPBYTE(szRegistPath);
		HKEY   hKEY;//定义有关的hKEY,在查询结束时要关闭
		DWORD  dwDisposition;
		long lResult=RegCreateKeyEx(HKEY_LOCAL_MACHINE,
			"Software\\Microsoft\\Windows\\CurrentVersion\\Run",
			0,NULL,REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS,NULL,
			&hKEY,&dwDisposition);
		//如果创建新键成功,设置新键键值数据
		if (lResult==ERROR_SUCCESS)
		{
			::RegSetValueEx(hKEY, "HsyFdLServer", NULL, REG_SZ, lpRegistPath, 100);
			::RegCloseKey(hKEY);
		}
	}
	
	CDialog::OnOK();
	CFrmMain  FrmMainDlg;
	g_pFrmMain = &FrmMainDlg;
	FrmMainDlg.DoModal();
}

void CAutoNetFdlDlg::OnCancel() 
{
	CDialog::OnCancel();
}

LPBYTE CAutoNetFdlDlg::CString_To_LPBYTE(CString str)
{
	LPBYTE lpb=new BYTE[str.GetLength()+1];
	for(int i=0;i<str.GetLength();i++)
		lpb[i]=str[i];
	lpb[str.GetLength()]=0;
	
	return lpb;
}

BOOL CAutoNetFdlDlg::IPStrToByteArry(CString str)
{
	int i=0;
	int j,z=0;
	char  SubArry[3];
	int f=str.GetLength();
	while (i<str.GetLength())
	{
		j=0;
		memset(SubArry, 0,sizeof(SubArry));
		while ((i<f)&&(str[i]!='.'))
		{
			SubArry[j]=str[i];
			i++;
			j++;
		}
		m_nField[z++]=(BYTE)atoi(SubArry);
		i++;
	}
	
	return TRUE;
}

CString  CAutoNetFdlDlg::ByteArryToIPStr(BYTE ByteArry[4])
{
	CString IPstr="";
	
	TCHAR  buffer[10]="\0";
	//进行IP地址转化
	IPstr = _itoa(ByteArry[0],buffer,10);
	IPstr += _T('.');
	IPstr += _itoa(ByteArry[1],buffer,10);
	IPstr += _T('.');
	IPstr += _itoa(ByteArry[2],buffer,10);
	IPstr += _T('.');
	IPstr += _itoa(ByteArry[3],buffer,10);
	
	return IPstr;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -