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

📄 login.c

📁 SPWM三相波形发生器
💻 C
字号:
//-----login.c-----------------------
#include <reg52.h>
#include "MENUADDRESS.H"
#include <string.h>

#define	uchar	unsigned char
#define uint	unsigned int

#define		ATI_PARS			"AT+IPARS\r"			

//------main.c-----------------------
extern 	unsigned char idata input[32];
extern	unsigned char idata tempbuf[16];	
extern  uint   idata	CrcSend	;  	
extern	unsigned char  idata	WORKTYPE;				
extern	unsigned long 	data	TempCount;

extern	bit	 Crc_Flag ;	
extern 	bit	 Frame_Flag;
extern	void Delay(uint x);
extern  unsigned long GET_COUNT();
			
sbit D3 = P1^2;
sbit D4 = P3^5;
sbit D5 = P3^4;

//-----eeprom.c----------------------
extern 	void ReadUserBlock(uchar idata *input,uint Address,uchar Number);

//-----COMM.c----------------------
extern void   _EXP_Fram_Init(void);
extern	void	_EXP_Puts(uchar *p);
extern	uint	CrcData(uint CrcBuff, uchar dd);
extern  void	_Get_CMIP(uchar *input,uchar Lenth);
extern	uchar	idata	DTUID[7];
extern	uchar	idata	CtrlData;
extern	uint	idata	CrcBuff;
#define		DEF_CRC_OK				0xB8F0

//-----GsmModem.c--------------------
extern unsigned char  ModuleRst();				
extern unsigned char  InitModem();
extern void ModemSend(uchar *String);
extern void _EXP_Put(uchar ucValue);
extern unsigned char  ModemExpect(uchar *ExpectString,uint timeout);	
extern unsigned int String_To_Int(unsigned char *p);
													

/********************************
** if WORKMODE == 1 or 2 
** return 1: finished sending string
** return 0: failed.......  
********************************/
uchar AT_log_CM(uchar *IP,uchar *Port)
{
	uchar i = 0,j = 0;

	for(i = 0;i<4;i++)
	{
		ModemSend("AT+IHSRV=");
		ModemSend(IP);		//send fixed ip
		ModemSend(":");
		ModemSend(Port);
		ModemSend("\r");		//send fixed ip
		Delay(10);
		if( ModemExpect("I/OK",200) )
		{
			ModemSend(ATI_PARS);
			Delay(10);
			if( ModemExpect("I/OK",200))
			{
				ModemSend("AT+I!SNMD\r");
				Delay(10);
				if( ModemExpect("I/OK",200))return 1;
			}
		}		
	}	
	return 0;
}

void Log_CM_Fram(uint DATA)
{
	uchar Tdata;
	uchar i;

	_EXP_Puts("GPRS");
	ReadUserBlock(input,Ser_Number,sizeof(input));		//read DTUID
	if(Crc_Flag) CrcSend = 0xFFFF;
	for(i = 0;i<6;i++)
	{
		Tdata = input[i];
		if(Crc_Flag) CrcSend =  CrcData(CrcSend, Tdata);
		_EXP_Put(Tdata);		
	}
	if(Crc_Flag)										/*	send Control Data*/
	{
		CrcSend = CrcData(CrcSend,0x90);
		_EXP_Put( 0x90);
	}
	else _EXP_Put( 0x10);

	Tdata = (uchar)(( DATA >> 8) & 0xFF);		/*	send Heart Beat	*/
	if(Crc_Flag) CrcSend = CrcData(CrcSend,Tdata);
	_EXP_Put(Tdata);

	Tdata = (uchar)(DATA & 0xFF);		
	if(Crc_Flag)	CrcSend = CrcData(CrcSend,Tdata);
	_EXP_Put(Tdata);

	if(Crc_Flag)
	{
		CrcSend = CrcSend ^ 0xFFFF;
		Tdata = CrcSend >> 8;
		_EXP_Put(Tdata);
		Tdata = CrcSend & 0xFF;
		_EXP_Put(Tdata);
	}
}

uchar login_CM_ack(uchar *IP,uchar *Port,uchar Ctrl_Data,uint DATA)
{
	uchar i;

//	for(i = 0;i<3;i++)
//	{
//		if(ModuleRst())					
//			if(InitModem())					
//				if(AT_log_CM(IP,Port)) break;
//	}
	Delay(10);
//	if(i == 3)return 0;
	{
		for(i=0;i<3;i++)
		{
			_EXP_Fram_Init();
			Log_CM_Fram(DATA);
			TempCount = GET_COUNT();
			while(GET_COUNT() - TempCount <300)
			{
				if(Frame_Flag)
				{
					Frame_Flag = 0;
					if( (CtrlData & 0x11) != Ctrl_Data )break;
					else if (( Crc_Flag == 1 ) && ( CrcBuff != DEF_CRC_OK )) break;
					else
					{
						ReadUserBlock(input,Ser_Number,sizeof(input));		//read DTUID
						if(strcmp(input,DTUID) == 0)
							return 1;
						else break;
					}
				}
			}
		}
		return 0 ;
	}		
}

/*************************************************
** return 1: successed to communicate with the CM.
** return 0: failed ....
*************************************************/
uchar login_ack()
{
uchar i;
uint j;

	if(WORKTYPE != 3)
	{
		ReadUserBlock( input, Heart_Time,sizeof(input));	
		j = String_To_Int(input);
		if(WORKTYPE ==1)	
			ReadUserBlock( input,Fixed_IP,sizeof(input));
		if(WORKTYPE ==2)	
			ReadUserBlock( input,Host_Name,sizeof(input));		
		ReadUserBlock(tempbuf,CM_Port,sizeof(tempbuf));
		i = login_CM_ack(input,tempbuf,0x11,j);
		return i;
	}
	else
	{
		ReadUserBlock(input,Cm_Id,sizeof(input));		/*	send CMID; 6 numbers!	*/								
		j = String_To_Int(input);
		ReadUserBlock( input,CsFixed_IP1,sizeof(input));		
		ReadUserBlock(tempbuf,CM_Port,sizeof(tempbuf));
		i = login_CM_ack(input,tempbuf,0x01,j);
		if(i)
		{
			ReadUserBlock( input, Heart_Time,sizeof(input));	
			j = String_To_Int(input);
			_Get_CMIP(input,sizeof(input));
			if(strcmp(input,"0.0.0.0") )
			{
				ReadUserBlock(tempbuf,CM_Port,sizeof(tempbuf));
				i = login_CM_ack(input,tempbuf,0x11,j);
				if(i)return 1;
			}
		}
		ReadUserBlock(input,Cm_Id,sizeof(input));		/*	send CMID; 6 numbers!	*/								
		j = String_To_Int(input);
		ReadUserBlock( input,CsFixed_IP2,sizeof(input));		
		ReadUserBlock(tempbuf,CM_Port,sizeof(tempbuf));
		i = login_CM_ack(input,tempbuf,0x01,j);
		if(i)
		{
			ReadUserBlock( input, Heart_Time,sizeof(input));	
			j = String_To_Int(input);
			_Get_CMIP(input,sizeof(input));
			if(strcmp(input,"0.0.0.0") )
			{
				ReadUserBlock(tempbuf,CM_Port,sizeof(tempbuf));
				i = login_CM_ack(input,tempbuf,0x11,j);
				return i;
			}
		}
		return 0;
	}
}

⌨️ 快捷键说明

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