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 + -
显示快捷键?