📄 srlmoddecl.h
字号:
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include "CmnDef.h"
#include "FuncDecl.h"
#define _GETRESULT(pass) pass?_T("通过"):_T("失败")
#define AttachUIObject CListCtrl
#define ADD_LISTCTRL_ITEM(pUIObject, szFmt1, szFmt2, szFmt3) int nImKey = pUIObject->InsertItem(pUIObject->GetItemCount()+1, szFmt1, -1);\
pUIObject->SetItem(nImKey, 1, LVIF_TEXT, szFmt2, -1, LVIS_SELECTED, -1, -1); \
pUIObject->SetItem(nImKey, 2, LVIF_TEXT, szFmt3, -1, LVIS_SELECTED, -1, -1);
#define ADD_LISTCTRL_ITEM3(pUIObject, szFmt1, szFmt2, szFmt3, szFmt4) int nImKey = pUIObject->InsertItem(pUIObject->GetItemCount()+1, szFmt1, -1);\
pUIObject->SetItem(nImKey, 1, LVIF_TEXT, szFmt2, -1, LVIS_SELECTED, -1, -1); \
pUIObject->SetItem(nImKey, 2, LVIF_TEXT, szFmt3, -1, LVIS_SELECTED, -1, -1); \
pUIObject->SetItem(nImKey, 3, LVIF_TEXT, szFmt4, -1, LVIS_SELECTED, -1, -1);
#define ALTER_LISTCTRL_ITEM_DATA(pUIObject, Val) pUIObject->SetItemData(nImKey, Val);
#define ALTER_LISTCTRL_ITEM(pUIObject, szFmt) pUIObject->SetItem(nImKey, 2, LVIF_TEXT, szFmt, -1, LVIS_SELECTED, -1, -1);
#define ALTER_LISTCTRL_ITEM_Index(pUIObject, Col, szFmt) pUIObject->SetItem(nImKey, Col, LVIF_TEXT, szFmt, -1, LVIS_SELECTED, -1, -1);
#define ALTER_LISTCTRL_ITEM_Result(pUIObject, Row, Col, szFmt) \
{LVITEM item; \
item.mask = LVIF_TEXT; \
item.iItem = Row; \
item.iSubItem = Col; \
item.pszText = szFmt; \
pUIObject->SetItem(&item);}
#define DECLARE_SELFDESTROY_MAP() public: virtual void Destroy(){delete this;}
namespace GeneralModular
{
#define DESTROYME() if (m_pNewFace != NULL) \
m_pNewFace->Destroy();
class CBitUIImpl
{
public:
virtual void ChgFace(AttachUIObject *pUIObject, LPVOID pData) = 0; //改变XX列表组成
virtual void CollectInfo(AttachUIObject *pUIObject, LPVOID pData) = 0; //得到自检的信息结构
virtual void ShowInfo(AttachUIObject *pUIObject, LPVOID pData) = 0; //显示自检的结果
//
virtual void Destroy() = 0;
};
//////////////////////////////////////////////////////////////////////////////////////
/*执行自检命令的接口定义*/
class CBaseCmdIntf
{
public:
virtual void SelectItem(LPVOID pData, int nItem, int Data){;}
};
class CBitCmdImpl:public CBaseCmdIntf
{
public:
CBitCmdImpl():m_pNewFace(NULL), m_pListCtrl(NULL){;}
virtual ~CBitCmdImpl()
{
DESTROYME()
m_pNewFace = NULL;
m_pListCtrl= NULL;
}
void OwnerObject(CListCtrl *pListCtrl, LPVOID pGlobalData)
{
m_pListCtrl = pListCtrl;
m_pData = pGlobalData;
ASSERT(m_pListCtrl);
}
//////////////////////////////////////////////////////////////
//第一步:改变界面
virtual void SwitchFace(CBitUIImpl *pNewFace)
{
DESTROYME()
m_pNewFace = pNewFace;
if (m_pNewFace != NULL)
{
m_pNewFace->ChgFace(m_pListCtrl, m_pData);
}
}
//第二步:执行XX测试
virtual BOOL TryHWTest()
{
BOOL bExecOk = TRUE;
if (m_pNewFace == NULL)
return FALSE;
//1.得到通道数据
m_pNewFace->CollectInfo(m_pListCtrl, m_pData);
//2.调用硬件驱动开始执行测试
bExecOk = this->ModularBoard(m_pData);
if (!bExecOk)
return FALSE;
//3.显示自检结果
m_pNewFace->ShowInfo(m_pListCtrl, m_pData);
return bExecOk;
}
//第三步:把自检结果写入文件中
virtual void Stream(LPCTSTR pszInfoFile){;}
virtual void SelectItem(LPVOID pData, int nItem, int Data){;}
protected:
virtual BOOL ModularBoard(LPVOID pData) = 0;
protected:
CBitUIImpl *m_pNewFace;
CListCtrl *m_pListCtrl;
void *m_pData;
};
/////////////////////////////////////////////////////////////////////////////////////
//旋变信号自检
class C75SDBoardFace: public CBitUIImpl
{
public:
C75SDBoardFace(){;}
virtual ~C75SDBoardFace(){;}
public:
virtual void ChgFace(AttachUIObject *pUIObject, LPVOID pData)
{
_75SDResultMiscelInfo *pGlobData= static_cast<_75SDResultMiscelInfo *>(pData);
if (pUIObject == NULL || pGlobData == NULL)
return ;
//1.删除已存在的头和组成项
while (pUIObject->DeleteColumn (0));
pUIObject->DeleteAllItems();
//2.插入列头
pUIObject->InsertColumn(1, "序号", LVCFMT_CENTER, 50);
pUIObject->InsertColumn(2, "75SD自检项目", LVCFMT_LEFT, 180);
pUIObject->InsertColumn(3, "75SD自检结果", LVCFMT_CENTER, 200);
//3.插入子项组成
for (int j=0; j<pGlobData->nActualItemNum; j++)
{
char szFmt[32], szFmt1[64];
::sprintf(szFmt, "%d", j+1); ::sprintf(szFmt1, "%s", pGlobData->sItemObj[j].szHIDItemLabel);
ADD_LISTCTRL_ITEM(pUIObject, szFmt, szFmt1, "N/A")
}
ListView_SetExtendedListViewStyle(pUIObject->GetSafeHwnd(), LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES/*|LVS_EX_CHECKBOXES*/);
}
//得到通道数据
virtual void CollectInfo(AttachUIObject *pUIObject, LPVOID pData) //得到自检的信息结构
{
_75SDResultMiscelInfo *pGlobData= static_cast<_75SDResultMiscelInfo *>(pData);
if (pUIObject == NULL || pGlobData == NULL)
return ;
}
//显示自检结果
virtual void ShowInfo(AttachUIObject *pUIObject, LPVOID pData)
{
_75SDResultMiscelInfo *pGlobData= static_cast<_75SDResultMiscelInfo *>(pData);
if (pUIObject == NULL || pGlobData == NULL)
return ;
for (int j=0; j<pGlobData->nActualItemNum; j++)
{
ALTER_LISTCTRL_ITEM_Result(pUIObject, j, 2, _GETRESULT(pGlobData->sItemObj[j].bPass))
}
}
//
DECLARE_SELFDESTROY_MAP()
};
}
/**********************************************************************************************
* 定义1553和429模块的使用
*
**********************************************************************************************/
using namespace GeneralModular;
namespace SRLDIOModular
{
#pragma comment(lib, "./cei22032.lib")
// class CSrlDioCmdImpl:public CBaseCmdIntf
// {
// public:
// CSrlDioCmdImpl():m_pNewFace(NULL), m_pListCtrl(NULL){;}
// virtual ~CSrlDioCmdImpl()
// {
// DESTROYME()
// m_pNewFace = NULL;
// m_pListCtrl= NULL;
// }
// void OwnerObject(CListCtrl *pListCtrl, LPVOID pGlobalData)
// {
// m_pListCtrl = pListCtrl;
// m_pData = pGlobalData;
// ASSERT(m_pListCtrl);
// }
//
// //////////////////////////////////////////////////////////////
// //改变界面
// virtual void SwitchFace(GeneralModular::CBitUIImpl *pNewFace)
// {
// DESTROYME()
//
// m_pNewFace = pNewFace;
// if (m_pNewFace != NULL)
// {
// m_pNewFace->ChgFace(m_pListCtrl, m_pData);
// }
// }
//
// virtual BOOL GoChnl()
// {
// BOOL bExecOk = TRUE;
//
// //0.得到通道数据
// m_pNewFace->CollectInfo(m_pListCtrl, m_pData);
//
// //1.收集数据开始测试
// bExecOk = this->TestChnls();
//
// //2.显示数据
// m_pNewFace->ShowInfo(m_pListCtrl, m_pData);
//
// return bExecOk;
// }
// virtual void SelectItem(LPVOID pData, int nItem, int Data)
// {
// ;
// }
// protected:
// virtual BOOL TestChnls() = 0;
//
// protected:
// GeneralModular::CBitUIImpl *m_pNewFace;
// CListCtrl *m_pListCtrl;
// void *m_pData;
// };
/**************************429自检功能*************************/
class CARINC429Cmd: public CBitCmdImpl
{
public:
CARINC429Cmd(){;}
virtual ~CARINC429Cmd(){;}
protected:
virtual BOOL ModularBoard(LPVOID pData)
{
int txChnls[MAX429CHNLNUM];
int rxChnls[MAX429CHNLNUM];
int nPairNum = 0;
if(g_bBoardStatusNext == FALSE)
{
::AfxMessageBox("由于初始化PXI硬件时出现错误,无法使用ARINC429进行信号测试。\n请联系硬件模块问题。");
return FALSE;
}
ARINC429ResultMiscelInfo *pDevInfo= static_cast<ARINC429ResultMiscelInfo *>(pData);
if (pDevInfo == NULL)
return FALSE;
#if 0
BOOL bMeasChnl = (pDevInfo->nActualChnl >0);
if (bMeasChnl == FALSE)
{
::AfxMessageBox("没有可测量的ARINC429自检通道!");
return FALSE;
}
#endif
pDevInfo->bWholeResult = TRUE;
return TRUE;
}
};
} //end of namespace
namespace NMRefObject
{
static CBaseCmdIntf *g_pBaseCmd = NULL;
static LPVOID pGlobalData = NULL;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -