📄 bitfeaturedlg.cpp
字号:
break;
case 0x06: //75SD模块自检
{
g_s75SDBoardTryDev.OwnerObject(pListCtrl, &g_s75SDDevInfo);
if (omFace == nOpMode) g_s75SDBoardTryDev.SwitchFace(new C75SDBoardFace); //切换界面
else nImageIndex = g_s75SDBoardTryDev.TryHWTest(); //获得信息(写入数据结构)
NMRefObject::g_pBaseCmd = &g_s75SDBoardTryDev;
NMRefObject::pGlobalData = &g_s75SDDevInfo;
}
break;
case 0x07: //PXI2575多路复用器自检
{
g_sRelay2575BoardTryDev.OwnerObject(pListCtrl, &g_sRelay2575DevInfo);
if (omFace == nOpMode) g_sRelay2575BoardTryDev.SwitchFace(new CRelayBoardFace);
else nImageIndex = g_sRelay2575BoardTryDev.TryHWTest();
NMRefObject::g_pBaseCmd = &g_sRelay2575BoardTryDev;
NMRefObject::pGlobalData = &g_sRelay2575DevInfo;
}
break;
case 0x08: //PXI2565 SPST继电器自检
{
g_sRelay2565BoardTryDev.OwnerObject(pListCtrl, &g_sRelay2565DevInfo);
if (omFace == nOpMode) g_sRelay2565BoardTryDev.SwitchFace(new CRelayBoardFace);
else nImageIndex = g_sRelay2565BoardTryDev.TryHWTest();
NMRefObject::g_pBaseCmd = &g_sRelay2565BoardTryDev;
NMRefObject::pGlobalData = &g_sRelay2565DevInfo;
}
break;
case 0x09: //PXI2527多路复用器自检
{
g_sRelay2527BoardTryDev.OwnerObject(pListCtrl, &g_sRelay2527DevInfo);
if (omFace == nOpMode) g_sRelay2527BoardTryDev.SwitchFace(new CRelayBoardFace);
else nImageIndex = g_sRelay2527BoardTryDev.TryHWTest();
NMRefObject::g_pBaseCmd = &g_sRelay2527BoardTryDev;
NMRefObject::pGlobalData = &g_sRelay2527DevInfo;
}
break;
case 0x0A: //PXI6508
{
g_sRelay6508BoardTryDev.OwnerObject(pListCtrl, &g_sRelay6508DevInfo);
if (omFace == nOpMode) g_sRelay6508BoardTryDev.SwitchFace(new CDIOBoardFace);
else nImageIndex = g_sRelay6508BoardTryDev.TryHWTest();
NMRefObject::g_pBaseCmd = &g_sRelay6508BoardTryDev;
NMRefObject::pGlobalData = &g_sRelay6508DevInfo;
}
break;
}
if (htImage != NULL)
pTreeCtrl->SetItemImage(htImage, nImageIndex, nImageIndex);
}
} //end namespace AirStutNSP
//预处理全局变量
#include "FeatureImpl.h"
static int g_dmmMeasType[5] = {PXIDMMDevResultMiscelInfo::dcVolType/*直流电压*/,
PXIDMMDevResultMiscelInfo::acVolType/*交流电压*/,
PXIDMMDevResultMiscelInfo::OmType/*电阻测量*/,
PXIDMMDevResultMiscelInfo::dcCurrType/*直流电流*/,
PXIDMMDevResultMiscelInfo::acCurrType/*交流电流*/};
static float g_dmmMeasStd[5] = {5.0f, 5.0f, 10000.0f, 0.1f, 0.1f};
static float g_dmmMeasErr[5] = {0.8f, 0.8f, 1000.0f, 0.02f, 0.02f};
BOOL ProcessGlobalArgs()
{
TRY
{
/////////////////////////////////////////////////
//1.ARINC429模块
AirStutNSP::g_sARINC429DevInfo.nActualChnl = 2;
AirStutNSP::g_sARINC429DevInfo.txChnls[0] = 1;
AirStutNSP::g_sARINC429DevInfo.rxChnls[0] = 2;
AirStutNSP::g_sARINC429DevInfo.txChnls[1] = 3;
AirStutNSP::g_sARINC429DevInfo.rxChnls[1] = 4;
/////////////////////////////////////////////////
//2.万用表模块
AirStutNSP::g_sDMMDevInfo.nActualItemNum = 5;
::memcpy(AirStutNSP::g_sDMMDevInfo.szResource, _T("PXISLOT5"), strlen(_T("PXISLOT5")));
AirStutNSP::_PXI4071_MemResource_Allocate();
for (int hh=0; hh<AirStutNSP::g_sDMMDevInfo.nActualItemNum; hh++)
{
AirStutNSP::g_sDMMDevInfo.sItemObj[hh].StdVal = g_dmmMeasStd[hh]; //标准值
AirStutNSP::g_sDMMDevInfo.sItemObj[hh].ErrVal = g_dmmMeasErr[hh]; //误差值
AirStutNSP::g_sDMMDevInfo.sItemObj[hh].sHidItemInfo.nMeasType = g_dmmMeasType[hh];
AirStutNSP::_PXI4071_Run(hh, AirStutNSP::g_sDMMDevInfo.sItemObj[hh].szHIDItemLabel,
AirStutNSP::g_sDMMDevInfo.sItemObj[hh].sHidItemInfo.nRelayNo/*适配箱继电器*/,
&AirStutNSP::g_sDMMDevInfo.sItemObj[hh].sHidItemInfo.nActualRelayNum/*适配箱继电器数*/);
}
/////////////////////////////////////////////////
//3.示波器模块
AirStutNSP::g_sScopeDevInfo.nActualItemNum = 2;
::memcpy(AirStutNSP::g_sScopeDevInfo.szResource, _T("PXISLOT3"), strlen(_T("PXISLOT3")));
AirStutNSP::_PXI5112_MemResource_Allocate();
AirStutNSP::_PXI5112_Run(0, AirStutNSP::g_sScopeDevInfo.sItemObj[0].szHIDItemLabel/*名称*/,
AirStutNSP::g_sScopeDevInfo.sItemObj[0].sRelayItem.nRelayNo,
&AirStutNSP::g_sScopeDevInfo.sItemObj[0].sRelayItem.nActualRelayNum);
AirStutNSP::g_sScopeDevInfo.sItemObj[0].sHidItemInfo.nChnlNo = 0;
AirStutNSP::g_sScopeDevInfo.sItemObj[0].StdVal = 10.0f;
AirStutNSP::g_sScopeDevInfo.sItemObj[0].ErrVal = 1.0f;
AirStutNSP::_PXI5112_Run(1, AirStutNSP::g_sScopeDevInfo.sItemObj[1].szHIDItemLabel/*名称*/,
AirStutNSP::g_sScopeDevInfo.sItemObj[1].sRelayItem.nRelayNo,
&(AirStutNSP::g_sScopeDevInfo.sItemObj[1].sRelayItem.nActualRelayNum));
AirStutNSP::g_sScopeDevInfo.sItemObj[1].sHidItemInfo.nChnlNo = 1;
AirStutNSP::g_sScopeDevInfo.sItemObj[1].StdVal = 10.0f;
AirStutNSP::g_sScopeDevInfo.sItemObj[1].ErrVal = 1.0f;
////////////////////////////////////////////////
//4.板卡状态
AirStutNSP::g_sPXIDeviceMiscelInfo.nActualDeviceNum = 8;
//::memcpy(AirStutNSP::g_sPXIDeviceMiscelInfo.sLastDeviceObj[0].szResource, _T("PXISLOT3"), strlen(_T("PXISLOT3")));
::memcpy(AirStutNSP::g_sPXIDeviceMiscelInfo.sLastDeviceObj[0].szName, _T("Scope5112"), strlen(_T("Scope5112")));
//::memcpy(AirStutNSP::g_sPXIDeviceMiscelInfo.sLastDeviceObj[1].szResource, _T("PXI4071"), strlen(_T("PXI4071")));
::memcpy(AirStutNSP::g_sPXIDeviceMiscelInfo.sLastDeviceObj[1].szName, _T("DMM4071"), strlen(_T("DMM4071")));
//ARINC429
AirStutNSP::g_sPXIDeviceMiscelInfo.sLastDeviceObj[2].nMaxDeviceNo = 0;
AirStutNSP::g_sARINC429DevInfo.nDevice = 0;
::memcpy(AirStutNSP::g_sPXIDeviceMiscelInfo.sLastDeviceObj[2].szName, _T("ARINC429"), strlen(_T("ARINC429")));
//75SD
AirStutNSP::g_sPXIDeviceMiscelInfo.sLastDeviceObj[3].nMaxDeviceNo = 0;
AirStutNSP::g_s75SDDevInfo.nDevice = 0;
::memcpy(AirStutNSP::g_sPXIDeviceMiscelInfo.sLastDeviceObj[3].szName, _T("75SD模块"), strlen(_T("75SD模块")));
//
::memcpy(AirStutNSP::g_sRelay2575DevInfo.szResource, _T("PXI2575"), strlen(_T("PXI2575")));
//::memcpy(AirStutNSP::g_sPXIDeviceMiscelInfo.sLastDeviceObj[4].szResource, _T("PXI2575"), strlen(_T("PXI2575")));
::memcpy(AirStutNSP::g_sPXIDeviceMiscelInfo.sLastDeviceObj[4].szName, _T("继电器2575"), strlen(_T("继电器2575")));
//
::memcpy(AirStutNSP::g_sRelay2565DevInfo.szResource, _T("PXI2565"), strlen(_T("PXI2565")));
//::memcpy(AirStutNSP::g_sPXIDeviceMiscelInfo.sLastDeviceObj[5].szResource, _T("PXI2565"), strlen(_T("PXI2565")));
::memcpy(AirStutNSP::g_sPXIDeviceMiscelInfo.sLastDeviceObj[5].szName, _T("继电器2565"), strlen(_T("继电器2565")));
//
::memcpy(AirStutNSP::g_sRelay2527DevInfo.szResource, _T("PXI2527"), strlen(_T("PXI2527")));
//::memcpy(AirStutNSP::g_sPXIDeviceMiscelInfo.sLastDeviceObj[6].szResource, _T("PXI2527"), strlen(_T("PXI2527")));
::memcpy(AirStutNSP::g_sPXIDeviceMiscelInfo.sLastDeviceObj[6].szName, _T("继电器2527"), strlen(_T("继电器2527")));
//
AirStutNSP::g_sRelay6508DevInfo.nMaxDeviceNo = 3;
::memcpy(AirStutNSP::g_sRelay6508DevInfo.szResource, _T("PXI6508"), strlen(_T("PXI6508")));
::memcpy(AirStutNSP::g_sPXIDeviceMiscelInfo.sLastDeviceObj[7].szName, _T("数字IO PXI6508"), strlen(_T("数字IO PXI6508")));
//////////////////////////////////////////////////////////////////////////////
//5.继电器模块的通道-PXI2527
AirStutNSP::g_sRelay2527DevInfo.nActualItemNum = 9; //通道数
AirStutNSP::_PXI2527_MemResource_Allocate();
for (int k1=0; k1<7; k1++) //测电压的9项
{
//检测通道信息
AirStutNSP::g_sRelay2527DevInfo.sItemObj[k1].sHidItemInfo.nMeasType = PXIRelayDevResultMiscelInfo::dcVolType; //直流电压
//判据
AirStutNSP::g_sRelay2527DevInfo.sItemObj[k1].StdVal = 5.0f; //标准值
AirStutNSP::g_sRelay2527DevInfo.sItemObj[k1].ErrVal = 0.5f; //误差值
//
AirStutNSP::_PXI2527_Run(k1, AirStutNSP::g_sRelay2527DevInfo.sItemObj[k1].szHIDItemLabel,
AirStutNSP::g_sRelay2527DevInfo.sItemObj[k1].sRelayItem.nRelayNo,
&AirStutNSP::g_sRelay2527DevInfo.sItemObj[k1].sRelayItem.nActualRelayNum,
AirStutNSP::g_sRelay2527DevInfo.sItemObj[k1].sHidItemInfo.nChnlNo,
&AirStutNSP::g_sRelay2527DevInfo.sItemObj[k1].sHidItemInfo.nActualNum);
}
for (int kk1=7; kk1<9; kk1++) //测电阻的2项
{
AirStutNSP::g_sRelay2527DevInfo.sItemObj[kk1].sHidItemInfo.nMeasType = PXIRelayDevResultMiscelInfo::OmType; //电阻
//检测标准
AirStutNSP::g_sRelay2527DevInfo.sItemObj[kk1].StdVal = 10000.0f; //标准值
AirStutNSP::g_sRelay2527DevInfo.sItemObj[kk1].ErrVal = 800.0f; //误差值
//
AirStutNSP::_PXI2527_Run(kk1, AirStutNSP::g_sRelay2527DevInfo.sItemObj[kk1].szHIDItemLabel,
AirStutNSP::g_sRelay2527DevInfo.sItemObj[kk1].sRelayItem.nRelayNo,
&AirStutNSP::g_sRelay2527DevInfo.sItemObj[kk1].sRelayItem.nActualRelayNum,
AirStutNSP::g_sRelay2527DevInfo.sItemObj[kk1].sHidItemInfo.nChnlNo,
&AirStutNSP::g_sRelay2527DevInfo.sItemObj[kk1].sHidItemInfo.nActualNum);
}
//////////////////////////////////////////////////////////////////////////////
///6.PXI2575定义。
AirStutNSP::g_sRelay2575DevInfo.nActualItemNum = 11;
AirStutNSP::_PXI2575_MemResource_Allocate();
for (int k2=0; k2<9; k2++) //测电压的9项
{
//检测通道信息
AirStutNSP::g_sRelay2575DevInfo.sItemObj[k2].sHidItemInfo.nMeasType = PXIRelayDevResultMiscelInfo::dcVolType; //直流电压
//判据
AirStutNSP::g_sRelay2575DevInfo.sItemObj[k2].StdVal = 5.0f; //标准值
AirStutNSP::g_sRelay2575DevInfo.sItemObj[k2].ErrVal = 0.5f; //误差值
//
AirStutNSP::_PXI2575_Run(k2, AirStutNSP::g_sRelay2575DevInfo.sItemObj[k2].szHIDItemLabel,
AirStutNSP::g_sRelay2575DevInfo.sItemObj[k2].sRelayItem.nRelayNo,
&AirStutNSP::g_sRelay2575DevInfo.sItemObj[k2].sRelayItem.nActualRelayNum,
AirStutNSP::g_sRelay2575DevInfo.sItemObj[k2].sHidItemInfo.nChnlNo,
&AirStutNSP::g_sRelay2575DevInfo.sItemObj[k2].sHidItemInfo.nActualNum);
}
for (int kk2=9; kk2<11; kk2++) //测电阻的2项
{
AirStutNSP::g_sRelay2575DevInfo.sItemObj[kk2].sHidItemInfo.nMeasType = PXIRelayDevResultMiscelInfo::OmType; //电阻
//检测标准
AirStutNSP::g_sRelay2575DevInfo.sItemObj[kk2].StdVal = 10000.0f; //标准值
AirStutNSP::g_sRelay2575DevInfo.sItemObj[kk2].ErrVal = 800.0f; //误差值
//
AirStutNSP::_PXI2575_Run(kk2, AirStutNSP::g_sRelay2575DevInfo.sItemObj[kk2].szHIDItemLabel,
AirStutNSP::g_sRelay2575DevInfo.sItemObj[kk2].sRelayItem.nRelayNo,
&AirStutNSP::g_sRelay2575DevInfo.sItemObj[kk2].sRelayItem.nActualRelayNum,
AirStutNSP::g_sRelay2575DevInfo.sItemObj[kk2].sHidItemInfo.nChnlNo,
&AirStutNSP::g_sRelay2575DevInfo.sItemObj[kk2].sHidItemInfo.nActualNum);
}
////////////////////////////////////////////////////////////////////////////
//7.PXIPXI2565
AirStutNSP::g_sRelay2565DevInfo.nActualItemNum = 2; //
AirStutNSP::_PXI2565_MemResource_Allocate();
AirStutNSP::g_sRelay2565DevInfo.sItemObj[0].sHidItemInfo.nMeasType = PXIRelayDevResultMiscelInfo::dcVolType; //直流电压
AirStutNSP::g_sRelay2565DevInfo.sItemObj[0].StdVal = 5.0f; //标准值
AirStutNSP::g_sRelay2565DevInfo.sItemObj[0].ErrVal = 0.5f; //误差值
AirStutNSP::_PXI2565_Run(0, AirStutNSP::g_sRelay2565DevInfo.sItemObj[0].szHIDItemLabel,
AirStutNSP::g_sRelay2565DevInfo.sItemObj[0].sRelayItem.nRelayNo,
&AirStutNSP::g_sRelay2565DevInfo.sItemObj[0].sRelayItem.nActualRelayNum,
AirStutNSP::g_sRelay2565DevInfo.sItemObj[0].sHidItemInfo.nChnlNo,
&AirStutNSP::g_sRelay2565DevInfo.sItemObj[0].sHidItemInfo.nActualNum);
//检测标准
AirStutNSP::g_sRelay2565DevInfo.sItemObj[1].sHidItemInfo.nMeasType = PXIRelayDevResultMiscelInfo::OmType; //电阻
AirStutNSP::g_sRelay2565DevInfo.sItemObj[1].StdVal = 10000.0f; //标准值
AirStutNSP::g_sRelay2565DevInfo.sItemObj[1].ErrVal = 800.0f; //误差值
AirStutNSP::_PXI2565_Run(1, AirStutNSP::g_sRelay2565DevInfo.sItemObj[1].szHIDItemLabel,
AirStutNSP::g_sRelay2565DevInfo.sItemObj[1].sRelayItem.nRelayNo/*适配箱继电器*/,
&AirStutNSP::g_sRelay2565DevInfo.sItemObj[1].sRelayItem.nActualRelayNum/*适配箱继电器数*/,
AirStutNSP::g_sRelay2565DevInfo.sItemObj[1].sHidItemInfo.nChnlNo,/*通道*/
&AirStutNSP::g_sRelay2565DevInfo.sItemObj[1].sHidItemInfo.nActualNum/*通道数*/);
////////////////////////////////////////////////////////////////////////////
//8.PXI6508
AirStutNSP::g_sRelay6508DevInfo.nActualItemNum = MAXPXI6508FEATUREHOOKNUM; //
AirStutNSP::_PXI6508_MemResource_Allocate();
for (int k3=0; k3<MAXPXI6508FEATUREHOOKNUM; k3++)
{
AirStutNSP::_PXI6508_Run(k3, (char *)AirStutNSP::g_sRelay6508DevInfo.sItemObj[k3].szHIDItemLabel,
AirStutNSP::g_sRelay6508DevInfo.sItemObj[k3].nChnlNo,
&AirStutNSP::g_sRelay6508DevInfo.sItemObj[k3].nChnlNum);
}
//////////////////////////////////////////////////////////////////////////////////////////
//9.75SD旋变模块
AirStutNSP::g_s75SDDevInfo.nActualItemNum = 3;
AirStutNSP::_PXI75SD_MemResource_Allocate();
for (int h=0; h<AirStutNSP::g_s75SDDevInfo.nActualItemNum; h++)
AirStutNSP::_PXI75SD_Run(h, AirStutNSP::g_s75SDDevInfo.sItemObj[h].szHIDItemLabel,
AirStutNSP::g_s75SDDevInfo.sItemObj[h].sHidItemInfo.nRelayNo/*适配箱继电器*/,
&AirStutNSP::g_s75SDDevInfo.sItemObj[h].sHidItemInfo.nActualRelayNum/*适配箱继电器数*/);
//////////////////////////////////////////////////////////////////////////////////////////
//10.RS232串口
AirStutNSP::g_sSerialPortInfo.nActualSPNum = 2;
AirStutNSP::g_sSerialPortInfo.sRS232ItemInfo[0].nSendPortNo = 1;
AirStutNSP::g_sSerialPortInfo.sRS232ItemInfo[0].nRecvPortNo = 1;
AirStutNSP::g_sSerialPortInfo.sRS232ItemInfo[1].nSendPortNo = 2;
AirStutNSP::g_sSerialPortInfo.sRS232ItemInfo[1].nRecvPortNo = 2;
}
CATCH_ALL(e)
{
return FALSE;
}
END_CATCH_ALL
return TRUE;
};
namespace NMDetailResult
{
static CString g_sResultMsg;
CString g_TmpResult;
#define BITGETRESULT(IsOK) IsOK?"\"成功\"":"\"失败\""
LPCTSTR _ShowBitItemResult(int nType)
{
switch(nType) {
case 0x01: //模块的状态自检
{
PXIDeviceResultMiscelInfo *pResultData = static_cast<PXIDeviceResultMiscelInfo *>(NMRefObject::pGlobalData);
if (pResultData == NULL) return "";
//总结论!
g_sResultMsg.Format("模块状态自检结果 %s。\n\n", BITGETRESULT(pResultData->bWholeResult));
//每项结果!
for(int k=0; k<pResultData->nActualDeviceNum; k++)
{
g_TmpResult.Format(" %d> 模块%s的自检 %s。\n", k+1, pResultData->sLastDeviceObj[k].szName,
BITGETRESULT(pResultData->sLastDeviceObj[k].bBitPass));
g_sResultMsg += g_TmpResult;
}
}
break;
case 0x02: //串口自检
{
SerialPrtResultMiscelInfo *pResultData = static_cast<SerialPrtResultMiscelInfo *>(NMRefObject::pGlobalData);
if (pResultData == NULL) return "";
//总结论!
g_sResultMsg.Format("串口自检结果 %s。\n\n", BITGETRESULT(pResultData->bWholeResult));
//每项结果!
for(int k=0; k<pResultData->nActualSPNum; k++)
{
g_TmpResult.Format(" %d> 串口%d->串口%d的自检 %s。\n", k+1, pResultData->sRS232ItemInfo[k].nSendPortNo, pResultData->sRS232ItemInfo[k].nRecvPortNo
, BITGETRESULT(pResultData->sRS232ItemInfo[k].bPass));
g_sResultMsg += g_TmpResult;
}
}
break;
case 0x03: //示波器模块自检
{
PXIScopeDevResultMiscelInfo *pResultData = static_cast<PXIScopeDevResultMiscelInfo *>(NMRefObject::pGlobalData);
if (pResultData == NULL) return "";
//总结论!
g_sResultMsg.Format("示波器模块自检结果 %s。\n\n", BITGETRESULT(pResultData->bWholeResult));
//每项结果!
for(int k=0; k<pResultData->nActualItemNum; k++)
{
g_TmpResult.Format(" %d> 通道%d的自检 %s。\n", k+1, pResultData->sItemObj[k].sHidItemInfo.nChnlNo,
BITGETRESULT(pResultData->sItemObj[k].bPass));
g_sResultMsg += g_TmpResult;
}
}
break;
case 0x04: //DMM模块自检
{
PXIDMMDevResultMiscelInfo *pResultData = static_cast<PXIDMMDevResultMiscelInfo *>(NMRefObject::pGlobalData);
if (pResultData == NULL) return "";
//总结论!
g_sResultMsg.Format("万用表模块自检结果 %s。\n\n", BITGETRESULT(pResultData->bWholeResult));
//每项结果!
for(int k=0; k<pResultData->nActualItemNum; k++)
{
g_TmpResult.Format(" %d> 通道0的自检 %s。\n", k+1, BITGETRESULT(pResultData->sItemObj[k].bPass));
g_sResultMsg += g_TmpResult;
}
}
break;
case 0x05: //429模块自检
{
ARINC429ResultMiscelInfo *pResultData = static_cast<ARINC429ResultMiscelInfo *>(NMRefObject::pGlobalData);
if (pResultData == NULL) return "";
//总结论!
g_sResultMsg.Format("ARINC429模块自检结果 %s。\n\n", BITGETRESULT(pResultData->bWholeResult));
//每项结果!
for(int k=0; k<pResultData->nActualChnl; k++)
{
g_TmpResult.Format(" %d> 通道%d->通道%d的自检 %s。\n", k+1, pResultData->txChnls[k], pResultData->rxChnls[k]
, BITGETRESULT(pResultData->ChnlResult[k]));
g_sResultMsg += g_TmpResult;
}
}
break;
case 0x06: //75SD模块自检
{
_75SDResultMiscelInfo *pResultData = static_cast<_75SDResultMiscelInfo *>(NMRefObject::pGlobalData);
if (pResultData == NULL) return "";
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -