📄 login.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 + -