📄 main.bak
字号:
* Modify Date: 2008/09/26
* **********************************************************************/
void u6WaitSndOver( void )
{
u6scnt=0;
while(u6scnt++<=5000) //receive the last char.
{
WDTE=0xAC;
NOP();
NOP();
}
}
/**********************************************************************
* Func Name : u6WaitRcvOver
* Descript :
* Parameters : None
* Returns : None
* Author : Nakata
* Create Date: 2008/10/11
* Modify Date: 2008/10/11
* **********************************************************************/
void u6WaitRcvOver( void )
{
u6rcnt=0;
while(u6rcnt++<=5000) //receive the last char.
{
WDTE=0xAC;
NOP();
NOP();
}
}
/**********************************************************************
* Func Name : u0WaitRcvOver
* Descript :
* Parameters : None
* Returns : None
* Author : Nakata
* Create Date: 2008/10/15
* Modify Date: 2008/10/15
* **********************************************************************/
void u0WaitRcvOver( void )
{
u0rcnt=0;
while(u0rcnt++<=10000) //receive the last char.
{
WDTE=0xAC;
NOP();
NOP();
}
}
/**********************************************************************
* Func Name : u0WaitSndOver
* Descript :
* Parameters : None
* Returns : None
* Author : Nakata
* Create Date: 2008/09/26
* Modify Date: 2008/09/26
* **********************************************************************/
void u0WaitSndOver( void )
{
u0scnt=0;
while(u0scnt++<=10000) //receive the last char.
{
WDTE=0xAC;
NOP();
NOP();
}
}
/**********************************************************************
* Func Name : SendRetInfo
* Descript : send "Sim Info Error" to PC
* Parameters : None
* Returns : None
* Author : Nakata
* Create Date:
* Modify Date:
* **********************************************************************/
void SendRetInfo( uchar *info )
{
int len;
len = strlen(info);
UART6_SendData(info,len);
//wait for u6 sending over.
u6WaitSndOver();
}
/**********************************************************************
* Func Name : ModuleSyncBR
* Descript : Send out data via Uart6
* Parameters :
* Returns : None
* Author : Nakata
* Create Date: 2008/10/20
* Modify Date: 2008/10/20
* *********************************************************************/
uchar ModuleSyncBR( uchar br )
{
uchar ucResult;
uint len;
//execute "AT+IPR=19200"
if(br==_4800BPS)
{
memcpy(tempBuf,"AT+IPR=4800\r",12);
tempBuf[12]=0;
len = 12;
}
else if(br==_9600BPS)
{
memcpy(tempBuf,"AT+IPR=9600\r",12);
tempBuf[12]=0;
len = 12;
}
else if(br==_1920BPS)
{
memcpy(tempBuf,"AT+IPR=19200\r",13);
tempBuf[13]=0;
len = 13;
}
else if(br==_3840BPS||br==_5760BPS)
{
memcpy(tempBuf,"AT+IPR=38400\r",13);
tempBuf[13]=0;
len = 13;
}
else if(br==_1152BPS)
{
memcpy(tempBuf,"AT+IPR=115200\r",14);
tempBuf[14]=0;
len = 14;
}
else
{
return FALSE;
}
RESP_BUF[0]='O';
RESP_BUF[1]='K';
RESP_BUF[2]=0;
RESP_LEN = 2;
DelayCnt = 3; //delay 3s
ucResult = send_at_cmd(tempBuf,len);
return (ucResult);
}
/*
**-----------------------------------------------------------------------------
**
** Abstract:
** This function is responsible for setting DTU's baudrate.
**
4800
9600
19200
38400
57600
115200
** Parameters:
** None.
**
** Returns:
** None.
**
**-----------------------------------------------------------------------------
*/
uchar set_baud( uchar baud,uchar parity )
{
//sync to module
if(ModuleSyncBR( baud )!=TRUE) return FALSE;
memset(tempBuf,0,BAUD_LEN);
tempBuf[0]=baud;
tempBuf[1]=parity;
//save data to flash
if(SaveParaToFlash(BAUD_ADR,tempBuf,BAUD_LEN)!=TRUE)
{
NOP();
NOP();
if(ModuleSyncBR( gBAUD )!=TRUE)
{
SendRetInfo("\r\n>Can't Restore IPR.\r\n");
return FALSE;
}
return FALSE;
}
gBAUD=baud;
gPARITY = parity;
return TRUE;
}
/*
**-----------------------------------------------------------------------------
**
** Abstract:
** This function is responsible for UART6 data transfering.
**
** Parameters:
** txbuf: transfer buffer pointer
** txnum: buffer size
**
** Returns:
** MD_OK
** MD_ERROR
**
**-----------------------------------------------------------------------------
*/
uchar read_baud( void )
{
uchar ucResult;
ushort usReadAdr;
//read id
usReadAdr = usEEPROMBlankAdrSearchEx( PARA_BLOCK_NO );
if(usReadAdr == 0) return FALSE;
if(usReadAdr>=4+PARA_LEN)
{
usReadAdr = usReadAdr - PARA_LEN;
}
//read watch dog time
ucResult = ucEEPROMReadEx(PARA_BLOCK_NO,usReadAdr+BAUD_ADR,BAUD_LEN,tempBuf);
if(ucResult!=TRUE)
{
gBAUD = _9600BPS;
gPARITY = _NULL;
return FALSE;
}
gBAUD = tempBuf[0];
gPARITY = tempBuf[1];
return (TRUE);
}
/*
**-----------------------------------------------------------------------------
**
** Abstract:
** This function is responsible for UART6 data transfering.
**
** Parameters:
** txbuf: transfer buffer pointer
** txnum: buffer size
**
** Returns:
** MD_OK
** MD_ERROR
**
**-----------------------------------------------------------------------------
*/
uchar read_debugflg( void )
{
uchar ucResult;
ushort usReadAdr;
//read id
usReadAdr = usEEPROMBlankAdrSearchEx( PARA_BLOCK_NO );
if(usReadAdr == 0) return FALSE;
if(usReadAdr>=4+PARA_LEN)
{
usReadAdr = usReadAdr - PARA_LEN;
}
//read watch dog time
ucResult = ucEEPROMReadEx(PARA_BLOCK_NO,usReadAdr+DEBUG_ADR,DEBUG_LEN,tempBuf);
if(ucResult!=TRUE)
{
gDEBUG = _NORMAL;
return FALSE;
}
gDEBUG = tempBuf[0];
return (TRUE);
}
/*
**-----------------------------------------------------------------------------
**
** Abstract:
** This function is responsible for setting DTU's baudrate.
**
** Parameters:
** None.
**
** Returns:
** None.
**
**-----------------------------------------------------------------------------
*/
uchar set_debugflg( void )
{
uchar tmp;
if(u6.Length!=9 ||(u6.Buf[7]!='0' && u6.Buf[7]!='1')) return FALSE;
if(u6.Buf[7]=='0') tmp = _NORMAL;
else tmp = _DEBUG;
memset(tempBuf,0,DEBUG_LEN);
tempBuf[0]=tmp;
//save data to flash
if(SaveParaToFlash(DEBUG_ADR,tempBuf,DEBUG_LEN)!=TRUE) return FALSE;
gDEBUG=tmp; //update debug flag.
return TRUE;
}
/*
**-----------------------------------------------------------------------------
**
** Abstract:
** This function is responsible for checking debug flag.
**
** Parameters:
** None.
**
** Returns:
** None.
**
**-----------------------------------------------------------------------------
*/
void check_debugflg( void )
{
if(gDEBUG==_NORMAL) SendRetInfo("\r\n+DBG: 0\r\n");
else SendRetInfo("\r\n+DBG: 1\r\n");
}
/*
**-----------------------------------------------------------------------------
**
** Abstract:
** This function is responsible for reading mode.
**
** Parameters:
** Returns:
** MD_OK
** MD_ERROR
**
**-----------------------------------------------------------------------------
*/
uchar read_mode( void )
{
uchar ucResult;
ushort usReadAdr;
//read mode
usReadAdr = usEEPROMBlankAdrSearchEx( PARA_BLOCK_NO );
if(usReadAdr == 0) return FALSE;
if(usReadAdr>=4+PARA_LEN)
{
usReadAdr = usReadAdr - PARA_LEN;
}
//read watch dog time
ucResult = ucEEPROMReadEx(PARA_BLOCK_NO,usReadAdr+MODE_ADR,MODE_LEN,tempBuf);
if(ucResult!=TRUE)
{
gMODE = _SMSMODE;
return FALSE;
}
gMODE = tempBuf[0];
return (TRUE);
}
/*
**-----------------------------------------------------------------------------
**
** Abstract:
** This function is responsible for setting DTU's baudrate.
**
** Parameters:
** None.
**
** Returns:
** None.
**
**-----------------------------------------------------------------------------
*/
uchar set_mode( void )
{
uchar tmp;
if(u6.Length!=10 ||(u6.Buf[8]!='0' && u6.Buf[8]!='1')) return FALSE;
if(u6.Buf[8]=='0') tmp = _CMDMODE;
else tmp = _SMSMODE;
memset(tempBuf,0,MODE_LEN);
tempBuf[0]=tmp;
//save data to flash
if(SaveParaToFlash(MODE_ADR,tempBuf,MODE_LEN)!=TRUE) return FALSE;
gMODE=tmp; //update mode flag
return TRUE;
}
/*
**-----------------------------------------------------------------------------
**
** Abstract:
** This function is responsible for checking debug flag.
**
** Parameters:
** None.
**
** Returns:
** None.
**
**-----------------------------------------------------------------------------
*/
void check_mode( void )
{
if(gMODE==_CMDMODE) SendRetInfo("\r\n+MODE: 0\r\n");
else SendRetInfo("\r\n+MODE: 1\r\n");
}
/*
**-----------------------------------------------------------------------------
**
** Abstract:
** This function is responsible for writing data into flash.
**
** Parameters:
** None.
**
** Returns:
** None.
**
**-----------------------------------------------------------------------------
*/
uchar set_para_default( void )
{
uchar ucResult;
//initializate the block
ucResult = ucEEPROMInitEx( PARA_BLOCK_NO );
if(ucResult!=TRUE) return FALSE;
//clear id & ip & port
memset(tempBuf,0,PARA_LEN);
//baudrate
tempBuf[0]=_9600BPS; //9600
tempBuf[1]=_NULL; //no parity
tempBuf[BAUD_LEN]=_NORMAL; //normal mode.
tempBuf[BAUD_LEN+DEBUG_LEN]=_SMSMODE; //sms mode
//write data into flash
ucResult = ucEEPROMWriteEx(PARA_BLOCK_NO,4,PARA_LEN,tempBuf);
if(ucResult!=TRUE) return FALSE;
return TRUE;
}
/*
**-----------------------------------------------------------------------------
**
** Abstract:
** This function is responsible for UART6 data transfering.
**
** Parameters:
** txbuf: transfer buffer pointer
** txnum: buffer size
**
** Returns:
** MD_OK
** MD_ERROR
**
**-----------------------------------------------------------------------------
*/
uchar load_globa_para( void )
{
if(read_baud()!=TRUE) return FALSE; //read baudrate
if(read_debugflg()!=TRUE) return FALSE; //read debug flag
if(read_mode()!=TRUE) return FALSE; //read mode
return TRUE;
}
/*
**-----------------------------------------------------------------------------
**
** Abstract:
** This function is responsible for writing data into flash.
**
** Parameters:
** None.
**
** Returns:
** None.
**
**-----------------------------------------------------------------------------
*/
uchar SaveParaToFlash(ushort addr,uchar *dataBuf,uint dataLen)
{
uchar ucResult;
ushort usReadAdr,usWriteAdr;
//first determine the block validation
ucResult = IsBlockValid( PARA_BLOCK_NO );
//error
if(ucResult!=TRUE) return FALSE;
//search the last data address
usWriteAdr = usEEPROMBlankAdrSearchEx( PARA_BLOCK_NO );
if(usWriteAdr==0) return FALSE;
//get read address
usReadAdr = usWriteAdr - PARA_LEN;
//first read out the data
ucResult = ucEEPROMReadEx(PARA_BLOCK_NO,usReadAdr,PARA_LEN,u6.Buf);
if(ucResult!=TRUE) return FALSE;
if(usWriteAdr+PARA_LEN > BYTES1024) //too longer
{
//initilization the flash
ucResult = ucEEPROMInitEx( PARA_BLOCK_NO ); //initilization
if(ucResult!=TRUE) return FALSE;
usWriteAdr = 4;
}
memcpy(u6.Buf+addr,dataBuf,dataLen);
//write data into flash
ucResult = ucEEPROMWriteEx(PARA_BLOCK_NO,usWriteAdr,PARA_LEN,u6.Buf);
if(ucResult!=TRUE) return FALSE;
return TRUE;
}
/****************************************************************************
**
** Abstract:
** Analzye command strings.
**
** Parameters:
** None
**
** Returns:
** None
**
****************************************************************************/
void analzye_atcmd( void )
{
if(u6.Buf[0]=='r' && u6.Buf[1]=='r')
{
read_block();
return;
}
if(u6.Length>6)
{
//not allow to execute "AT+IPR=n"
if(UpCase(u6.Buf[0])=='A'&&UpCase(u6.Buf[1])=='T'&&u6.Buf[2]=='+')
{
if(UpCase(u6.Buf[3])=='I'&&UpCase(u6.Buf[4])=='P'&&UpCase(u6.Buf[5])=='R'&&u6.Buf[6]=='='&&u6.Buf[7]!='?')
{
return;
}
else if(UpCase(u6.Buf[3])=='D'&&UpCase(u6.Buf[4])=='B'&&UpCase(u6.Buf[5])=='G')
{
u6.Buf[u6.Length]=0;
SendRetInfo(u6.Buf);
if(u6.Buf[6]=='?')
{
check_debugflg();
SendOK();
}
else
{
if(set_debugflg()!=TRUE) SendError();
else SendOK();
}
return;
}
else if(UpCase(u6.Buf[3])=='M'&&UpCase(u6.Buf[4])=='O'&&UpCase(u6.Buf[5])=='D'&&UpCase(u6.Buf[6])=='E')
{
u6.Buf[u6.Length]=0;
SendRetInfo(u6.Buf);
if(u6.Buf[7]=='?')
{
check_mode();
SendOK();
}
else
{
if(set_mode()!=TRUE) SendError();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -