📄 electicketcardsysdoc.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 + -