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

📄 electicketcardsysdoc.cpp

📁 使用RFID的一个监控程序
💻 CPP
字号:
// ElecTicketCardSysDoc.cpp : implementation of the CElecTicketCardSysDoc class
//

#include "stdafx.h"
#include "ElecTicketCardSys.h"

#include "MainFrm.h"

#include "ElecTicketCardSysDoc.h"
#include "CommConfigDlg.h"
#include <string.h>

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

extern CElecTicketCardSysApp theApp;
/////////////////////////////////////////////////////////////////////////////
// CElecTicketCardSysDoc

IMPLEMENT_DYNCREATE(CElecTicketCardSysDoc, CDocument)

BEGIN_MESSAGE_MAP(CElecTicketCardSysDoc, CDocument)
	//{{AFX_MSG_MAP(CElecTicketCardSysDoc)
	ON_COMMAND(IDM_COMM_CONFIG, OnCommConfig)	
	ON_COMMAND(IDM_COMM_RECEIVE, OnCommReceive)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CElecTicketCardSysDoc construction/destruction

CElecTicketCardSysDoc::CElecTicketCardSysDoc()
{
	m_pComm = new CComm(this);
}

CElecTicketCardSysDoc::~CElecTicketCardSysDoc()
{
}

BOOL CElecTicketCardSysDoc::OnNewDocument()
{
	if (!CDocument::OnNewDocument())
		return FALSE;

	// TODO: add reinitialization code here
	// (SDI documents will reuse this document)

	return TRUE;
}

/////////////////////////////////////////////////////////////////////////////
// CElecTicketCardSysDoc serialization

void CElecTicketCardSysDoc::Serialize(CArchive& ar)
{
	if (ar.IsStoring())
	{
		// TODO: add storing code here
	}
	else
	{
		// TODO: add loading code here
	}
}

/////////////////////////////////////////////////////////////////////////////
// CElecTicketCardSysDoc diagnostics

#ifdef _DEBUG
void CElecTicketCardSysDoc::AssertValid() const
{
	CDocument::AssertValid();
}

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

/////////////////////////////////////////////////////////////////////////////
// CElecTicketCardSysDoc commands

void CElecTicketCardSysDoc::OnCommConfig() 
{
	CCommConfigDlg commCfgDlg;

	commCfgDlg.m_pComm = m_pComm;
	
	if (IDOK != commCfgDlg.DoModal())
	{
		return;
	}
}

	


//开启(或停止接收串口数据)
void CElecTicketCardSysDoc::OnCommReceive() 
{
	if (!m_pComm)
	{
		m_pComm = new CComm;
	}
	
	//如果已经在接收,则停止接收
	if (m_pComm->m_bReceive)
	{
		//停止接收
		m_pComm->StopReceive();

		//修改菜单名称
		CMenu *pMenu=AfxGetMainWnd()->GetMenu();
	
		CMenu *pSubMenu = pMenu->GetSubMenu(2);
			
		UINT nItemId = pSubMenu->GetMenuItemID(1);
		pSubMenu->ModifyMenu(nItemId,MF_BYCOMMAND,nItemId,_T("开始接收(&R)"));		

		CString strTitle(_T("基于RFID的电子票证系统【——CANI_FriHome开发中6.9...】"));
		CString strCommState;
		
		//AfxGetMainWnd()->GetWindowText(strTitle);

		strCommState = _T("【串口未接收数据】");
		
		strTitle += strCommState;
		
		AfxGetMainWnd()->SetWindowText(strTitle);

	}
	else
	{
		//开始接收
		m_pComm->StartReceive();
		
		//修改菜单名称
		CMenu *pMenu=AfxGetMainWnd()->GetMenu();
		
		CMenu *pSubMenu = pMenu->GetSubMenu(2);
			
		UINT nItemId = pSubMenu->GetMenuItemID(1);
		pSubMenu->ModifyMenu(nItemId,MF_BYCOMMAND,nItemId,_T("停止接收(&R)"));

		CString strTitle(_T("基于RFID的电子票证系统【——CANI_FriHome开发中6.9...】"));
		CString strCommState;
		
		//AfxGetMainWnd()->GetWindowText(strTitle);
		
		strCommState.Format(_T("【COM%d:波特率%d bps 正在接收】"),
			m_pComm->m_nComm,
			m_pComm->m_dwBaudRate
			);
		
		strTitle += strCommState;
		
		AfxGetMainWnd()->SetWindowText(strTitle);
	}	
}

void CElecTicketCardSysDoc::CloseComm()
{
	if (!m_pComm)
	{
		m_pComm = new CComm;
	}
	
	//如果已经在接收,则停止接收
	if (m_pComm->m_bReceive)
	{
		//停止接收
		m_pComm->StopReceive();

		//修改菜单名称
		CMenu *pMenu=AfxGetMainWnd()->GetMenu();
	
		CMenu *pSubMenu = pMenu->GetSubMenu(2);
			
		UINT nItemId = pSubMenu->GetMenuItemID(1);
		pSubMenu->ModifyMenu(nItemId,MF_BYCOMMAND,nItemId,_T("开始接收(&R)"));		

		CString strTitle(_T("基于RFID的电子票证系统【——CANI_FriHome开发中6.9...】"));
		CString strCommState;
		
		//AfxGetMainWnd()->GetWindowText(strTitle);

		strCommState = _T("【串口未接收数据】");
		
		strTitle += strCommState;
		
		AfxGetMainWnd()->SetWindowText(strTitle);

	}
	else
	{
		//开始接收
		m_pComm->StartReceive();
		
		//修改菜单名称
		CMenu *pMenu=AfxGetMainWnd()->GetMenu();
		
		CMenu *pSubMenu = pMenu->GetSubMenu(2);
			
		UINT nItemId = pSubMenu->GetMenuItemID(1);
		pSubMenu->ModifyMenu(nItemId,MF_BYCOMMAND,nItemId,_T("停止接收(&R)"));

		CString strTitle(_T("基于RFID的电子票证系统【——CANI_FriHome开发中6.9...】"));
		CString strCommState;
		
		//AfxGetMainWnd()->GetWindowText(strTitle);
		
		strCommState.Format(_T("【COM%d:波特率%d bps 正在接收】"),
			m_pComm->m_nComm,
			m_pComm->m_dwBaudRate
			);
		
		strTitle += strCommState;
		
		AfxGetMainWnd()->SetWindowText(strTitle);
	}	
}

void CElecTicketCardSysDoc::OnRxCardID(const char* lpstrCardID)
{
	static char  lastTagID[4]={0};
	int nLen = strlen(lpstrCardID);
	char* strCardID = new char[nLen];
	char curTagID[4];

	memset(strCardID,0,nLen);
	
	strncpy(strCardID,lpstrCardID,nLen-1);
	strncpy(curTagID,strCardID,4);

	if(strcmp(curTagID,lastTagID)==0)
	{
		return;
	}
	strcpy(lastTagID,curTagID);

	
	TRACE(strCardID);
	TRACE("\r\n");
	
	CMainFrame* pMainFrm = (CMainFrame*)AfxGetApp()->m_pMainWnd;

	switch(strCardID[0])
	{		
		case CARD_CHECK:	//验票	
			{			
				//发送消息给“验票模块”
				::PostMessage(pMainFrm->m_pCardCheckView->m_hWnd,UM_RX_CARD_ID,(WPARAM)&strCardID[1],(LPARAM)CARD_CHECK);
				break;
			}			
		case CARD_SALE:		//售票
			{				
				//发送消息给“票务管理模块”
				::PostMessage(pMainFrm->m_pTicketMgmtView->m_hWnd,UM_RX_CARD_ID,(WPARAM)&strCardID[1],(LPARAM)CARD_SALE);
				break;
			}			
		case GAME_LIST:		//比赛前获得比赛售票信息
			{			
				//发送消息给“比赛管理模块”
				::PostMessage(pMainFrm->m_pTicketMgmtView->m_hWnd,UM_RX_CARD_ID,(WPARAM)&strCardID[1],NULL);
				break;
			}
		default:
			break;
	}
}

⌨️ 快捷键说明

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