📄 fgauphostcomm.cpp
字号:
Buf[7]=g_FGAStat.ucFGAFace;Buf[8]=GetCheckSum(Buf,8);
nLen = 9;
}
else
{
Buf[2]=3;Buf[3]=0x24;Buf[4]=0x24;
Buf[5]=g_FGAStat.ucFGAFace;Buf[6]=GetCheckSum(Buf,6);
nLen = 7;
}
break;
case CONTROL_LOAD:US0_putchar(5);//控制气路
Buf[2]=3;Buf[3]=0x25;Buf[4]=0x25;
Buf[5]=g_FGAStat.ucFGAFace;Buf[6]=GetCheckSum(Buf,6);
nLen = 7;
break;
case SOFE_WARE_TIME: //软件/硬件版本号的设置/读取
if(ucExtraByte)
{
Buf[2]=7;Buf[3]=0x26;Buf[4]=0x26;
Read24c256((U8*)Buf+5,(U16)ROM_ADDR_sofetime,4);
Buf[9]=g_FGAStat.ucFGAFace;Buf[10]=GetCheckSum(Buf,8);
nLen = 11;
}
else
{
Buf[2]=3;Buf[3]=0x24;Buf[4]=0x24;
Buf[5]=g_FGAStat.ucFGAFace;Buf[6]=GetCheckSum(Buf,6);
nLen = 7;
}
break;
default:break;
}
#ifdef WIN32
FFPortSendData(TO_UP_HOST,(const char*)Buf,nLen);
#else
FFPortSendData(TO_UP_HOST,Buf,nLen);
#endif
}
void FormatDevData(_DEV_FGA4100_DATA* pDevData,U8 *pByte)
{// pByte 的长度必须 >= 49 BYTE
;
}
void TranslateVehicleInfo(unsigned char* pByte)
{
if(pByte[5]=='S') g_VehicleInfo.ucTestType=enuTestType_Idle;
else if(pByte[5]=='D') g_VehicleInfo.ucTestType=enuTestType_DoubleIdle;
else g_VehicleInfo.ucTestType=enuTestType_Common;
/*
if(pByte[10]=='2') g_VehicleInfo.ucStroke=1;
else g_VehicleInfo.ucStroke=0;
//计算Lambda时用
if(pByte[15]=='G') g_VehicleInfo.ucFuel_Index=1;//液化石油气 LPG
else if(pByte[15]=='A') g_VehicleInfo.ucFuel_Index=3;//酒精
else if(pByte[15]=='Q') g_VehicleInfo.ucFuel_Index=2;//压缩天然气 CNG
else g_VehicleInfo.ucFuel_Index=0;
if(pByte[16]=='2') g_VehicleInfo.ucLightMode=1;
else g_VehicleInfo.ucLightMode=0;
*/
g_VehicleInfo.wRatedSpeed = Char4ToShort(&pByte[6]);
}
// 返回 TRUE -> 改变当前的过程(main 中的过程)
void GET_Calibration(U8 *Buf)
{
U8 i;
U8 *P;
U8 buf[10];
P=Buf;
for(i=0;i<10;i++)
{
buf[i]=*(P+5+i);
}
Write24c256((U8*)buf,(U16)ROM_ADDR_FGA_CALIB_HC,10);
}
U8 QueryMsg(void)
{
_DEV_FGA4100_DATA FGA_Data;
U8 Buf[64];
int nLength=0;
U16 i;
U16 *p1;
if(FFPortGetRxBufDataLen(TO_UP_HOST)>= 1)
{
memset(Buf,0,sizeof(Buf));
Sleep(20);
nLength = FFPortGetRxBufDataLen(TO_UP_HOST);
if(nLength>64) nLength = 64;
FFPortReadData(TO_UP_HOST,Buf,nLength);
FFPortClearRxBuf(TO_UP_HOST);
if(g_ucProtocol == PROTOCOL_FOFEN)
{// 1.佛分单机协议
if(CheckCmdFormatFOFEN(Buf,nLength,g_ucMachineAddr,&g_HostCmdInfo))
{// 帧格式正确
switch(g_HostCmdInfo.ucRawCmdPara)
{
case READ_STATUS://读当前系统状态
ReplyUpHostFofenFGA(READ_STATUS,0,NULL);
return ;
case GET_PPMDATA://取当前浓度数据
ReplyUpHostFofenFGA(GET_PPMDATA,0,NULL);
return ;
case GET_GDATA://取当前质量数据
ReplyUpHostFofenFGA(GET_GDATA,0,NULL);
return ;
case GET_NATURALDATA://取当前环境数据
ReplyUpHostFofenFGA(GET_NATURALDATA,0,NULL);
return ;
case GET_ALLDATA://取所有数据
ReplyUpHostFofenFGA(GET_ALLDATA,0,NULL);
return ;
case FGA_LIBRATION://校准五气平台
GET_Calibration(Buf);//写所得的浓度校准参数
if(FGACalibration())//调用校准函数
{ReplyUpHostFofenFGA(FGA_LIBRATION,1,NULL);}//校验成功应答上位机
else
{ReplyUpHostFofenFGA(FGA_LIBRATION,0,NULL);}//校验失败应答上位机
return ;
case TEST_LOWPPM://低浓度气体测量
TEST_LOWGAS();
ReplyUpHostFofenFGA(TEST_LOWPPM,0,NULL);
return;
case NO_CALIBRATION://NO平台校准
US0_putchar(7);
if(g_ucTestNO)
{
US0_putchar(7);
Write24c256((U8*)(Buf+5),(U16)ROM_ADDR_FGA_CALIB_NO,2);
US0_putchar(7);
if(NOCalibration())
ReplyUpHostFofenFGA(NO_CALIBRATION,1,NULL);
else
ReplyUpHostFofenFGA(NO_CALIBRATION,0,NULL);
}
US0_putchar(7);
return ;
case CO2_CALIBRATION://CO2平台校准
if(g_ucTeso2)
{
US0_putchar(7);
Write24c256((U8*)(Buf+5),(U16)ROM_ADDR_FGA_CALIB_CO2_1,2);
US0_putchar(7);
if(CO2Calibration())
ReplyUpHostFofenFGA(CO2_CALIBRATION,1,NULL);
else
ReplyUpHostFofenFGA(CO2_CALIBRATION,0,NULL);
}
US0_putchar(7);
return ;
case O2_CALIBRATION://O2校准
if(g_ucTeso2==0)
{
i=(U16)(Buf[5]+(Buf[6]*256));
p1=&i;
O2_calibration(p1);
ReplyUpHostFofenFGA(O2_CALIBRATION,0,NULL);
}
return ;
case PRESS_CALIBRATION:US0_putchar(4);//大气压力校准
i=(U16)(Buf[5]+(Buf[6]*256));
p1=&i;
PRESS_calibration(p1);
ReplyUpHostFofenFGA(PRESS_CALIBRATION,0,NULL);
return ;
case GET_SAVADATA:US0_putchar(5);//取20S的缓存数据
ReplyUpHostFofenFGA(GET_SAVADATA,0,NULL);
break;
case TEMP1_CALIBRATION:US0_putchar(6);//校准稀释后气体温度
i=(U16)(Buf[5]+(Buf[6]*256));
p1=&i;
TEMP1_calibration(p1);
ReplyUpHostFofenFGA(TEMP1_CALIBRATION,0,NULL);
return 1;
case TEMP2_CALIBRATION :US0_putchar(7);//校准环境温度
i=(U16)(Buf[5]+(Buf[6]*256));
p1=&i;
TEMP2_calibration(p1);
ReplyUpHostFofenFGA(TEMP2_CALIBRATION,0,NULL);
return 1;
case DRY_CALIBRATION:US0_putchar(8);//湿度的校准
i=(U16)(Buf[5]+(Buf[6]*256));
p1=&i;
COEF_calibration(p1);
ReplyUpHostFofenFGA(TEMP2_CALIBRATION,0,NULL);
return 1;
case SPEED_CALIBRATION: //转速的校准
if(PerformDevCmd(enuFGA4100Cmd_PumpOff,&FGA_Data,NULL,2))
{US0_putchar(88);}
else
{US0_putchar(77);}
break;
case ZERO_PERFORM0://调零五气平台
FGAZero(2);
ReplyUpHostFofenFGA(ZERO_PERFORM0,0,NULL);
return 1;
case ZERO_CO2PERFORM0: //调零CO2平台
if(g_ucTeso2)
{
FGAZero(3);
ReplyUpHostFofenFGA(ZERO_CO2PERFORM0,0,NULL);
}
US0_putchar(77);
return 1;
case ZERO_NOPERFORM://调零NO平台
FGAZero(4);
ReplyUpHostFofenFGA(ZERO_NOPERFORM,0,NULL);
return 1;
case LEAK_CHECK://泄露检查
FGALeakCheck();
ReplyUpHostFofenFGA(LEAK_CHECK,0,NULL);
return 1;
case HANDUP_TEST://吸附测试
if(Buf[4]==0)
{
FGAHandupTest();
}
else
{
FGAHandupTest1();
}
ReplyUpHostFofenFGA(HANDUP_TEST,0,NULL);
return 1;
case SET_READ_MODE://系统的工作模式读取//和设置
if(Buf[5]==0)
{
ReplyUpHostFofenFGA(SET_READ_MODE,1,NULL);//读取系统工作模式
}
else
{
if(Buf[6]==0){g_ucTeso2=0;}
else{g_ucTeso2=1;}
if(Buf[7]==0){g_ucTestNO=0;}
else{g_ucTestNO=1;}
Write24c256((U8*)&g_ucTeso2,(U16)ROM_ADDR_TESTO2,1);
Write24c256((U8*)&g_ucTestNO,(U16)ROM_ADDR_TESTNO,1);
ReplyUpHostFofenFGA(SET_READ_MODE,0,NULL);
}
return 1;
case SET_READ_VMAS:US0_putchar(3);//设置/读取文氏管流量和气泵抽气流量
if(Buf[5]==0)
{
ReplyUpHostFofenFGA(SET_READ_VMAS,1,NULL);//读取系统工作模式
}
else
{
FLOWSEP=Buf[6]+(Buf[7]*256);
Write24c256((U8*)&FLOWSEP,(U16)ROM_ADDR_FLOWSEP,2);
ReplyUpHostFofenFGA(SET_READ_VMAS,0,NULL);
}
return ;
case SET_READ_TIME:US0_putchar(4);//设置/读取气路延时
if(Buf[5]==0)
{
ReplyUpHostFofenFGA(SET_READ_TIME,1,NULL);//读取系统工作模式
}
else
{
HCDelayTime=Buf[6]+(Buf[7]*256);
Write24c256((U8*)&HCDelayTime,(U16)ROM_ADDR_HCDelayTime,2);
ReplyUpHostFofenFGA(SET_READ_TIME,0,NULL);
}
return ;
case CONTROL_LOAD:US0_putchar(5);//控制气路
ControlLOAD(Buf[5]);
ReplyUpHostFofenFGA(CONTROL_LOAD,0,NULL);
return ;
case SOFE_WARE_TIME: //软件/硬件版本号的设置/读取
if(Buf[5]==0)
{
ReplyUpHostFofenFGA(SOFE_WARE_TIME,1,NULL);//读取系统工作模式
}
else
{
memcpy((U8*)&U32_sofetime,Buf+6,4);
Write24c256((U8*)&U32_sofetime,(U16)ROM_ADDR_sofetime,4);
ReplyUpHostFofenFGA(SET_READ_TIME,0,NULL);
}
return ;
default: break;
}
}
ReplyUpHostFofenFGA(Cmd_Unkown,0,NULL);
return enuSysMsg_None;
}
}
return enuSysMsg_None;
}
BOOL SleepAndQueryMsg(unsigned int nDelayTime)
{
ResetClock();
while(TRUE)
{
Sleep(10);
g_ucKeyData = QueryMsg();
if( IsTimeOut(nDelayTime) ) break;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -