cdl读配置文件
1、读配置文件
InitDllParam--
return ReloadINIConfig(dutType, config)--
return CDataSet::GetInstance()->ReloadALLConfig(dutType, config)--
ReloadConfigUsingFileName(strConfig, dutType, bobRead)--
if (-1 != strConfig.Find("SIM_GN25L95")) { CConfigInfo::GetInstance()->KeepInfo("CDutSIMGN25L95::ReloadConfig"); bobType = DLL_BOB_SIM_GN25L95; bReturn = CDutSIMGN25L95::ReloadConfig(strConfig); }
BOOL CDutGN25L95::ReloadConfig(CString strConfig) { g_ReadGN25L95Set = TRUE; CString fileName = g_GN25L95; CConfigInfo::DelInstance (); CConfigInfo::g_bobtype = DLL_BOB_GN25L95; if (FALSE == CConfigInfo::GetInstance()->GetAllConfig(strConfig, g_AllConfig)) { MessageBox("配置文件加载失败"); return FALSE; } return TRUE; }
GetAllConfig
typedef struct AllConfig//4/3 { vector <AllConfigItem> AllConfigItem_by_BOSA; CString BOSA_type; }AllConfig; typedef struct AllConfigItem//4/3 { SetUpConfig BoardInfo_APC_Config; MODLUT MODLUT_Config;//279511用 MODLUT Modlut_Config;//Semtech芯片用 vector<DDMIReport>DDMI_Config; CString Json_Config; RXPowerSet RxStandard_Config; SLosCfg UX3360Los_Config; //vector<CString> Save_Reg_Config; CRSSISet APDLut_Config; CString PonType; CString ProductType; CString ChipType; CString BoardCode; CString ChipType2;//20230504 @@@configXfile=传递的第二个驱动芯片型号,用于279511和25L95兼容产测 }AllConfigItem;
BOOL CConfigInfo::GetAllConfig(CString strConfig, vector<AllConfig>& vec)//4/3 { CString ExcelfileName = ""; int pos = -1; vector<CString> AllBOSA_ConfigfileName_vec;//当前目录所有配置文件 AllBOSA_ConfigfileName_vec.clear(); AllConfig AllConfig_cell; vector<AllConfigItem> AllConfigItem_vec;//包含使用该BOSA(即该配置文件)的所有产品型号的配置信息,就是AllConfig_cell的一部分,临时变量 AllConfigItem_vec.clear(); vec.clear(); if (FALSE == Get_AllBOSA_ConfigfileName(AllBOSA_ConfigfileName_vec)) { WriteLog(LOG_ERROR, "CConfigInfo::GetAllConfig 查找配置文件失败"); return FALSE; } for (size_t i = 0; i < AllBOSA_ConfigfileName_vec.size(); i++)//每个配置文件 { ExcelfileName = AllBOSA_ConfigfileName_vec[i].Mid(AllBOSA_ConfigfileName_vec[i].Find(AllBOSA_ConfigfileName_vec[i]) + m_configPath.GetLength()); pos = ExcelfileName.Find("_CONFIG"); if (-1 == pos) { WriteLog(LOG_ERROR, "CConfigInfo::GetAllConfig _CONFIG no found, Check ExcelfileName, error"); return FALSE; } else if (3 == pos) { AllConfig_cell.BOSA_type = ExcelfileName.Left(3); } else { AllConfig_cell.BOSA_type = ExcelfileName.Left(4); } if (FALSE == GetAllConfig_BOSA(strConfig, AllBOSA_ConfigfileName_vec[i], AllConfigItem_vec)) { WriteLog(LOG_ERROR, "CConfigInfo::GetAllConfig 获取%s的配置数据失败", AllBOSA_ConfigfileName_vec[i]); return FALSE; } else { WriteLog(LOG_INFO, "CConfigInfo::GetAllConfig 获取%s的配置数据成功", AllBOSA_ConfigfileName_vec[i]); WriteLog(LOG_INFO, "\n\n\n\n\n"); } AllConfig_cell.AllConfigItem_by_BOSA = AllConfigItem_vec; vec.push_back(AllConfig_cell);//将这个bosa的配置文件扫描的结果放进vec AllConfigItem_vec.clear(); } WriteLog(LOG_INFO, "CConfigInfo::GetAllConfig succ"); return TRUE; }
BOOL CConfigInfo::GetAllConfig_BOSA(CString strConfig, CString Filename, vector<AllConfigItem>& AllConfigItem_vec)//4/3 { AllConfigItem_vec.clear(); AllConfigItem AllConfigItem_by_Product; CString file = Filename; vector<CString> AllProductName_vector; AllProductName_vector.clear(); vector<CString> AllConfigItem_vector; AllConfigItem_vector.clear(); CString AllProductColumnName = ""; CString AllConfigItemName = ""; CString ColumnName = ""; CString strTmp = ""; CString Content = ""; CString DecodeValue = ""; int Max_Row = 0; int Max_Column = 0; int configitem_column = 0; WriteLog(LOG_INFO, "CConfigInfo::GetAllConfig_BOSA 开始读取%s的所有配置信息", file); //if (-1 == ::GetFileAttributes(file))//获取Windows文件属性 //{ // WriteLog(LOG_ERROR, "CConfigInfo::GetAllConfig_BOSA file:%s can't be read, error", file); // return FALSE; //} if (FALSE == InitExcelApp())//zhin { WriteLog(LOG_ERROR, "Init excel app fail"); return FALSE; } //file = "D:\\MAT\\MAT_Start\\28433\\DeskSoft\\Products\\MTE_FM_CPE\\MTE_FM_CPE\\CPE_DESK_SOFT\\HT-2in1V01.03.16B2\\ConfigBOB\\NKEY_CONFIG.xlsx"; if (FALSE == ConfirmParaFile(file)) { WriteLog(LOG_ERROR, "CConfigInfo::GetAllConfig_BOSA ConfirmParaFile: %s , error", file); return FALSE; } SetUpConfig data_SetUpConfig; vector<DDMIReport> data_DDMIReport; CString Data_JsonConfig; CRSSISet data_CRSSISet; RXPowerSet data_RXPowerSet; SLosCfg data_ux3360Los; MODLUT data_MODLUT;//279511用 MODLUT data_Modlut;//Semtech用 vector<CString> data_SaveReg; if (0 == Max_Row)//找excel文件行数 { Max_Row = GetTableLine(); if (Max_Row <= 0) { WriteLog(LOG_ERROR, "CConfigInfo::GetAllConfig_BOSA %s Max_Row <= 0", file); CloseParaFile(); ExitExcelApp(); return FALSE; } WriteLog(LOG_INFO, "CConfigInfo::GetAllConfig_BOSA %s的最大行数:%d", file, Max_Row); } if (0 == Max_Column)//找excel文件列数 { Max_Column = GetTableMaxColumn(); if (Max_Column <= 0) { WriteLog(LOG_ERROR, "CConfigInfo::GetAllConfig_BOSA %s Max_Column<=0", file); CloseParaFile(); ExitExcelApp(); return FALSE; } WriteLog(LOG_INFO, "CConfigInfo::GetAllConfig_BOSA %s的最大列数:%d", file, Max_Column); } if (0 == configitem_column)//找到指标符号所在列 { configitem_column = GetTableColumn_contain("指标符号");//Excel中列号从1开始 if (-1 == configitem_column) { WriteLog(LOG_ERROR, "CConfigInfo::GetAllConfig_BOSA %s未找到指标符号列", file); CloseParaFile(); ExitExcelApp(); return FALSE; } WriteLog(LOG_INFO, "CConfigInfo::GetAllConfig_BOSA %s的指标符号所在列:%d", file, configitem_column); } if (0 == AllProductName_vector.size())//找到所有产品列名 { for (int j = 7; j <= Max_Column; j++) { if (FALSE == GetTableColumnName(j, ColumnName)) { WriteLog(LOG_ERROR, "CConfigInfo::GetAllConfig_BOSA 获取第%d列列名失败", j); CloseParaFile(); ExitExcelApp(); return FALSE; } AllProductName_vector.push_back(ColumnName); strTmp.Format("%s; ", ColumnName); AllProductColumnName += strTmp; } WriteLog(LOG_INFO, "CConfigInfo::GetAllConfig_BOSA %s的所有产品型号为:%s", file, AllProductColumnName); } if (0 == AllConfigItem_vector.size())//配置文件所有指标符号的集合 { for (int lineno = 2; lineno <= Max_Row; lineno++) { if (FALSE == ReadConfigNameFromExcel(lineno, configitem_column, Content)) { CloseParaFile(); ExitExcelApp(); return FALSE; } if ("" != Content && TRUE == CDataSet::g_bTWaiXieCALL_FZteCALL) { if (FALSE == Decode(Content, DecodeValue)) { return FALSE; } Content = DecodeValue; } AllConfigItem_vector.push_back(Content); strTmp.Format("%s; ", Content); AllConfigItemName += strTmp; } WriteLog(LOG_INFO, "CConfigInfo::GetAllConfig_BOSA %s的所有指标符号为:%s", file, AllConfigItemName); } for (size_t i = 0; i < AllProductName_vector.size(); i++) { WriteLog(LOG_INFO, "CConfigInfo::GetAllConfig_BOSA 开始读取%s中信息%s产品型号的配置信息", file, AllProductName_vector[i]); //获取三温程序或者产线传递的信息,根据三温程序或者产线传递的信息去每个bosa配置文件的所有列中匹配,以找到对应的产品型号 if (-1 != strConfig.Find("PON"))//三温程序传递ex:XGPON_GN28L95,所内调试根据PonType和ChipType 来在每个bosa的数据中寻找 { AllConfigItem_by_Product.PonType = strConfig.Left(strConfig.Find("_")); AllConfigItem_by_Product.ChipType = strConfig.Mid(strConfig.Find("_") + 1); WriteLog(LOG_INFO, "当前为所内调试,三温程序传递信息为:%s_%s", AllConfigItem_by_Product.PonType, AllConfigItem_by_Product.ChipType); } else//产线传递ex://strConfig = "F7610U_GN28L97_127307051002";,产线根据127307051002等关键词来在每个bosa的数据中寻找,并校验ChipType { AllConfigItem_by_Product.ProductType = strConfig.Left(strConfig.Find("_")); strTmp = strConfig.Mid(strConfig.Find("_") + 1); AllConfigItem_by_Product.ChipType = strTmp.Left(strTmp.Find("_")); AllConfigItem_by_Product.BoardCode = strTmp.Mid(strTmp.Find("_") + 1); WriteLog(LOG_INFO, "当前为产线测试,产线程序传递信息为:%s_%s_%s", AllConfigItem_by_Product.ProductType, AllConfigItem_by_Product.ChipType, AllConfigItem_by_Product.BoardCode); } //读取该单板型号的单板信息与APC方案 if (FALSE == ReadSetUpConfig(file, AllConfigItem_vector, i+7, data_SetUpConfig)) { WriteLog(LOG_ERROR, "CConfigInfo::GetAllConfig_BOSA ReadSetUpConfig error"); CloseParaFile(); ExitExcelApp(); return FALSE; } AllConfigItem_by_Product.BoardInfo_APC_Config = data_SetUpConfig; //读取该单板型号的APOLUT信息 if (FALSE == ReadRSSIRangeVecotr(file, AllConfigItem_vector, i + 7, data_CRSSISet)) { WriteLog(LOG_ERROR, "CConfigInfo::GetAllConfig_BOSA ReadRSSIRangeVecotr error"); CloseParaFile(); ExitExcelApp(); return FALSE; } AllConfigItem_by_Product.APDLut_Config = data_CRSSISet; //读取该单板型号的电流功率等信息 if (FALSE == ReadCPEConfig(file, AllConfigItem_vector, i + 7, data_DDMIReport, Data_JsonConfig)) { WriteLog(LOG_ERROR, "CConfigInfo::GetAllConfig_BOSA ReadCPEConfig error"); CloseParaFile(); ExitExcelApp(); return FALSE; } AllConfigItem_by_Product.DDMI_Config = data_DDMIReport; AllConfigItem_by_Product.Json_Config = Data_JsonConfig; int col = i + 7; CString strDrive_Type = GetExcelInfoStr(file, AllConfigItem_vector, col, "DRIVER类型", "");//3/7 DLL_BOB_TYPE eModlutbobtype = getBobType(strDrive_Type); if (/*DLL_BOB_ZX279511 == g_bobtype || */DLL_BOB_UX3360 == eModlutbobtype || DLL_BOB_UX3326 == eModlutbobtype || DLL_BOB_UX3361 == eModlutbobtype|| DLL_BOB_UX3322 == eModlutbobtype || DLL_BOB_UX3326S == eModlutbobtype || DLL_BOB_UX3368 == eModlutbobtype || DLL_BOB_TSO40201 == eModlutbobtype || DLL_BOB_TSO40402 == eModlutbobtype)//先这样处理吧 DLL_BOB_TSO40201没有modlut { //读取279511单板型号的MODLUT信息 if (FALSE == ReadMODLUTConfig(file, AllConfigItem_vector, i + 7, data_MODLUT)) { WriteLog(LOG_ERROR, "CConfigInfo::GetAllConfig_BOSA ReadMODLUTConfig error"); CloseParaFile(); ExitExcelApp(); return FALSE; } AllConfigItem_by_Product.MODLUT_Config = data_MODLUT; } else { //读取Semtech单板型号的Modlut信息 if (FALSE == ReadModLutConfig(file, AllConfigItem_vector, i + 7, data_Modlut)) { WriteLog(LOG_ERROR, "CConfigInfo::GetAllConfig_BOSA ReadModLutConfig error"); CloseParaFile(); ExitExcelApp(); return FALSE; } AllConfigItem_by_Product.Modlut_Config = data_Modlut; } //读取该单板型号的RX标定信息 if (FALSE == ReadRxStandardConfig(file, AllConfigItem_vector, i + 7, data_RXPowerSet)) { WriteLog(LOG_ERROR, "CConfigInfo::GetAllConfig_BOSA ReadRxStandardConfig error"); CloseParaFile(); ExitExcelApp(); return FALSE; } AllConfigItem_by_Product.RxStandard_Config = data_RXPowerSet; //读取该单板型号的需要保存到LOS步进信息,当前只有3360芯片的单板有 if (FALSE == ReadLosAdjustCfg(file, AllConfigItem_vector, i + 7, data_ux3360Los)) { WriteLog(LOG_ERROR, "CConfigInfo::GetAllConfig_BOSA ReadLosAdjustCfg error"); CloseParaFile(); ExitExcelApp(); return FALSE; } AllConfigItem_by_Product.UX3360Los_Config = data_ux3360Los; //读取该单板型号的需要保存到寄存器信息 //if (FALSE == ReadRegBack(file, AllConfigItem_vector, i + 7, data_SaveReg)) //{ // WriteLog(LOG_ERROR, "CConfigInfo::GetAllConfig_BOSA ReadRegBack error"); // return FALSE; //} //AllConfigItem_by_Product.Save_Reg_Config = data_SaveReg; //最后将该单板型号的所有配置数据压入vector向量 AllConfigItem_vec.push_back(AllConfigItem_by_Product); } CloseParaFile(); ExitExcelApp(); return TRUE; }
读取后的内存结构图:
g_AllConfig[m_Bosa_index].AllConfigItem_by_BOSA[m_Product_index].BoardInfo_APC_Config
配置文件位置
2、找配置时
接下来再看 CDUTSocket::SearchConfig( 具体怎么找的
for (Product_index = 0; Product_index < vec[Bosa_index].AllConfigItem_by_BOSA.size(); Product_index++) { //if (vec[Bosa_index].AllConfigItem_by_BOSA[Product_index].BoardCode == vec[Bosa_index].AllConfigItem_by_BOSA[Product_index].BoardInfo_APC_Config.m_BoardCode CString mBoardCode = vec[Bosa_index].AllConfigItem_by_BOSA[Product_index].BoardCode; WriteLog(LOG_INFO, "CDUTSocket::SearchConfig Bosa_index[%d] [%s] [%s]", Product_index, vec[Bosa_index].AllConfigItem_by_BOSA[Product_index].BoardInfo_APC_Config.m_BoardCode, mBoardCode); WriteLog(LOG_INFO, "duttype [%d] [%d]", m_DutParaIn.m_dutType, vec[Bosa_index].AllConfigItem_by_BOSA[Product_index].BoardInfo_APC_Config.m_Pon); WriteLog(LOG_INFO, "bobtype [%d] [%d]", m_DutParaIn.m_bobType,vec[Bosa_index].AllConfigItem_by_BOSA[Product_index].BoardInfo_APC_Config.m_BobChip); if (vec[Bosa_index].AllConfigItem_by_BOSA[Product_index].BoardInfo_APC_Config.m_BoardCode.Find(mBoardCode)>=0 && m_DutParaIn.m_dutType == vec[Bosa_index].AllConfigItem_by_BOSA[Product_index].BoardInfo_APC_Config.m_Pon && m_DutParaIn.m_bobType == vec[Bosa_index].AllConfigItem_by_BOSA[Product_index].BoardInfo_APC_Config.m_BobChip) { m_Res.SetResultDesc("在%s的配置文件中找到当前单板部件编码:%s和PON类型:%d的配置信息, 索引成功", vec[Bosa_index].BOSA_type, vec[Bosa_index].AllConfigItem_by_BOSA[Product_index].BoardCode, vec[Bosa_index].AllConfigItem_by_BOSA[Product_index].BoardInfo_APC_Config.m_Pon); SWProduct_index = Product_index; break; } }
GetCPEConfig --
SearchConfigFromAllConfig(Bosa_index, Product_index)--
SearchConfig(g_AllConfig, Bosa_ind
ConfigDut接口时这两个参数
InPara.m_bobType = bobType;
InPara.m_dutType = dutType;
补充完整的查找
BOOL CDUTSocket::SearchConfig(vector<AllConfig>& vec, size_t& Bosa_index, size_t& Product_index, size_t& SWBosa_index, size_t& SWProduct_index) { Bosa_index = vec.size(); CString strTmpBosaSN = m_BOSASN_LEFT; if (WMC_SANWEN == m_DutParaIn.m_WorkMode) { vector<CString> vecBtn; CString strShowDesc = ""; for (size_t i = 0; i < vec.size(); i++) { strShowDesc.Format("BOSA SN:%s ", vec[i].BOSA_type); vecBtn.push_back(strShowDesc); } if (vecBtn.size() <= 0) { m_Res.SetResultDesc(FALSE, "请检查配置文件,当前环境中不包含BOSA的配置文件"); return FALSE; } vecBtn.push_back("不知道.建议联系PO进行确认"); AFX_MANAGE_STATE(AfxGetStaticModuleState()); CDialogAPD apcLut(vecBtn, "当前环境中包含以下BOSA的配置文件"); if (apcLut.DoModal() == IDOK) { if (apcLut.Index + 1 == vecBtn.size()) { m_Res.SetResultDesc("选择不确定,用户选择退出"); } Bosa_index = apcLut.Index; SWBosa_index = Bosa_index; m_Res.SetResultDesc("用户选择[%s]", vecBtn[Bosa_index]); } else { m_Res.SetResultDesc(FALSE, "用户选择×掉窗口"); return FALSE; } for (Product_index = 0; Product_index < vec[Bosa_index].AllConfigItem_by_BOSA.size(); Product_index++) { CString PonType = vec[Bosa_index].AllConfigItem_by_BOSA[Product_index].PonType; CString m_Pon_Type = vec[Bosa_index].AllConfigItem_by_BOSA[Product_index].BoardInfo_APC_Config.m_Pon_Type; CString ChipType = vec[Bosa_index].AllConfigItem_by_BOSA[Product_index].ChipType; CString m_Drive_Type = vec[Bosa_index].AllConfigItem_by_BOSA[Product_index].BoardInfo_APC_Config.m_Drive_Type; WriteLog(LOG_INFO, "CDUTSocket::SearchConfig Bosa_index[%d] ", Product_index); WriteLog(LOG_INFO, "PonType[%s] m_Pon_Type[%s] " , PonType, m_Pon_Type); WriteLog(LOG_INFO, "ChipType[%s] m_Drive_Type[%s] ", ChipType, m_Drive_Type); if (vec[Bosa_index].AllConfigItem_by_BOSA[Product_index].PonType == vec[Bosa_index].AllConfigItem_by_BOSA[Product_index].BoardInfo_APC_Config.m_Pon_Type && vec[Bosa_index].AllConfigItem_by_BOSA[Product_index].ChipType == vec[Bosa_index].AllConfigItem_by_BOSA[Product_index].BoardInfo_APC_Config.m_Drive_Type) { SWProduct_index = Product_index; m_Res.SetResultDesc("在%s的配置文件中找到单板型号:%s_%s的配置信息", vec[Bosa_index].BOSA_type, vec[Bosa_index].AllConfigItem_by_BOSA[Product_index].PonType, vec[Bosa_index].AllConfigItem_by_BOSA[Product_index].ChipType); break; } } if (Product_index == vec[Bosa_index].AllConfigItem_by_BOSA.size()) { m_Res.SetResultDesc(FALSE, "未在%s的配置文件中找到当前单板型号的配置信息", vec[Bosa_index].BOSA_type); return FALSE; } } else { for (size_t i = 0; i < vec.size(); i++) { if (strTmpBosaSN == vec[i].BOSA_type) { Bosa_index = i; SWBosa_index = Bosa_index; m_Res.SetResultDesc("找到%s的配置文件", strTmpBosaSN); break; } } if (Bosa_index == vec.size()) { m_Res.SetResultDesc(FALSE, "未找到%s的配置文件", strTmpBosaSN); m_Res.SetItem("Search_Index_Failed", "索引指标时未找到当前BOSA的配置文件"); return FALSE; } for (Product_index = 0; Product_index < vec[Bosa_index].AllConfigItem_by_BOSA.size(); Product_index++) { //if (vec[Bosa_index].AllConfigItem_by_BOSA[Product_index].BoardCode == vec[Bosa_index].AllConfigItem_by_BOSA[Product_index].BoardInfo_APC_Config.m_BoardCode CString mBoardCode = vec[Bosa_index].AllConfigItem_by_BOSA[Product_index].BoardCode; WriteLog(LOG_INFO, "CDUTSocket::SearchConfig Bosa_index[%d] [%s] [%s]", Product_index, vec[Bosa_index].AllConfigItem_by_BOSA[Product_index].BoardInfo_APC_Config.m_BoardCode, mBoardCode); WriteLog(LOG_INFO, "duttype [%d] [%d]", m_DutParaIn.m_dutType, vec[Bosa_index].AllConfigItem_by_BOSA[Product_index].BoardInfo_APC_Config.m_Pon); WriteLog(LOG_INFO, "bobtype [%d] [%d]", m_DutParaIn.m_bobType,vec[Bosa_index].AllConfigItem_by_BOSA[Product_index].BoardInfo_APC_Config.m_BobChip); if (vec[Bosa_index].AllConfigItem_by_BOSA[Product_index].BoardInfo_APC_Config.m_BoardCode.Find(mBoardCode)>=0 && m_DutParaIn.m_dutType == vec[Bosa_index].AllConfigItem_by_BOSA[Product_index].BoardInfo_APC_Config.m_Pon && m_DutParaIn.m_bobType == vec[Bosa_index].AllConfigItem_by_BOSA[Product_index].BoardInfo_APC_Config.m_BobChip) { m_Res.SetResultDesc("在%s的配置文件中找到当前单板部件编码:%s和PON类型:%d的配置信息, 索引成功", vec[Bosa_index].BOSA_type, vec[Bosa_index].AllConfigItem_by_BOSA[Product_index].BoardCode, vec[Bosa_index].AllConfigItem_by_BOSA[Product_index].BoardInfo_APC_Config.m_Pon); SWProduct_index = Product_index; break; } } if (Product_index == vec[Bosa_index].AllConfigItem_by_BOSA.size()) { m_Res.SetResultDesc(FALSE, "未在%s的配置文件中找到当前单板部件编码:%s, 索引失败", vec[Bosa_index].BOSA_type, vec[Bosa_index].AllConfigItem_by_BOSA[0].BoardCode); m_Res.SetItem("Search_Index_Failed", "索引指标时未在当前BOSA的配置文件中找到目标指标列"); m_Res.SetResultDesc(FALSE, "当前初始化dll PON类型为%d", m_DutParaIn.m_dutType); m_Res.SetResultDesc(FALSE, "当前初始化dll 驱动芯片类型为%d", m_DutParaIn.m_bobType); return FALSE; } if (m_DutParaIn.m_dutType != DLL_GEPON_OLTGPON && m_DutParaIn.m_dutType != DLL_GEPON_OLTXGSPON){ //校验软件读取的CPUname与配置文件中对应产品所在列的CPUname是否相同 if (vec[Bosa_index].AllConfigItem_by_BOSA[Product_index].BoardInfo_APC_Config.m_PonMac != m_cputype) { m_Res.SetResultDesc(FALSE, "软件读取的CPUname:%d与配置文件中对应产品所在列的CPUname:%d冲突", m_cputype, vec[Bosa_index].AllConfigItem_by_BOSA[Product_index].BoardInfo_APC_Config.m_PonMac); m_Res.SetItem("Search_Index_Failed", "索引指标后校验PonMac冲突"); return FALSE; } } //校核产线传递的驱动芯片型号和配置文件中对应产品所在列的驱动芯片型号是否相同 if (vec[Bosa_index].AllConfigItem_by_BOSA[Product_index].ChipType == vec[Bosa_index].AllConfigItem_by_BOSA[Product_index].BoardInfo_APC_Config.m_Drive_Type) { m_Res.SetResultDesc("%s中的驱动芯片:%s,与产线传递信息: %s相同,校验成功", vec[Bosa_index].AllConfigItem_by_BOSA[Product_index].ProductType, vec[Bosa_index].AllConfigItem_by_BOSA[Product_index].BoardInfo_APC_Config.m_Drive_Type, vec[Bosa_index].AllConfigItem_by_BOSA[Product_index].ChipType); } else if (vec[Bosa_index].AllConfigItem_by_BOSA[Product_index].ChipType2 == vec[Bosa_index].AllConfigItem_by_BOSA[Product_index].BoardInfo_APC_Config.m_Drive_Type) { m_Res.SetResultDesc("%s中的驱动芯片:%s,与产线传递信息: %s相同,校验成功", vec[Bosa_index].AllConfigItem_by_BOSA[Product_index].ProductType, vec[Bosa_index].AllConfigItem_by_BOSA[Product_index].BoardInfo_APC_Config.m_Drive_Type, vec[Bosa_index].AllConfigItem_by_BOSA[Product_index].ChipType2); } else { m_Res.SetResultDesc(FALSE, "%s中的驱动芯片:%s,与产线传递型号: %s冲突,校验失败", vec[Bosa_index].AllConfigItem_by_BOSA[Product_index].ProductType, vec[Bosa_index].AllConfigItem_by_BOSA[Product_index].BoardInfo_APC_Config.m_Drive_Type, vec[Bosa_index].AllConfigItem_by_BOSA[Product_index].ChipType); m_Res.SetItem("Search_Index_Failed", "索引指标后校验驱动芯片型号冲突"); return FALSE; } //校核配置文件名中的BOSA型号和配置文件中对应产品所在列的BOSA型号、软件读取型号是否相同 if (vec[Bosa_index].BOSA_type == vec[Bosa_index].AllConfigItem_by_BOSA[Product_index].BoardInfo_APC_Config.m_BosaSn && vec[Bosa_index].BOSA_type == m_BOSASN_LEFT) { m_Res.SetResultDesc("%s中的BOSA型号:%s,与配置文件名中型号、软件读取型号相同,校验成功", vec[Bosa_index].AllConfigItem_by_BOSA[Product_index].ProductType, vec[Bosa_index].AllConfigItem_by_BOSA[Product_index].BoardInfo_APC_Config.m_BosaSn); } else { m_Res.SetResultDesc(FALSE, "%s中的BOSA型号:%s,与配置文件名中型号、软件读取型号冲突,校验失败", vec[Bosa_index].AllConfigItem_by_BOSA[Product_index].ProductType, vec[Bosa_index].AllConfigItem_by_BOSA[Product_index].BoardInfo_APC_Config.m_BosaSn); m_Res.SetItem("Search_Index_Failed", "索引指标后校验BOSA型号冲突"); return FALSE; } } return TRUE; }
浙公网安备 33010602011771号