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

📄 motormanloadingorexit.c

📁 C语言源代码及相关资料
💻 C
📖 第 1 页 / 共 3 页
字号:
	memset(str,0,sizeof(str));
	memset(smsSetup.strSIP,0,sizeof(smsSetup.strSIP));
	memset(smsSetup.strSoftVer,0,sizeof(smsSetup.strSoftVer));
	memset(smsSetup.strHardID,0,sizeof(smsSetup.strHardID));
		
	//副登陆服务器IP
	memset(buff_strSIP,0,sizeof(buff_strSIP));
	GetOmoveAddr(SETUP_PARAMS,SETUP_PARAMS_COUNT,0x0203,&len,&moveAddr);
    W25X32_READ_Semphore(GetAddr(SETUP_PARAMS_SEC,moveAddr),len,buff_strSIP);
    if(buff_strSIP[0]!=0x00)
	{   
	    for(i=0;i<sizeof(buff_strSIP);i++)
	    {
	    	char 	buff[4];
	    	memset(buff,0,sizeof(buff));
	    	
	    	sprintf(buff,"%d",buff_strSIP[i]);
	    	strcat(smsSetup.strSIP,buff);
	    	strcat(smsSetup.strSIP,".");
	    	
		}
		smsSetup.strSIP[strlen(smsSetup.strSIP)-1]='\0';	//去掉最后一个"."
	}
	else
		smsSetup.strSIP[0]='\0';
	
  	//终端软件版本号
	GetOmoveAddr(SETUP_PARAMS,SETUP_PARAMS_COUNT,0x0701,&len,&moveAddr);
    W25X32_READ_Semphore(GetAddr(SETUP_PARAMS_SEC,moveAddr),len,(uint8	*)smsSetup.strSoftVer);
    GetParamVal_ASCII(0x200,(uint8	*)smsSetup.strSoftVer,(uint32 *)&len);
    
    //生产ID
    GetOmoveAddr(SETUP_PARAMS,SETUP_PARAMS_COUNT,0x0702,&len,&moveAddr);
    W25X32_READ_Semphore(GetAddr(SETUP_PARAMS_SEC,moveAddr),len,(uint8	*)smsSetup.strHardID);
    GetParamVal_ASCII(0x200,(uint8	*)smsSetup.strHardID,(uint32 *)&len);
    
   	strcat(str,Communi.strIP);//主登陆服务器IP
   	strcat(str,",");
   	strcat(str,smsSetup.strSIP);
   	strcat(str,",");
   	strcat(str,Communi.strPort);//设置中心端口号
   	strcat(str,",");
    strcat(str,Communi.strAPN);//APN参数
    strcat(str,",");
	strcat(str,smsSetup.strSoftVer);
	strcat(str,",");
    strcat(str,smsSetup.strHardID);
    strcat(str,",");
    strcat(str,StrTermID);	//登陆ID

	return TRUE;
	
}

/****************************************************************************
**函数名:MsgWatchOrSet  短信设置及查看
**入口参数
**
**
**
*****************************************************************************/

void MsgWatchOrSet(uint8 *uiReviceBuf0,uint16	* uiNum)
{
	
	char 	strNum[14];   //电话号码
	char 	MsgContent[TRANSLEN/2];	//短信内容
	uint16	textLen=0;
	
	if (*uiNum>0)
	{	
		//判断短信的PDU格式
		char *p=NULL;
		char *p2=NULL;    			    		
		if((p=strstr((char *)uiReviceBuf0,"READ\",\""))!=NULL)
		{
			
			//char 	srv_SMS_Num[128];	////中心短信发送号码
			char 	MotormanId[DEVICE_LEN];		//驾驶员ID号
			char	LoadingMotorman[DEVICE_LEN];//驾驶员手机号码
			uint8	i=0;
			
			//memset(srv_SMS_Num,sizeof(srv_SMS_Num));
			memset(LoadingMotorman,0,sizeof(LoadingMotorman));
			//GetParamValue(0x0103,(uint8	*)srv_SMS_Num);
			memset(MsgContent,0,sizeof(MsgContent));
			memset(strNum,0,sizeof(strNum));
			
		    p=p+strlen("READ\",\"");
		    if((p2=strchr(p,'\"'))!=NULL)
		    {
			    memmove(strNum,p,p2-p);	//取电话号码
				if(strchr(strNum,'+')!=NULL)
				{
#if !defined(_TW_)
					memmove(strNum,strNum+3,strlen(strNum+3));
					strNum[strlen(strNum+3)]='\0';
#else
					// +886 for _TW_
					memmove(strNum+1,strNum+4,strlen(strNum+4));
					strNum[0]='0'; // Format convert: +8869xx-xxx-xxx ==> 09xx-xxx-xxx
					strNum[strlen(strNum+4)]='\0';
#endif // end of #if !defined(_TW_)
				}
			    
			    if((p=strstr(p2,"\"\r\n"))!=NULL)
			    {
			    	p+=strlen("\"\r\n");
			    	if((p2=strstr(p,"\r\n"))!=NULL)
			    		memmove(MsgContent,p,p2-p); 
			    	
			    }
			}
		 	//取短信内容 +CMGR: "REC READ","+8613451890785","","09/03/22,12:28:55+32"=61 
		 	//进行转换为16进制   
	 		textLen=strlen(MsgContent)/2;
	 		if((strstr(MsgContent,"*"))!=NULL)
	 		{
	 			char *	customMobile[10]={GJ_Mobile1,GJ_Mobile2,GJ_Mobile3,GJ_Mobile4,GJ_Mobile5,GJ_Mobile6,GJ_Mobile7,GJ_Mobile8,GJ_Mobile9};	//厂家自定义查询设置号码
	 			
		 		for(i=0;i<10;i++)
		 		{
		 			if((strstr(strNum,customMobile[i]))!=NULL)	//自定义查询设置参数的手机号码
		 			{
		 				if((strstr(MsgContent,"*F#"))!=NULL)
		 				{
		 					char	str[TRANSLEN/2];
		 					
		 					memset(str,0,sizeof(str));
		 					if(GetPara_DemandPara(str))
		 						SendMsg(str,strNum);
		 						
		 				}
		 				else	if((strstr(MsgContent,"#"))!=NULL)
		 				{
		 					if(SMSSET(MsgContent))
								SendMsg(MsgContent,strNum);	
							
						}
		 			}
		 			
		 		}
	 		}
			else	if(GetMotormanIdToFlash(0,strNum,MotormanId,LoadingMotorman)==TRUE)	//是否符合驾驶员的信息
			{
			   // ChineseMsgCompages(srv_SMS_Num,MsgContent,textLen);
			   // SendPDUSMS(MsgContent);
			    
			    memset(G_SMSInfo,0,sizeof(G_SMSInfo));
				strcat(G_SMSInfo,MsgContent);
				if((FTP_UPGRADE_FLAG==0)&&(Connect_OK==TRUE)&&(ReConnect_OK==2))
		 		{
			 		ParseCode_trans(uiReviceBuf0,uiNum,UPLOAD,U_UploadMobileSMSInfoComm);	//上传手机短信息
			 		Send_data(uiReviceBuf0,TRANSINFOLEN,uiNum);
					uartWrite(UART2,uiReviceBuf0,*uiNum,NULL); 
					//uartWrite(UART3,uiReviceBuf0,*uiNum,NULL);	//测试
				}
				
			}
			DelMsg(MsgNum);//删除短信
			memset(MsgNum,0,sizeof(MsgNum));
			
		}
		
	}
	
}
/*********************************************************************
**函数名称:CompareSetId
**函数功能:1.中心设置了驾驶员ID后,将更新的驾驶员ID和已经登陆的驾驶员ID进行对比,查看是否将登陆的驾驶员ID删除
			删除则发送消息。没有则不做处理
**入口参数:无
**出口参数:无
**修改时间:20090409
****************************************************************************************************/
//手机调度

//通过协议函数后传进来的转发值*uiReviceBuf0,
void HandsetAttemper (uint8	 *uiReviceBuf0,uint16 *uiNum)
{
	char  str1[TRANSLEN/2];  //拨打电话的驾驶员信息,及PUD短信发送格式的固定格式 
	char len[4];								//0011000D91 683159614291F8 000800头 
	
	ParseCode_trans(uiReviceBuf0,uiNum,UPLOAD,D_SendoutMobileSchedulerInfoComm);	//上传手机短信息
	Send_data(uiReviceBuf0,TRANSINFOLEN,uiNum);
	if((G_DriverLoginMobile[0]>=0x30)&&(G_DriverLoginMobile[0]<0x40))//判断是不是有驾驶员登陆或判断登陆标志位
	{
		ChineseMsgCompages(G_DriverLoginMobile,str1,0);//表示文本的长度并加上长度所占的一个字节长度
		sprintf(len,"%02X",strlen((char*)uiReviceBuf0)/2+1);
		strcat(str1,len);
		strcat(str1,(char *)uiReviceBuf0);
		SendPDUSMS(str1);
	}

}
/*****************************************************************
**函数名称:void GetMotormanIdToFlash()
**作用	:   从FLASH中取已经存储的驾驶员信息
            和拨打的电话号码进行比较,
**入口参数:SMS_YesNo_Flag			判断是否短信,1:表示短信,0:表示电话 
			MotormanInformetion   驾驶员信息
 			 CallToTerminal        呼入终端的电话(正在拨打的驾驶员)
**出口参数: LoadingMotorman       已经登陆的驾驶员
			MotormanId            驾驶员ID
******************************************************************/
uint8  GetMotormanNumToFlash(void)
{
	
	uint16	iplace=0,iTemp=0;
	uint8	ss[ALLDEVICE_LEN];
	uint8 	Loadinglen=0;
	char 	DriveID[DEVICE_LEN];
	uint8	buff[LOGINDEVICE_LEN];
	
	memset(buff,0,sizeof(buff));
	memset(ss,0,sizeof(ss));
	memset(DriveID,0,sizeof(DriveID));
	
	GetParamValue(0x0707,buff); //得到驾驶员ID
	
	if(buff[0]<DEVICE_LEN)
	{
		Loadinglen=buff[0];	//将驾驶员的ID长度取出来
		for(iplace=1;iplace<Loadinglen+1;iplace++)
	    	DriveID[iplace-1]=buff[iplace];
	    	
	    memset(G_LoadingMotorman,0,sizeof(G_LoadingMotorman));
	    memcpy(G_LoadingMotorman,DriveID,strlen(DriveID));
	}
	else
	{
		
		memset(G_LoadingMotorman,0,sizeof(G_LoadingMotorman));
	  	return FALSE;		
	}
	
	iplace=strlen(DriveID)+1;
	memset(DriveID,0,sizeof(DriveID));
	if(buff[iplace]<DEVICE_LEN)
	{
		Loadinglen=buff[iplace];	//将驾驶员的ID长度取出来
		for(iTemp=1;iTemp<Loadinglen+1;iTemp++)
	    	DriveID[iTemp-1]=buff[iTemp+iplace];
	    	
	    memset(G_DriverLoginMobile,0,sizeof(G_DriverLoginMobile));
	    memcpy(G_DriverLoginMobile,DriveID,strlen(DriveID));
	}
	else
	{
		
		memset(G_DriverLoginMobile,0,sizeof(G_DriverLoginMobile));	
	  	return FALSE;		
	 }  
	
	
	return FALSE;
}	
/*********************************************************************
**函数名称:CompareSetId
**函数功能:1.中心设置了驾驶员ID后,将更新的驾驶员ID和已经登陆的驾驶员ID进行对比,查看是否将登陆的驾驶员ID删除
			删除则发送消息。没有则不做处理
**入口参数:无
**出口参数:无
**修改时间:20090409
****************************************************************************************************/
uint8 CompareSetId(void)//0409加
{
		
	if((G_DriverLoginMobile[0]>=0x30)&&(G_DriverLoginMobile[0]<0x40))	//表示已登陆的手机号码
	{ 
		char  	LoadingMotorman[DEVICE_LEN];	//已经登陆的驾驶员电话号码	  	
		char	* SMS_AT[]={"5DF288AB4E2D5FC3522096640021"};	//已被中心删除!
		char  	str2[TRANSLEN/2];	
		char 	MsgContent[TRANSLEN/2];
		char 	MotormanId[DEVICE_LEN];			//驾驶员ID号
		uint8	bl_rtn=0;
		uint8	buff[LOGINDEVICE_LEN];
	 	uint8 	i=0;
	 	char 	len_Str[4];
	 	uint16 	len=0;
	 	
	    memset(LoadingMotorman,0,sizeof(LoadingMotorman)); 	
	    memset(MotormanId,0,sizeof(MotormanId));
	    memset(MsgContent,0,sizeof(MsgContent));
	    memset(str2,0,sizeof(str2));
	    bl_rtn=GetMotormanIdToFlash(0,G_DriverLoginMobile,MotormanId,LoadingMotorman);
		 //不符合驾驶员的信息,就发送短信
		
	 	//当中心把驾驶员ID,更换而手机号码没有更换,时候也算退出,所以增加了下面6行
	 	if(strlen(MotormanId)>strlen(G_LoadingMotorman)) 	//当驾驶员ID设置前是123时候,设置后为1234,时候,需要对设置的长度计算
	 		len=strlen(MotormanId);
	 	else
	 	 	len=strlen(G_LoadingMotorman);
	 	 
	 	if(bl_rtn==1)
	 	{
		 	if(memcmp(G_LoadingMotorman,MotormanId,len)==0)
		 		return	FALSE;
		}
		
		memset(len_Str,0,sizeof(len_Str));
		ChineseMsgCompages(G_DriverLoginMobile,MsgContent,0);
		for(i=0;i<strlen(G_DriverLoginMobile);i++)
		{
			char tempbuff[4];
			memset(tempbuff,0,sizeof(tempbuff));
			strcat(tempbuff,"00");
			sprintf(tempbuff+strlen(tempbuff),"%02X",G_DriverLoginMobile[i]);
			strcat(str2,tempbuff);	 		//提示登陆成功或退出
		} 
		strcat(str2,SMS_AT[0]);
		sprintf(len_Str,"%02X",strlen(str2)/2+1);
	       strcat(MsgContent,len_Str);
		strcat(MsgContent,str2);
	 	SendPDUSMS(MsgContent);		 	
 		memset(G_DriverLoginMobile,0,sizeof(G_DriverLoginMobile));
	 	memset(G_LoadingMotorman,0,sizeof(G_LoadingMotorman));
		memset(buff,0xff,sizeof(buff));//根据协议要求,清除已登陆的驾驶员ID及长度			
		SaveParamValue(0x0707,buff);	//清除已登陆的驾驶员ID

	}
	return TRUE;
	
}


uint8 HaveLinkSendLoadingInfo(INT8U *uiReviceBuf0,INT16U *uiNum)
{
	
	if((MotormanLoadSign==1)||(MotormanLoadSign==3))	//盲区或无连接的时候,驾驶员拨打终端电话状态标志,0:表示未处理,1:表示退出,2:表示盲区,3:表示登陆。
	{
		
		if((ReConnect_OK==2)&&(Connect_OK==TRUE)&&(bl_powerdown!=1))
		{
			char    CallToTerminal[DEVICE_LEN];	//呼入的电话号码
			char 	MotormanId[DEVICE_LEN];			//驾驶员ID号
			uint8 	uiReviceBuf0_Driver[TRANSINFOLEN/2];
			uint16 	uiNum_Driver=0;
			
			ParseCode_trans(uiReviceBuf0,uiNum,UPLOAD,U_UploadDriverInfoComm);	//上传驾驶员登陆信息
			Send_data(uiReviceBuf0,TRANSINFOLEN,uiNum);
			uartWrite(UART2,uiReviceBuf0,*uiNum,NULL); 
		
			memset(CallToTerminal,0,sizeof(CallToTerminal));
			memset(MotormanId,0,sizeof(MotormanId));
			memset(uiReviceBuf0_Driver,0,sizeof(uiReviceBuf0_Driver));

			memcpy(MotormanId,G_LoadingMotorman,strlen(G_LoadingMotorman));
			memcpy(CallToTerminal,G_DriverLoginMobile,strlen(G_DriverLoginMobile));
			BuildMsgBag(MotormanLoadSign,CallToTerminal,MotormanId,uiReviceBuf0_Driver,&uiNum_Driver);	////登陆成功
			MotormanLoadSign=0;		//驾驶员登陆标志,0:表示未处理
			
		}
		
	}
	
	return TRUE;
	
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -