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

📄 mainfrm.cpp

📁 UHF RFID Reader Program
💻 CPP
📖 第 1 页 / 共 4 页
字号:
				(HFONT)::GetStockObject(DEFAULT_GUI_FONT)
				)
				);

			m_pWndEdit->SetWindowText(_T("0"));

			BOOL bRet = m_wndStatusBar.AddPane(nID,nPosition);
			if(!bRet){
				AfxMessageBox(_T("Pane index out of range\nor pane with same ID already exists in the status bar"), MB_ICONERROR);
				return;
			}

			int nIndex = m_wndStatusBar.CommandToIndex(nID);
			if (nIndex == -1)
				return;

			m_wndStatusBar.SetPaneWidth(nIndex, width);
			m_wndStatusBar.AddPaneControl(m_pWndEdit, nID, true);
		}
		break;

	case 2: // progress ctrl
		{
			m_pWndProgressCtrl = new CStatusBarProgressCtrl;
			if (!m_pWndProgressCtrl->Create(
				WS_CHILD|WS_VISIBLE|WS_TABSTOP, //|PBS_SMOOTH
				CRect(0,0,0,0), 
				&m_wndStatusBar, 
				0))
			{
				TRACE(_T("Failed to create progress control.\n"));
				return;
			}

			m_pWndProgressCtrl->ModifyStyleEx(WS_EX_STATICEDGE,0,SWP_FRAMECHANGED);

			m_pWndProgressCtrl->SetRange(0,300);
			m_pWndProgressCtrl->SetPos(0);
			m_pWndProgressCtrl->SetStep(1);

			BOOL bRet = m_wndStatusBar.AddPane(nID, nPosition);
			if(!bRet){
				AfxMessageBox(_T("Pane index out of range\nor pane with same ID already exists in the status bar"), MB_ICONERROR);
				return;
			}

			int nIndex = m_wndStatusBar.CommandToIndex(nID);
			if (nIndex == -1)
				return;

			m_wndStatusBar.SetPaneWidth(nIndex, width);
			m_wndStatusBar.AddPaneControl(m_pWndProgressCtrl, nID, true);

			m_pWndProgressCtrl->SetTimer(0,1,NULL);
		}
		break;

	case 3: // slider ctrl
		{
			m_pWndSliderCtrl = new CStatusBarSliderCtrl;
			if (!m_pWndSliderCtrl->Create(
				WS_CHILD|WS_VISIBLE|WS_TABSTOP|TBS_HORZ, 
				CRect(0,0,0,0), 
				&m_wndStatusBar, 
				0))
			{
				TRACE(_T("Failed to create slider control.\n"));
				return;
			}

			BOOL bRet = m_wndStatusBar.AddPane(nID, nPosition);
			if(!bRet){
				AfxMessageBox(_T("Pane index out of range\nor pane with same ID already exists in the status bar"), MB_ICONERROR);
				return;
			}

			int nIndex = m_wndStatusBar.CommandToIndex(nID);
			if (nIndex == -1)
				return;

			m_wndStatusBar.SetPaneWidth(nIndex, width);
			m_wndStatusBar.AddPaneControl(m_pWndSliderCtrl, nID, true);
		}
		break;

	case 4: // button
		{
			m_pWndButton = new CStatusBarButton;
			if (!m_pWndButton->Create(
				_T(""),
				WS_CHILD|WS_VISIBLE|WS_TABSTOP,
				CRect(0,0,0,0), 
				&m_wndStatusBar, 
				IDC_CLEAR_BUTTON))
			{
				TRACE(_T("Failed to create button control.\n"));
				return;
			}
			m_pWndButton->SetFont(
				CFont::FromHandle(
				(HFONT)::GetStockObject(DEFAULT_GUI_FONT)
				)
				);

			BOOL bRet = m_wndStatusBar.AddPane(nID, nPosition);
			if(!bRet){
				AfxMessageBox(_T("Pane index out of range\nor pane with same ID already exists in the status bar"), MB_ICONERROR);
				return;
			}

			int nIndex = m_wndStatusBar.CommandToIndex(nID);
			if (nIndex == -1)
				return;

			m_wndStatusBar.SetPaneWidth(nIndex, width);
			m_wndStatusBar.AddPaneControl(m_pWndButton, nID, true);
		}
		break;

	case 5: // label
		{
			m_pWndLabel = new CStatusBarLabel;
			if (!m_pWndLabel->Create(
				_T("Company Logo"),
				WS_CHILD|WS_VISIBLE|WS_TABSTOP|SS_CENTER,
				CRect(0,0,0,0), 
				&m_wndStatusBar, 
				0))
			{
				TRACE(_T("Failed to create label control.\n"));
				return;
			}

			m_pWndLabel->SetFont(
				CFont::FromHandle(
				(HFONT)::GetStockObject(DEFAULT_GUI_FONT)
				)
				);

			BOOL bRet = m_wndStatusBar.AddPane(nID, nPosition);
			if(!bRet){
				AfxMessageBox(_T("Pane index out of range\nor pane with same ID already exists in the status bar"), MB_ICONERROR);
				return;
			}

			int nIndex = m_wndStatusBar.CommandToIndex(nID);
			if (nIndex == -1)
				return;

			m_wndStatusBar.SetPaneWidth(nIndex, width);
			m_wndStatusBar.AddPaneControl(m_pWndLabel, nID, true);
		}
		break;
	}
}

void CMainFrame::UpdateTagCount(ULONG count)
{
	CString temp;
	temp.Format(_T("%u"), count);

	m_pWndEdit->SetWindowText(temp);

#ifdef LARGE_COUNT
//	m_wndCountDlg->SetCount(temp);
#endif


}

void CMainFrame::UpdateTagReadCount(ULONG count)
{
	CString temp;
	temp.Format(_T("%u"), count);

	m_wndTotalReadCount.SetWindowText(temp);
}

void CMainFrame::AddTagReadCount(ULONG count)
{
	CString temp;
	wchar_t* endptr;

	m_wndTotalReadCount.GetWindowText(temp);

	ULONG ulNum   = wcstoul( (LPWSTR)(LPCWSTR)temp ,&endptr ,10 );

	UpdateTagReadCount(ulNum + count);

#ifdef LARGE_COUNT
 	m_wndCountDlg->SetCount(temp);
 #endif
// 
//	temp.Format(_T("%u"), ulVer + count);

//	m_wndTotalReadCount.SetWindowText(temp);
}


//void CMainFrame::DoDataExchange(CDataExchange* pDX)
//{
//	// TODO: Add your specialized code here and/or call the base class
//	
//	CFrameWnd::DoDataExchange(pDX);
//}

void CMainFrame::OnRfidReaderSet()
{
	// Declear Image list variance
	CImageList smallImageList;

	// Create a image list and assign it to the list control
	VERIFY(smallImageList.Create(IDB_BITMAP_TAB_16, 16, 2, RGB(255, 255, 255)));

//	int   nCount = smallImageList.GetImageCount();

	// Create PropertySheet
	CReaderSetSheet sheet(_T("Reader Setting"));

	// Set Image list at each Property Page
	CGeneralSetPage				page1(TEXT("General"), smallImageList.ExtractIcon(0));
	CAntennaSetPage				page2(TEXT("Antenna"), smallImageList.ExtractIcon(1));
	CSelectCriteriaSetPage		page3(TEXT("Select Criteria"), smallImageList.ExtractIcon(1));
	CAlgorithmSetPage			page4(TEXT("Algorithm"), smallImageList.ExtractIcon(1));
	CPostSingulationSetPage		page5(TEXT("Post Singulation"), smallImageList.ExtractIcon(1));
	CFrequencyBandPage			page6(TEXT("Frequency Band"), smallImageList.ExtractIcon(1));
	CEngineeringSetPage			page7(TEXT("Engineering"), smallImageList.ExtractIcon(2));


	// Image List Detach
	smallImageList.Detach();

	// Add Page to PropertySheet
	sheet.AddPage(&page1);
	sheet.AddPage(&page2);
//	sheet.AddPage(&page3);
	sheet.AddPage(&page4);
//	sheet.AddPage(&page5);
	sheet.AddPage(&page6);
	sheet.AddPage(&page7);

	sheet.DoModal();

}

void CMainFrame::OnUpdateRfidReaderSet(CCmdUI *pCmdUI)
{
	if(m_pRFIDRadioManager->GetControlState(RFID_POWER) && m_pRFIDRadioManager->IsConnect() && !m_pRFIDRadioManager->IsInventory())
		pCmdUI->Enable(1);
	else
		pCmdUI->Enable(0);
}

void CMainFrame::OnRfidPowerOnOff()
{
#ifdef _WIN32_WCE

	m_pRFIDRadioManager->StopInventory();
	m_pRFIDRadioManager->Disconnect();


	CString strTemp;
	// Power 
	if(GetControlState(RFID_POWER) != TRUE)
	{
		::SetControlState(RFID_POWER, TRUE);
		::SetControlState(RFID_GREEN_LED, TRUE);

		Sleep(1200);

		strTemp.LoadString(IDS_STRING_RFID_POWER_ON);
		SetStatusBar(0, strTemp);
	}
	else
	{
		::SetControlState(RFID_POWER, FALSE);
		::SetControlState(RFID_GREEN_LED, FALSE);

		strTemp.LoadString(IDS_STRING_RFID_POWER_OFF);
		SetStatusBar(0, strTemp);
	}
#endif
}

void CMainFrame::OnUpdateRfidPowerOnOff(CCmdUI *pCmdUI)
{
	CString str;

	if(::GetControlState(RFID_POWER))
	{
		str.LoadString(IDS_STRING_POWER_OFF);

		pCmdUI->SetCheck(1);
		pCmdUI->SetText(str);
//		pCmdUI->Enable(0);
	}
	else
	{
		str.LoadString(IDS_STRING_POWER_ON);

		pCmdUI->SetCheck(0);
		pCmdUI->SetText(str);
//		pCmdUI->Enable(1);		
	}
}

void CMainFrame::OnRfidReset()
{
	RFID_STATUS status;

	theApp.DoWaitCursor(1);

#ifdef _WIN32_WCE
	if(m_pRFIDRadioManager->GetControlState(RFID_POWER))
	{
		if(GetRFIDRadioManager()->IsConnect())
		{
			if(RFID_STATUS_OK !=
				(status = m_pRFIDRadioManager->Reset()))
			{
				AfxMessageBox(_T("Fail to MacReset"));
			}

			// Sleep Reboot Process
			Sleep(2000);

			GetRFIDRadioManager()->Disconnect();

			if(m_pRFIDRadioManager->Connect() != RFID_STATUS_OK)
			{
				SetStatusBar(0, _T("RFID Handle Create Fail"));
			}

			SetStatusBar(0, _T("Reset Success"));
		}
		else
		{
			GetRFIDRadioManager()->Disconnect();

			if(m_pRFIDRadioManager->Connect() != RFID_STATUS_OK)
			{
				SetStatusBar(0, _T("RFID Handle Create Fail"));
			}

			SetStatusBar(0, _T("Connection"));
		}
	}
	else
	{
		AfxMessageBox(_T("Error : Power Input Fail"));
	}
#else
	if(GetRFIDRadioManager()->IsConnect())
	{
		if(RFID_STATUS_OK !=
			(status = m_pRFIDRadioManager->Reset()))
		{
			AfxMessageBox(_T("Fail to MacReset"));
		}

		Sleep(2000);

		GetRFIDRadioManager()->Disconnect();

		if(m_pRFIDRadioManager->Connect() != RFID_STATUS_OK)
		{
			SetStatusBar(0, _T("RFID Handle Create Fail"));
		}

		SetStatusBar(0, _T("Reset Success"));

	}
	else
	{
		GetRFIDRadioManager()->Disconnect();

		if(m_pRFIDRadioManager->Connect() != RFID_STATUS_OK)
		{
			SetStatusBar(0, _T("RFID Handle Create Fail"));
		}

		SetStatusBar(0, _T("Connection"));
	}
#endif

	theApp.DoWaitCursor(-1);
}

void CMainFrame::OnUpdateRfidReset(CCmdUI *pCmdUI)
{
#ifdef WINCE
	if(m_pRFIDRadioManager->GetControlState(RFID_POWER) && GetRFIDRadioManager()->IsConnect())
		pCmdUI->Enable(1);
	else
		pCmdUI->Enable(0);
#else 
	if(GetRFIDRadioManager()->IsConnect())
		pCmdUI->Enable(1);
	else
		pCmdUI->Enable(0);
#endif

}

CRFIDRadioManager* CMainFrame::GetRFIDRadioManager()
{
	return m_pRFIDRadioManager;
}

// Tag Read
void CMainFrame::OnTagRead()
{
	CRFRMDoc* pDoc = (CRFRMDoc*)GetActiveDocument();	
	CReadTagAccessDlg dlg(this);

	if(m_pRFIDRadioManager->IsInventory())
		OnRfidStopInventory();


	if(pDoc->GetSelectedTag() != NULL)
		dlg.SetSelectedTag(pDoc->GetSelectedTag());

	if(dlg.DoModal() == IDOK)
	{
		// Show Result View 
		if (m_wndSplitter.IsPaneHidden(Bottom))
		{
			m_wndSplitter.ShowPane(Bottom, TRUE);
		}

		if(/*dlg.m_nComboOffset != 0 && dlg.m_nComboOffset != 1 && */dlg.m_nComboCount != 0)
		{
			if(dlg.m_strEPC == TEXT(""))
				m_pRFIDRadioManager->TagRead(0, NULL, dlg.m_nComboMBank, dlg.m_nComboOffset, dlg.m_nComboCount);
			else
				m_pRFIDRadioManager->TagRead(0, (INT32U*)pDoc->GetSelectedTag()->GetTagEPC(), dlg.m_nComboMBank, dlg.m_nComboOffset, dlg.m_nComboCount);
		}
		else
		{
			::MessageBox(AfxGetMainWnd()->m_hWnd, _T("Input parameter does not right!"), _T("Error"), MB_ICONERROR);
 		}
	}
}

// Tag Write
void CMainFrame::OnTagWrite()
{
	CRFRMDoc* pDoc = (CRFRMDoc*)GetActiveDocument();	
	CWriteTagAccessDlg dlg(this);

	// Stop Inventory
	
	if(m_pRFIDRadioManager->IsInventory())
		OnRfidStopInventory();


	if(pDoc->GetSelectedTag() != NULL)
		dlg.SetSelectedTag(pDoc->GetSelectedTag());

	if(dlg.DoModal() == IDOK)
	{
		if (m_wndSplitter.IsPaneHidden(Bottom))
		{

⌨️ 快捷键说明

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