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

📄 bitfeaturedlg.cpp

📁 此为某测试平台的上位机软件部分
💻 CPP
📖 第 1 页 / 共 5 页
字号:
					//总结论!
					g_sResultMsg.Format("75SD模块自检结果 %s。\n\n", BITGETRESULT(pResultData->bWholeResult));
					
					//每项结果!
					for(int k=0; k<pResultData->nActualItemNum; k++)
					{
							g_TmpResult.Format("  %d> 自检项%s的自检 %s。\n", k+1, pResultData->sItemObj[k].szHIDItemLabel,
												BITGETRESULT(pResultData->sItemObj[k].bPass));
							g_sResultMsg += g_TmpResult;
					}
			}				
			break;
		case 0x07:		//PXI2575多路复用器自检
			{
					PXIRelayDevResultMiscelInfo *pResultData = static_cast<PXIRelayDevResultMiscelInfo *>(NMRefObject::pGlobalData);
					if (pResultData == NULL)   return "";
					//总结论!
					g_sResultMsg.Format("PXI2575模块自检结果 %s。\n\n", BITGETRESULT(pResultData->bWholeResult));
					
					//每项结果!
					for(int k=0; k<pResultData->nActualItemNum; k++)
					{
							g_TmpResult.Format("  %d> 自检项%s的自检 %s。\n", k+1, (LPCTSTR)pResultData->sItemObj[k].szHIDItemLabel,
											 BITGETRESULT(pResultData->sItemObj[k].bPass));
							g_sResultMsg += g_TmpResult;
							//
							for(int j=0; j<pResultData->sItemObj[k].sHidItemInfo.nActualNum; j++)
							{
									g_TmpResult.Format("	(%d) 通道%d的自检 %s。\n", j+1, pResultData->sItemObj[k].sHidItemInfo.nChnlNo[j],
											 BITGETRESULT(pResultData->sItemObj[k].sHidItemInfo.bChnlResult[j]));
									g_sResultMsg += g_TmpResult;
							}
					}
			}			
			break;
		case 0x08:		//PXI2565 SPST继电器自检
			{
					PXIRelayDevResultMiscelInfo *pResultData = static_cast<PXIRelayDevResultMiscelInfo *>(NMRefObject::pGlobalData);
					if (pResultData == NULL)   return "";
					//总结论!
					g_sResultMsg.Format("PXI2565模块自检结果 %s。\n\n", BITGETRESULT(pResultData->bWholeResult));
					
					//每项结果!
					for(int k=0; k<pResultData->nActualItemNum; k++)
					{
							g_TmpResult.Format("  %d> 自检项%s的自检 %s。\n", k+1, (LPCTSTR)pResultData->sItemObj[k].szHIDItemLabel,
											 BITGETRESULT(pResultData->sItemObj[k].bPass));
							g_sResultMsg += g_TmpResult;
							//
							for(int j=0; j<pResultData->sItemObj[k].sHidItemInfo.nActualNum; j++)
							{
									g_TmpResult.Format("	(%d) 通道%d的自检 %s。\n", j+1, pResultData->sItemObj[k].sHidItemInfo.nChnlNo[j],
											 BITGETRESULT(pResultData->sItemObj[k].sHidItemInfo.bChnlResult[j]));
									g_sResultMsg += g_TmpResult;
							}
					}
			}
			break;
		case 0x09:		//PXI2527多路复用器自检
			{
					PXIRelayDevResultMiscelInfo *pResultData = static_cast<PXIRelayDevResultMiscelInfo *>(NMRefObject::pGlobalData);
					if (pResultData == NULL)   return "";
					//总结论!
					g_sResultMsg.Format("PXI2527模块自检结果 %s。\n\n", BITGETRESULT(pResultData->bWholeResult));
					
					//每项结果!
					for(int k=0; k<pResultData->nActualItemNum; k++)
					{
							g_TmpResult.Format("  %d> 自检项%s的自检 %s。\n", k+1, (LPCTSTR)pResultData->sItemObj[k].szHIDItemLabel,
											 BITGETRESULT(pResultData->sItemObj[k].bPass));
							g_sResultMsg += g_TmpResult;
							//
							for(int j=0; j<pResultData->sItemObj[k].sHidItemInfo.nActualNum; j++)
							{
									g_TmpResult.Format("	(%d) 通道%d的自检 %s。\n", j+1, pResultData->sItemObj[k].sHidItemInfo.nChnlNo[j],
											 BITGETRESULT(pResultData->sItemObj[k].sHidItemInfo.bChnlResult[j]));
									g_sResultMsg += g_TmpResult;
							}
					}
			}
			break;
		case 0x0A:		//PXI6508数字IO自检
			{
					PXIDIODevResultMiscelInfo *pResultData = static_cast<PXIDIODevResultMiscelInfo *>(NMRefObject::pGlobalData);
					if (pResultData == NULL)   return "";
					//总结论!
					g_sResultMsg.Format("PXI6508模块自检结果 %s。\n\n", BITGETRESULT(pResultData->bWholeResult));
					
					//每项结果!
					for(int k=0; k<pResultData->nActualItemNum; k++)
					{
							g_TmpResult.Format("  %d> 自检项%s的自检 %s。\n", k+1, (LPCTSTR)pResultData->sItemObj[k].szHIDItemLabel,
											 BITGETRESULT(pResultData->sItemObj[k].bPass));
							g_sResultMsg += g_TmpResult;							
					}
			}
			break;
		}
		
		return   (LPCTSTR)g_sResultMsg;
}
}	//end namespace NMDetailResult




/************************************************************************************
* 以下是串口通信部分
* 分类描述各通信命令。
************************************************************************************/
#include "rs232.h"
#include "FuncDecl.h"
#pragma  comment(lib, "instrsup.lib")
namespace  NMRS232
{
static  int  g_nSerialPort = 0;
static  BOOL g_bUARTOK     = FALSE;
BOOL   _InitSerialPort(int nPort)
{
		g_nSerialPort = nPort;

		//波特率=38400, 8.n.1方式等	
		int nStatus = ::OpenComConfig(g_nSerialPort, NULL, 38400, 0, 8, 1, 1000, 1000);
		g_bUARTOK   = (nStatus>= 0);
		
		g_bRS232StatusNext = g_bUARTOK;
		
		if (g_bUARTOK)
		{
			::AfxMessageBox("初始化串口成功!");
		}
		return (nStatus >= 0);
}

//发送串口通信协议字符串
void   _SendCmd(LPCTSTR lpBuffer)
{
		if (g_bUARTOK == FALSE)
			return ;
		
		int nStatus = ::FlushOutQ(g_nSerialPort);
		    nStatus = ::ComWrt(g_nSerialPort, lpBuffer, ::strlen(lpBuffer));
}

//读取接收的缓冲区
BOOL   _RecvCmd(char szRecvBuff[128], int nLen)
{
		if (g_bUARTOK == FALSE)
			return FALSE;

		int nStatus = ::ComRd(g_nSerialPort, szRecvBuff, nLen);
		return  nStatus >= 0;
}

//验证回报信息
#define  REPLYINFO   ":80#"
BOOL   _VerifySuccess(void)
{
		char szRecvBuff[128] = {0};
		BOOL bVerifyOk = FALSE;
		
		BOOL bRecv= _RecvCmd(szRecvBuff, ::strlen(REPLYINFO));
		if (bRecv == TRUE)
		{
			bVerifyOk = (::strcmp(szRecvBuff, REPLYINFO) == 0);
		}
		
		return bVerifyOk;
}

//使PCB板切到初始化状态
BOOL   _ResetPCBBoard(void)
{
		LPCTSTR lpBuffer = ":0001#";
		_SendCmd(lpBuffer);
		
		::Sleep(600);
		return _VerifySuccess();
		//return  TRUE;
}

//发送继电器开关命令
BOOL   _SendRelayOp(int nWhichDelay, BOOL bClose/*TRUE -Open, FALSE -Close*/)
{
		CString   strSrlCmd;
		char szBuffer[64];	
		
		if (bClose == dcOpen)
		{
			::sprintf(szBuffer, ":01%.2x#", nWhichDelay);	//命令格式打开为: ":0101#"
			strSrlCmd = szBuffer;
			strSrlCmd.MakeUpper();
		}
		else if (bClose == dcClose)
		{
			::sprintf(szBuffer, ":02%.2x#", nWhichDelay);	//命令格式关闭为: ":0201#"
			strSrlCmd = szBuffer;
			strSrlCmd.MakeUpper();
		}
		
		_SendCmd((LPCTSTR)strSrlCmd);
		
		::Sleep(600);
		return _VerifySuccess();
}

//发送带相移的三路信号
BOOL   _Send3ChSignalPhaseShift(void)
{
		_SendCmd(":0302#");
		
		::Sleep(600);
		return _VerifySuccess();
}

//发送输出1路正弦、三角波、方波信号
BOOL   _Send1ChMultiPattSignal(SignalPattern spArg)
{
		switch (spArg)
		{
		case  ssSine:
			_SendCmd(":0303#");	
			break;
		case  ssTangle:
			_SendCmd(":0304#");
			break;
		case  ssPluse:
			_SendCmd(":0305#");
			break;
		}

		::Sleep(600);
		return _VerifySuccess();
}

//关闭所有信号输出
BOOL   _SendShutOffSignal(void)
{
		_SendCmd(":0300#");
		
		::Sleep(600);
		return _VerifySuccess();
}

//释放串口部分
void   _ReleasePort(void)
{
		if (g_bUARTOK == FALSE)
			return ;
		
		if (g_nSerialPort >0)
		{
			int nStatus = ::CloseCom(g_nSerialPort);
			if (nStatus >= 0)
				::AfxMessageBox("关闭串口成功!");
		}
}
}	//end  namespace NMRS232




/************************************************************************************
* 以下是PXI模块初始化部分
* 
************************************************************************************/
#include "BoardDrv\PxiHDDrv.h"
#pragma  comment(lib, "./debug/BoardDrv.lib")
#include "niswitch.h"
#pragma   comment(lib, "niswitch.lib")

BOOL   AfxInitPXIHW(PXIDeviceResultMiscelInfo *pPXIDeviceResource)
{		
		long  vStatus = 0;
		BOOL  bInitHW = TRUE;
		if (pPXIDeviceResource == NULL)
			return FALSE;
		::AfxMessageBox("开始");
		
#if 0
		TRY
		{				
				//75SD
				bInitHW |= NMDriver_75SD::_75SD_Init(AirStutNSP::g_s75SDDevInfo.nDevice);
				
				//ARINC429
				bInitHW |= NMDriver_AR429::_ARINC429_Init(AirStutNSP::g_sARINC429DevInfo.nDevice);
				
				//DMM
				bInitHW |= NMDriver_DMM::_DMM_Init(AirStutNSP::g_sDMMDevInfo.szResource);
				
				//示波器卡
				bInitHW |= NMDriver_Scope::_Scope_Init(AirStutNSP::g_sScopeDevInfo.szResource);
				NMDriver_Scope::_Scope_Config();
				
				//开关板
				vStatus = niSwitch_init(AirStutNSP::g_sRelay2527DevInfo.szResource, TRUE, TRUE, &AirStutNSP::g_sRelay2527DevInfo.hHandle);
				bInitHW |= (vStatus == 0);
				if (vStatus == 0)
					::AfxMessageBox("2527 OK");
				
				vStatus = niSwitch_init(AirStutNSP::g_sRelay2565DevInfo.szResource, TRUE, TRUE, &AirStutNSP::g_sRelay2565DevInfo.hHandle);
				bInitHW |= (vStatus == 0);
				if (vStatus == 0)
					::AfxMessageBox("2565 OK");		
				
				vStatus = niSwitch_init(AirStutNSP::g_sRelay2575DevInfo.szResource, TRUE, TRUE, &AirStutNSP::g_sRelay2575DevInfo.hHandle);
				bInitHW |= (vStatus == 0);
				if (vStatus == 0)
					::AfxMessageBox("2575 OK");
				
				//PXI6508部分
				for (int k=0; k<AirStutNSP::g_sRelay6508DevInfo.nActualItemNum; k++)
				{
						//vStatus = DIG_Prt_Config(AirStutNSP::g_sRelay6508DevInfo.nMaxDeviceNo, 1, 0, 0/*输入*/);
						//vStatus |= DIG_Prt_Config(AirStutNSP::g_sRelay6508DevInfo.nMaxDeviceNo, 1, 0, 1/*输出*/);	
				}
				if (vStatus == 0)
					::AfxMessageBox("6508 OK");
		}
		CATCH_ALL(e)
		{
				return  FALSE;
		}
		END_CATCH_ALL
#endif
		
		return bInitHW;
}

//释放PXI模块资源
void   AfxReleaseHW()
{
#if 0
		//75SD
		NMDriver_75SD::_75SD_Close();

		//ARINC429
		NMDriver_AR429::_ARINC429_Close();
		
		//DMM
		NMDriver_DMM::_DMM_Close();
		
		//示波器卡
		NMDriver_Scope::_Scope_Close();

		//开关板
		niSwitch_close(AirStutNSP::g_sRelay2527DevInfo.hHandle);
		niSwitch_close(AirStutNSP::g_sRelay2565DevInfo.hHandle);
		niSwitch_close(AirStutNSP::g_sRelay2575DevInfo.hHandle);
#endif
}



///////////////////////////////////////////////////////////////////////////////////////////////
// 以下是直接使用硬件驱动的部分
// 开始代码...
///////////////////////////////////////////////////////////////////////////////////////////////
namespace  GeneralModular
{
		void    RunGlobal_Switch(PXIDeviceResultMiscelInfo *pDevInfo, GeneralModular::CBoardStatusCmd *pThis)
		{
				if (pDevInfo == NULL)
					return ;

				
		}
}

⌨️ 快捷键说明

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