📄 bitfeaturedlg.cpp
字号:
//总结论!
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 + -