计算机COM口数据测试
一、基本使用流程
程序需要以管理员身份运行,COM口回路测试需短接2,3pin,测试时候使用控制台,配置测试相关路径,并在测试完成后
1.测试配置路径D:\bigdata\INI\FWCOM.ini
2.测试完成后需要在路径D:\bigdata\LOG\生成测试FWCOM.log文件
程序运行结果示意图
运行完成后的日志文件示意图
二、软件设计
源码分为三个部分,common.cpp基本基本信息配置,function.cpp完成功能实现,最后通过main.cpp运行整个程序
common.cpp
配置函数代码
#undef UNICODE
#include "common.h"
#include "Config.h"
void TextColor(int color)
{
HANDLE stdH = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(stdH, color);
}
void PASS()
{
printf("The test is: ");
TextColor(GREEN);
printf("passed");
printf("\n");
printf("\n");
TextColor(WHITE);
}
void FAIL()
{
printf("The test is: ");
TextColor(RED);
printf("failed");
printf("\n");
printf("\n");
TextColor(WHITE);
}
DWORD SubSystemID(MBTYPE mb[])
{
DWORD decSubSystemID = 0;
DWORD aimSubSystemID = 0;
// BYTE bus = pciSelect[0], dev = pciSelect[1], func = pciSelect[2], offset = 0x2c;
BYTE bus = 0;
BYTE dev = 0;
BYTE func = 0;
BYTE offset = 0;
DWORD address = 0;
for (int i = 0; i < sizeof(mb); i++)
{
// printf("i = %d\n", i);
if (mb[i].subSystemId != 0)
{
bus = mb[i].bus;
dev = mb[i].dev;
func = mb[i].fun;
offset = mb[i].subSystemIdOffset;
aimSubSystemID = mb[i].subSystemId;
address = MAKE_CONFIG_ADDRESS(bus, dev, func, offset);
FoxLib_SetPortVal(PCI_CONFIG_ADDRESS, address, 4);
FoxLib_GetPortVal(PCI_CONFIG_DATA, &decSubSystemID, 4);
#ifdef DEBUG
printf("aimSubSystemID = \"%x\", decSubSystemID = \"%x\"\n", aimSubSystemID, decSubSystemID);
#endif
if (aimSubSystemID == decSubSystemID)
{
return 0;
}
}
}
printf("Not support MB!\n");
return 1;
}
void GetGlobalData(char* name)
{
int i = 0;
int index = 0;
int toolSelect = 0;
if (strstr(name, "hwm") != NULL)
{
index = 1;
for (i = 0; i < cTINumberMax; i++)
{
if (cFanName[i][0] != '\0')
{
iFanIndex[index] = i;
index++;
iAllFanNum++;
}
}
index = 1;
for (i = 0; i < cTINumberMax; i++)
{
if (cTempName[i][0] != '\0')
{
iTempIndex[index] = i;
index++;
iAllTempNum++;
}
}
#ifdef DEBUG
printf("iAllFanNum = %d, iAllTempNum = %d\n", iAllFanNum, iAllTempNum);
#endif
}
else if (strstr(name, "idchk") != NULL)
{
index = 1;
for (i = 0; i < cTINumberMax; i++)
{
if (cIdChkName[i][0] != '\0')
{
iIdChkIndex[index] = i;
index++;
iAllIdChkNum++;
}
}
#ifdef DEBUG
printf("iAllIdChkNum = %d\n", iAllIdChkNum);
#endif
}
else if (strstr(name, "pcie") != NULL)
{
index = 1;
for (i = 0; i < cTINumberMax; i++)
{
if (cPcieName[i][0] != '\0')
{
iPcieIndex[index] = i;
index++;
iAllPcieNum++;
}
}
#ifdef DEBUG
printf("iAllPcieNum = %d\n", iAllPcieNum);
#endif
}
else if (strstr(name, "sata") != NULL)
{
index = 1;
for (i = 0; i < cTINumberMax; i++)
{
if (cSataSpdName[i][0] != '\0')
{
iSataSpdIndex[index] = i;
index++;
iAllSataSpdNum++;
}
}
#ifdef DEBUG
printf("iAllSataSpdNum = %d\n", iAllSataS