rfidscanview.cpp

来自「RFID读卡器源码,vc.net编写,bcgp界面控件」· C++ 代码 · 共 303 行

CPP
303
字号
// PreviewPane.cpp : implementation file
//

#include "stdafx.h"
#include "RFID_DesktopReader.h"
#include "RFIDScanView.h"
#include "exportFunc.h"
#include "DbTable.h"

#include "RFID_DesktopReaderDoc.h"
#include ".\rfidscanview.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

const int nHorzMargin = 2;

/////////////////////////////////////////////////////////////////////////////
// CRFIDScanView

IMPLEMENT_DYNCREATE(CRFIDScanView, CFormView)

CRFIDScanView::CRFIDScanView()
	: CFormView(CRFIDScanView::IDD)

	, m_strRFID_ID(_T(""))
	, m_strRFID_DATA(_T(""))
	, m_bRFIDValid(false)
	, m_strStatus(_T(""))
{


}

CRFIDScanView::~CRFIDScanView()
{
}


BEGIN_MESSAGE_MAP(CRFIDScanView, CFormView)
	//{{AFX_MSG_MAP(CRFIDScanView)
		// NOTE - the ClassWizard will add and remove mapping macros here.
	//}}AFX_MSG_MAP
	ON_WM_TIMER()
	ON_BN_CLICKED(IDOK, OnBnClickedOk)
	ON_BN_CLICKED(IDCANCEL, OnBnClickedCancel)
	ON_BN_CLICKED(IDC_RFID_SEARCH, OnBnClickedRfidSearch)
	ON_BN_CLICKED(IDC_RFID_READCONTENT, OnBnClickedRfidReadcontent)
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CRFIDScanView drawing

void CRFIDScanView::OnDraw(CDC* pDC)
{
	CRFID_DesktopReaderDoc* pDoc =GetDocument();
	ASSERT_VALID(pDoc);

	CRect rectCaption;
	GetClientRect (rectCaption);

	rectCaption.bottom = rectCaption.top + 20;

	pDC->FillSolidRect (rectCaption, globalData.clrBarFace);

	int nOldBkMode = pDC->SetBkMode (TRANSPARENT);
	COLORREF clrOldText = pDC->SetTextColor (globalData.clrBarText);
	CFont* pOldFont = (CFont*) pDC->SelectStockObject (DEFAULT_GUI_FONT);

	CRect rectText = rectCaption;
	rectText.left += 2 * nHorzMargin;
	rectText.right -= 2 * nHorzMargin + rectText.Height ();

	//CString strCaption = _T("RFID 预览");
	CString strCaption=pDoc->m_strDbIniFile;
	pDC->DrawText (strCaption, rectText, 
				DT_END_ELLIPSIS | DT_SINGLELINE | DT_VCENTER);

	pDC->SelectObject (pOldFont);
	pDC->SetTextColor (clrOldText);
	pDC->SetBkMode (nOldBkMode);
}

/////////////////////////////////////////////////////////////////////////////
// CRFIDScanView diagnostics

#ifdef _DEBUG
void CRFIDScanView::AssertValid() const
{
	CFormView::AssertValid();
}

void CRFIDScanView::Dump(CDumpContext& dc) const
{
	CFormView::Dump(dc);
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CRFIDScanView message handlers

void CRFIDScanView::OnInitialUpdate()
{
	CFormView::OnInitialUpdate();
//	SetTimer(1,500,NULL);

	CRFID_DesktopReaderApp* pApp=(CRFID_DesktopReaderApp*)AfxGetApp();
//	m_adoDataset.SetConnection(&(pApp->m_adoConnection));

	// TODO: 在此添加专用代码和/或调用基类
}

void CRFIDScanView::OnTimer(UINT nIDEvent)
{
	// TODO: 在此添加消息处理程序代码和/或调用默认值

	SearchRFID();

	CFormView::OnTimer(nIDEvent);
}

void CRFIDScanView::DoDataExchange(CDataExchange* pDX)
{
	// TODO: 在此添加专用代码和/或调用基类


	CFormView::DoDataExchange(pDX);
	DDX_Text(pDX, IDC_EDT_RFID_ID, m_strRFID_ID);
	DDX_Text(pDX, IDC_EDT_RFID_DATA, m_strRFID_DATA);
	DDX_Text(pDX, IDC_STATUS, m_strStatus);
}

void CRFIDScanView::OnFinalRelease()
{
	// TODO: 在此添加专用代码和/或调用基类
	KillTimer(1);

	CFormView::OnFinalRelease();
}

void CRFIDScanView::OnRFIDRefreshed(CString strRFID)
{

//	CString strSQL;
//	strSQL="SELECT * FROM RFID设备关联表 WHERE RFID="+strRFID;
	CRFID_DesktopReaderDoc* pDoc=GetDocument();
	ASSERT_VALID(pDoc);

	CString strCon;
	strCon="WHERE RFID='"+strRFID+"'";
	pDoc->m_CurrentRFID.mapedDataset.OpenSql(pDoc->m_OutputTable.m_strTableName,"*",strCon);

	if(pDoc->m_CurrentRFID.mapedDataset.GetRecordCount()==0)
	{//未发现关联记录
		m_strStatus="此卡未关联";
		UpdateData(false);
		pDoc->m_CurrentRFID.bMaped=false;

	}
	else
	{//发现已经关联
		m_strStatus="已关联:";
		int nID;
		
		pDoc->m_CurrentRFID.mapedDataset.GetFieldValue("设备ID",nID);
		pDoc->m_CurrentRFID.bMaped=true;

		strCon.Format("WHERE ID=%d",nID);

		if(pDoc->m_adoDevice.OpenSql(pDoc->m_InputTable.m_strTableName,"*",strCon))
		{

			CString strTemp;
			pDoc->m_adoDevice.GetFieldValue("公司名称",strTemp);
			m_strStatus=m_strStatus+strTemp+">";
			pDoc->m_adoDevice.GetFieldValue("变电站名",strTemp);
			m_strStatus=m_strStatus+strTemp+">";
			pDoc->m_adoDevice.GetFieldValue("间隔名称",strTemp);
			m_strStatus=m_strStatus+strTemp+">";
			pDoc->m_adoDevice.GetFieldValue("设备名称",strTemp);
			m_strStatus=m_strStatus+strTemp+">";
			pDoc->m_adoDevice.GetFieldValue("运行编号",strTemp);
			m_strStatus=m_strStatus+strTemp;


		}
		CRFID_DesktopReaderApp* theApp=(CRFID_DesktopReaderApp*)AfxGetApp();
		this->GetParentFrame()->PostMessage(WM_MAPEDRFID,(WPARAM)nID,NULL);

		UpdateData(false);


	}
	pDoc->m_CurrentRFID.mapedDataset.Close();

}

void CRFIDScanView::OnBnClickedOk()
{
	// TODO: 在此添加控件通知处理程序代码
	UpdateData(true);

	CRFID_DesktopReaderDoc* pDoc=GetDocument();
	ASSERT_VALID(pDoc);

	m_bRFIDValid=true;

	pDoc->m_CurrentRFID.strRFID=m_strRFID_ID;
	pDoc->m_CurrentRFID.strContent="";
	pDoc->m_CurrentRFID.bValid=true;

	OnRFIDRefreshed(m_strRFID_ID);
		
}

void CRFIDScanView::OnBnClickedCancel()
{
	// TODO: 在此添加控件通知处理程序代码
	CRFID_DesktopReaderDoc* pDoc=GetDocument();
	ASSERT_VALID(pDoc);

	m_strRFID_ID="";
    m_strRFID="";
	m_bRFIDValid=false;

	pDoc->m_CurrentRFID.strRFID="";
	pDoc->m_CurrentRFID.strContent="";
	pDoc->m_CurrentRFID.bValid=false;
	pDoc->m_CurrentRFID.bMaped=false;

	m_strStatus="搜索中...";

	UpdateData(false);

}

void CRFIDScanView::OnBnClickedRfidSearch()
{
	// TODO: 在此添加控件通知处理程序代码
	if(!SearchRFID())
		AfxMessageBox("未扫描到RFID卡!");
}

void CRFIDScanView::OnBnClickedRfidReadcontent()
{
	// TODO: 在此添加控件通知处理程序代码


}

bool CRFIDScanView::SearchRFID(void)
{
		unsigned char uData[9];
	unsigned char uLen;
	rf_init_type(0,'1');

	CRFID_DesktopReaderDoc* pDoc=GetDocument();
	ASSERT_VALID(pDoc);

	if(ISO15693_Inventorys(0,uData,&uLen)==0)
	{
		CString strTemp;
		CString strRFID=_T("");
		for(int i=8;i>0;i--)
		{
			strTemp.Format(_T("%02x"),uData[i]);
			strRFID+=strTemp;
		}
		if(m_strRFID!=strRFID)
		{
            m_strRFID_ID=strRFID;
			m_strRFID=m_strRFID_ID;
			m_bRFIDValid=true;

			pDoc->m_CurrentRFID.strRFID=m_strRFID_ID;
			pDoc->m_CurrentRFID.strContent="";
			pDoc->m_CurrentRFID.bValid=true;

			OnRFIDRefreshed(m_strRFID);
			rf_beep(0,10);
			UpdateData(FALSE);
		}
		return true;
		
	}
	else
	{
		m_strRFID_ID="";
        m_strRFID="";
		m_bRFIDValid=false;

		pDoc->m_CurrentRFID.strRFID="";
		pDoc->m_CurrentRFID.strContent="";
		pDoc->m_CurrentRFID.bValid=false;

		UpdateData(FALSE);

	}
	return false;
}

⌨️ 快捷键说明

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