// RFDlg.cpp : implementation file // #include "stdafx.h" #include "RF.h" #include "RFDlg.h" #include "mwrf32.h" #pragma comment(lib,"mwrf32.lib") #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CAboutDlg dialog used for App About HANDLE icdev=0; int st; unsigned char sector; class CAboutDlg : public CDialog { public: CAboutDlg(); // Dialog Data //{{AFX_DATA(CAboutDlg) enum { IDD = IDD_ABOUTBOX }; //}}AFX_DATA // ClassWizard generated virtual function overrides //{{AFX_VIRTUAL(CAboutDlg) protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support //}}AFX_VIRTUAL // Implementation 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) // No message handlers //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CRFDlg dialog CRFDlg::CRFDlg(CWnd* pParent /*=NULL*/) : CDialog(CRFDlg::IDD, pParent) { //{{AFX_DATA_INIT(CRFDlg) m_data = _T(""); m_key = _T(""); m_cmd = _T(""); //}}AFX_DATA_INIT // Note that LoadIcon does not require a subsequent DestroyIcon in Win32 m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); } void CRFDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CRFDlg) DDX_Control(pDX, IDC_COMBO_SECTOR, m_sector); DDX_Control(pDX, IDC_COMBO_MODE, m_mode); DDX_Control(pDX, IDC_COMBO_PORT, m_port); DDX_Control(pDX, IDC_COMBO_BAUD, m_baud); DDX_Control(pDX, IDC_LIST1, m_list); DDX_Text(pDX, IDC_EDIT_M1DATA, m_data); DDV_MaxChars(pDX, m_data, 16); DDX_Text(pDX, IDC_EDIT_KEY, m_key); DDV_MaxChars(pDX, m_key, 12); DDX_Text(pDX, IDC_EDIT_CMD, m_cmd); DDV_MaxChars(pDX, m_cmd, 225); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CRFDlg, CDialog) //{{AFX_MSG_MAP(CRFDlg) ON_WM_SYSCOMMAND() ON_WM_PAINT() ON_WM_QUERYDRAGICON() ON_BN_CLICKED(IDC_BUTTON_CONNECT, OnButtonConnect) ON_BN_CLICKED(IDC_BUTTON_EXIT, OnButtonExit) ON_BN_CLICKED(IDC_BUTTON_CARD, OnButtonCard) ON_BN_CLICKED(IDC_BUTTON_CHECKKEY, OnButtonCheckkey) ON_BN_CLICKED(IDC_BUTTON_READ, OnButtonRead) ON_BN_CLICKED(IDC_BUTTON_WRITE, OnButtonWrite) ON_BN_CLICKED(IDC_BUTTON_READ2, OnButtonRead2) ON_BN_CLICKED(IDC_BUTTON_CPUCARD, OnButtonCpucard) ON_BN_CLICKED(IDC_BUTTON_RESET, OnButtonReset) ON_BN_CLICKED(IDC_BUTTON_CMD, OnButtonCmd) //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CRFDlg message handlers BOOL CRFDlg::OnInitDialog() { CDialog::OnInitDialog(); // Add "About..." menu item to system menu. // IDM_ABOUTBOX must be in the system command range. 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); } } // Set the icon for this dialog. The framework does this automatically // when the application's main window is not a dialog SetIcon(m_hIcon, TRUE); // Set big icon SetIcon(m_hIcon, FALSE); // Set small icon // TODO: Add extra initialization here m_port.SetCurSel(0); m_baud.SetCurSel(0); m_mode.SetCurSel(0); m_sector.SetCurSel(0); m_data="明华澳汉电子科技"; UpdateData(FALSE); return TRUE; // return TRUE unless you set the focus to a control } void CRFDlg::OnSysCommand(UINT nID, LPARAM lParam) { if ((nID & 0xFFF0) == IDM_ABOUTBOX) { CAboutDlg dlgAbout; dlgAbout.DoModal(); } else { CDialog::OnSysCommand(nID, lParam); } } // If you add a minimize button to your dialog, you will need the code below // to draw the icon. For MFC applications using the document/view model, // this is automatically done for you by the framework. void CRFDlg::OnPaint() { if (IsIconic()) { CPaintDC dc(this); // device context for painting SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0); // Center icon in client rectangle 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; // Draw the icon dc.DrawIcon(x, y, m_hIcon); } else { CDialog::OnPaint(); } } // The system calls this to obtain the cursor to display while the user drags // the minimized window. HCURSOR CRFDlg::OnQueryDragIcon() { return (HCURSOR) m_hIcon; } void CRFDlg::OnButtonConnect() { // TODO: Add your control notification handler code here CString str; int port,baud; unsigned char ver[20]; GetDlgItemText(IDC_COMBO_PORT,str); port=atoi(str.Mid(4,1)); baud=GetDlgItemInt(IDC_COMBO_BAUD); icdev=rf_init(port-1,baud); if (icdev<=0) m_list.AddString("Connect failed"); ZeroMemory(ver,20); st=rf_get_status(icdev,ver); if (st==0) m_list.AddString((CHAR*)ver); else m_list.AddString("Read the version number failed"); char* key="ffffffffffff"; for(sector=0;sector<16;sector++) { st=rf_load_key_hex(icdev,0,sector,key); if(st!=0) { CString str; str.Format("%d sector load key error!",sector); m_list.AddString(str); } } rf_beep(icdev,30); } void CRFDlg::OnButtonExit() { // TODO: Add your control notification handler code here rf_exit(icdev); m_list.AddString("Disconnect reader"); } void CRFDlg::OnButtonCard() { // TODO: Add your control notification handler code here unsigned long snr=0; unsigned char mode=GetDlgItemInt(IDC_COMBO_MODE); st=rf_card(icdev,mode,&snr); if (st!=0) { m_list.AddString("Could not find the card"); } else { char CardNumber[10]; ZeroMemory(CardNumber,10); hex_a((unsigned char*)&snr,CardNumber,sizeof(snr)); CString str="Card Number: "; str+=CardNumber; m_list.AddString(str); } } void CRFDlg::OnButtonCheckkey() { // TODO: Add your control notification handler code here sector=GetDlgItemInt(IDC_COMBO_SECTOR); st=rf_authentication(icdev,0,sector); if (st!=0) m_list.AddString("Check password failure"); else m_list.AddString("Check password ok!"); } void CRFDlg::OnButtonRead() { // TODO: Add your control notification handler code here unsigned char rdata[17]; ZeroMemory(rdata,17); st=rf_read(icdev,sector*4+1,rdata); if(st!=0) m_list.AddString("Read data error!"); else m_list.AddString((char*)rdata); } void CRFDlg::OnButtonWrite() { // TODO: Add your control notification handler code here UpdateData(); char* wdata=(LPSTR)(LPCTSTR)m_data; st=rf_write(icdev,sector*4+1,(unsigned char*)wdata); if (st!=0) m_list.AddString("Write data error!"); else m_list.AddString("Write data succeed!"); } void CRFDlg::OnButtonRead2() { // TODO: Add your control notification handler code here UpdateData(); for (int i=0;i'f' ) { MessageBox("Please enter 0 ~ 9, a ~ f between the data!"); return; } } if (m_key.GetLength()<12) { MessageBox("Please input 12 data!"); return; } char* key=(LPSTR)(LPCTSTR)m_key; unsigned char wkey[7]; ZeroMemory(wkey,7); a_hex(key,wkey,12); st=rf_changeb3(icdev,sector,wkey,0,0,0,1,0,wkey); if (st!=0) m_list.AddString("Change key error!"); else m_list.AddString("Change key ok!"); } void CRFDlg::OnButtonCpucard() { // TODO: Add your control notification handler code here unsigned long snr=0; st=rf_card(icdev,0,&snr); if (st!=0) { m_list.AddString("Could not find the card"); } else { char CardNumber[10]; ZeroMemory(CardNumber,10); hex_a((unsigned char*)&snr,CardNumber,sizeof(snr)); CString str="Card Number: "; str+=CardNumber; m_list.AddString(str); } } void CRFDlg::OnButtonReset() { // TODO: Add your control notification handler code here unsigned char resetData[50]; char resetDataHex[100]; ZeroMemory(resetData,50); ZeroMemory(resetDataHex,100); st=rf_pro_rst(icdev,resetData); if (st!=0) { m_list.AddString("CPU card reset failed!"); } else { hex_a(resetData,resetDataHex,resetData[0]); m_list.AddString(resetDataHex); } } void CRFDlg::OnButtonCmd() { // TODO: Add your control notification handler code here UpdateData(); int len=m_cmd.GetLength()/2; CString str; str.Format("%x",len); if (len<=15) { str="0000000"+str+m_cmd; } else { str="000000"+str+m_cmd; } char* cmd=(LPSTR)(LPCTSTR)str; unsigned char cmdhex[225]; ZeroMemory(cmdhex,225); a_hex(cmd,cmdhex,str.GetLength()); unsigned char returnData[225]; st=rf_pro_trn(icdev,cmdhex,returnData); if (st!=0) { m_list.AddString("CPU card operation failed!"); } else { char returnDatabuff[500]; ZeroMemory(returnDatabuff,0); hex_a(returnData,returnDatabuff,returnData[3]+4); m_list.AddString(returnDatabuff); } }