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

📄 srlmoddecl.h

📁 此为某测试平台的上位机软件部分
💻 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 + -