?? cmdmanager.cpp
字號:
// CmdManager.cpp: implementation of the CCmdManager class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "RddDbg.h"
#include "CmdManager.h"
#include "rdddbgdlg.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
#include "callverdlg.h"
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CString CCmdManager::m_gsSendCmd[]={"Normal state\r\n","Debug 101\r\n","Debug modem\r\n",
"Corrent=%f,Channel=%d\r\n","Get ID\r\n"};//發(fā)送的命令
CString CCmdManager::m_gsRecCmd[]={"Success\r\n","Error\r\n","Waiting\r\n"
,"Corrent Success=*\r\n","Corrent Fail=*\r\n","ID=*\r\n"};//接收的命令
CCmdManager::CCmdManager()
{
m_iItem = 0;
m_uTerminalID = 0;
m_bDebugStates = FALSE;
m_Cmd.AddCmdCode(m_gsRecCmd[0]);
m_Cmd.AddCmdCode(m_gsRecCmd[1]);
m_Cmd.AddCmdCode(m_gsRecCmd[2]);
m_Cmd.AddCmdCode(m_gsRecCmd[3]);
m_Cmd.AddCmdCode(m_gsRecCmd[4]);
m_Cmd.AddCmdCode(m_gsRecCmd[5]);
}
CCmdManager::~CCmdManager()
{
}
void CCmdManager::AddDataFunc(UINT uCmd, CCmdManager::DataFunc pFunc)
{
for(UINT u=0; u<m_uDataFuncCount; u++)
{
if(m_uDataFuncType[u] == uCmd)
{
m_DataFuncBuf[u] = pFunc;
return;
}
}
if(m_uDataFuncCount > MAX_CMDFUNC_COUNT)
{
ASSERT(0);
return ;
}
m_uDataFuncType[m_uDataFuncCount] = uCmd;
m_DataFuncBuf[m_uDataFuncCount] = pFunc;
m_uDataFuncCount++;
ASSERT(m_uDataFuncCount <= MAX_CMDFUNC_COUNT);
}
CCmdManager::DataFunc CCmdManager::GetDataFunc(UINT uCmd)
{
for(UINT u=0; u<m_uDataFuncCount; u++)
{
if(uCmd == m_uDataFuncType[u])
return m_DataFuncBuf[u];
}
return NULL;
}
void CCmdManager::InitCmdFunc()
{
AddDataFunc(11, CallID);
AddDataFunc(12, EnterDebug);
AddDataFunc(13, EnterNormal);
AddDataFunc(14, SetCTPT);
AddDataFunc(103, TimeSet);
AddDataFunc(196, TimeGet);
AddDataFunc(160, TimeTableSet);
AddDataFunc(162, TimeTableGet);
AddDataFunc(149, OnOffLight);
AddDataFunc(100, CallUp);
AddDataFunc(259, CallUpOnce);
AddDataFunc(258, CallUpTwice);
AddDataFunc(165, CommParamer);
AddDataFunc(110, LimitParamer);
AddDataFunc(207, UploadStamp);
AddDataFunc(170, ScreenWord);
AddDataFunc(182, CallVersions);
}
void CCmdManager::CallID(int iItem)
{
static BOOL bFailState = TRUE;
char buf[200];
sprintf((char*)buf,"%s",m_gsSendCmd[4]);
DWORD dwWrite;
CRddDbgDlg *pDlg = (CRddDbgDlg *)AfxGetApp()->m_pMainWnd;
if(pDlg == NULL)
{
return ;
}
if(!CCommManager::m_hCeComm.Write((BYTE*)buf, m_gsSendCmd[4].GetLength(), &dwWrite))
{
pDlg->m_cmdlist.SetItemText(iItem, 2, CCommManager::m_hCeComm.GetLastErrorDisc());
return ;
}
pDlg->m_cmdlist.SetItemText(iItem, 2, _T("等待回應(yīng)..."));
int i=0;
DWORD dwRead;
while(CCommManager::m_hCeComm.ReadNoEvent((BYTE*)buf+i, 1, &dwRead, 3000))
{
int iCmdNo=m_Cmd.ReadAChar(buf[i]);
switch(iCmdNo)//Success
{
case 6:
{
buf[i+1]='\0';
sscanf((char*)buf,"ID=%d\r\n",&m_uTerminalID);
CString strID;
strID.Format(_T("ID=%d"), m_uTerminalID);
pDlg->m_cmdlist.SetItemText(iItem, 2, strID);
}
return ;
default:
i++;
break;
}
}
if(bFailState)
{
pDlg->m_cmdlist.SetItemText(iItem, 2, _T("讀取ID失敗!"));
bFailState = FALSE;
}
else
{
pDlg->m_cmdlist.SetItemText(iItem, 2, _T("讀取ID失敗!!"));
bFailState = TRUE;
}
}
void CCmdManager::EnterDebug(int iItem)
{
if(StatesShift(iItem, 1))
{
m_bDebugStates = TRUE;
}
}
BOOL CCmdManager::StatesShift(int iItem, int iType)
{
static BOOL bFailState = TRUE;
CString strTip = iType==1?L"調(diào)試狀態(tài)":L"正常狀態(tài)";
char buf[200];
sprintf((char*)buf,"%s",m_gsSendCmd[iType]);
DWORD dwWrite;
CRddDbgDlg *pDlg = (CRddDbgDlg *)AfxGetApp()->m_pMainWnd;
if(pDlg == NULL)
{
return FALSE;
}
if(!CCommManager::m_hCeComm.Write((BYTE*)buf, m_gsSendCmd[iType].GetLength(), &dwWrite))
{
pDlg->m_cmdlist.SetItemText(iItem, 2, CCommManager::m_hCeComm.GetLastErrorDisc());
return FALSE;
}
DWORD dwRead;
CString strMsg;
while(CCommManager::m_hCeComm.ReadNoEvent((BYTE*)buf, 1, &dwRead, 3000))
{
int iCmdNo=m_Cmd.ReadAChar(buf[0]);
switch(iCmdNo)
{
case 1://success
{
if(bFailState)
{
strMsg.Format(_T("進(jìn)入%s成功!"), strTip);
bFailState = FALSE;
}
else
{
strMsg.Format(_T("進(jìn)入%s成功!!"), strTip);
bFailState = TRUE;
}
pDlg->m_cmdlist.SetItemText(iItem, 2, strMsg);
}
return TRUE;
case 2: //error
pDlg->m_cmdlist.SetItemText(iItem, 2, _T("裝置不在掛牌狀態(tài)"));
return FALSE;
default:
break;
}
}
if(bFailState)
{
strMsg.Format(_T("進(jìn)入%s失敗!"), strTip);
bFailState = FALSE;
}
else
{
strMsg.Format(_T("進(jìn)入%s失敗!!"), strTip);
bFailState = TRUE;
}
pDlg->m_cmdlist.SetItemText(iItem, 2, strMsg);
return FALSE;
}
void CCmdManager::EnterNormal(int iItem)
{
if(StatesShift(iItem, 2))
{
m_bDebugStates = FALSE;
}
}
void CCmdManager::SetCTPT(int iItem)
{
}
void CCmdManager::TimeSet(int iItem)
{
//AfxMessageBox(_T("正在時間同步,請稍等..."));
CTime time = CTime::GetCurrentTime();
CString strTime;
strTime.Format(_T("%d-%02d-%02d %02d:%02d:%02d"), time.GetYear(), time.GetMonth(),
time.GetDay(), time.GetHour(), time.GetMinute(), time.GetSecond());
CRddDbgDlg *pDlg = (CRddDbgDlg *)AfxGetApp()->m_pMainWnd;
if(pDlg != NULL)
{
pDlg->m_cmdlist.SetItemText(iItem, 2, strTime);
}
}
void CCmdManager::TimeGet(int iItem)
{
CTime time = CTime::GetCurrentTime();
CString strTime;
strTime.Format(_T("%d-%02d-%02d %02d:%02d:%02d"), time.GetYear(), time.GetMonth(),
time.GetDay(), time.GetHour(), time.GetMinute(), time.GetSecond());
CRddDbgDlg *pDlg = (CRddDbgDlg *)AfxGetApp()->m_pMainWnd;
if(pDlg != NULL)
{
pDlg->m_cmdlist.SetItemText(iItem, 2, strTime);
}
}
void CCmdManager::TimeTableSet(int iItem)
{
CRddDbgDlg *pDlg = (CRddDbgDlg *)AfxGetApp()->m_pMainWnd;
if(pDlg == NULL)
{
}
if(!m_bDebugStates)
{
pDlg->m_cmdlist.SetItemText(iItem, 2, L"不在調(diào)試狀態(tài)");
return ;
}
}
void CCmdManager::TimeTableGet(int iItem)
{
CRddDbgDlg *pDlg = (CRddDbgDlg *)AfxGetApp()->m_pMainWnd;
if(pDlg == NULL)
{
}
if(!m_bDebugStates)
{
pDlg->m_cmdlist.SetItemText(iItem, 2, L"不在調(diào)試狀態(tài)");
return ;
}
}
void CCmdManager::OnOffLight(int iItem)
{
CRddDbgDlg *pDlg = (CRddDbgDlg *)AfxGetApp()->m_pMainWnd;
if(pDlg == NULL)
{
}
if(!m_bDebugStates)
{
pDlg->m_cmdlist.SetItemText(iItem, 2, L"不在調(diào)試狀態(tài)");
return ;
}
}
void CCmdManager::CallUp(int iItem)
{
CRddDbgDlg *pDlg = (CRddDbgDlg *)AfxGetApp()->m_pMainWnd;
if(pDlg == NULL)
{
}
if(!m_bDebugStates)
{
pDlg->m_cmdlist.SetItemText(iItem, 2, L"不在調(diào)試狀態(tài)");
return ;
}
}
void CCmdManager::CallUpOnce(int iItem)
{
CRddDbgDlg *pDlg = (CRddDbgDlg *)AfxGetApp()->m_pMainWnd;
if(pDlg == NULL)
{
}
if(!m_bDebugStates)
{
pDlg->m_cmdlist.SetItemText(iItem, 2, L"不在調(diào)試狀態(tài)");
return ;
}
}
void CCmdManager::CallUpTwice(int iItem)
{
CRddDbgDlg *pDlg = (CRddDbgDlg *)AfxGetApp()->m_pMainWnd;
if(pDlg == NULL)
{
}
if(!m_bDebugStates)
{
pDlg->m_cmdlist.SetItemText(iItem, 2, L"不在調(diào)試狀態(tài)");
return ;
}
}
void CCmdManager::CommParamer(int iItem)
{
CRddDbgDlg *pDlg = (CRddDbgDlg *)AfxGetApp()->m_pMainWnd;
if(pDlg == NULL)
{
}
if(!m_bDebugStates)
{
pDlg->m_cmdlist.SetItemText(iItem, 2, L"不在調(diào)試狀態(tài)");
return ;
}
}
void CCmdManager::LimitParamer(int iItem)
{
CRddDbgDlg *pDlg = (CRddDbgDlg *)AfxGetApp()->m_pMainWnd;
if(pDlg == NULL)
{
}
if(!m_bDebugStates)
{
pDlg->m_cmdlist.SetItemText(iItem, 2, L"不在調(diào)試狀態(tài)");
return ;
}
}
void CCmdManager::UploadStamp(int iItem)
{
CRddDbgDlg *pDlg = (CRddDbgDlg *)AfxGetApp()->m_pMainWnd;
if(pDlg == NULL)
{
}
if(!m_bDebugStates)
{
pDlg->m_cmdlist.SetItemText(iItem, 2, L"不在調(diào)試狀態(tài)");
return ;
}
}
void CCmdManager::ScreenWord(int iItem)
{
CRddDbgDlg *pDlg = (CRddDbgDlg *)AfxGetApp()->m_pMainWnd;
if(pDlg == NULL)
{
}
if(!m_bDebugStates)
{
pDlg->m_cmdlist.SetItemText(iItem, 2, L"不在調(diào)試狀態(tài)");
return ;
}
}
void CCmdManager::CallVersions(int iItem)
{
CRddDbgDlg *pDlg = (CRddDbgDlg *)AfxGetApp()->m_pMainWnd;
if(pDlg == NULL)
{
}
if(!m_bDebugStates)
{
pDlg->m_cmdlist.SetItemText(iItem, 2, L"不在調(diào)試狀態(tài)");
//return ;
}
CCallVerDlg dlg;
if(dlg.DoModal() != IDOK)
{
return;
}
}
UINT AccpetNotRegMsg(LPVOID pThis)
{
/* CRddDbgDlg *pDlg = (CRddDbgDlg *)AfxGetApp()->m_pMainWnd;
if(pDlg == NULL)
{
return 0;
}
CCmdManager *pManager = (CCmdManager *)pThis;
if(pManager == NULL)
{
return 0;
}
char buf[200];
memset(buf, 0, 200);
int i=0;
DWORD dwRead;
while(CCommManager::m_hCeComm.ReadComm((BYTE*)buf+i, 1, dwRead))
{
int iCmdNo=m_Cmd.ReadAChar(buf[i]);
switch(iCmdNo)//Success
{
case 6:
buf[i+1]='\0';
sscanf((char*)buf,"ID=%d\r\n",&uID);
return TRUE;
break;
default:
i++;
break;
}
}
{
pDlg->m_cmdlist.SetItemText(pManager->m_iItem, 2, CCommManager::m_hCeComm.GetLastErrorDisc());
}
else
{
CString strID;
strID.Format(_T("%s"), buf);
pDlg->m_cmdlist.SetItemText(pManager->m_iItem, 2, strID);
}
*/
return 0;
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -