⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fgauphostcomm.cpp

📁 采用LPC的芯片做的气体排放检测,包括气体成分分析,数据的处理,数据传输给工作站.
💻 CPP
📖 第 1 页 / 共 2 页
字号:
	            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 + -