📄 plc_demo.c
字号:
unsigned char len;
xsla = EEPRom_SLA;
xsuba= EEPRom_SUBA;
xsuba1=SMS_SEND_TINE_ADDR;
len = IRcvChar(xsla,xsuba,xsuba1,len);
return len;
}
/*-----------------------------------------
main
主函数
------------------------------------------*/
void main(void)
{
unsigned char PowerOffSendTimes;
unsigned char DisconnectSendTimes;
unsigned char SendSmsType;
unsigned char i, j, k;
Initialize();
LedFlashFlag = 0;
DelayCount = 0;
while( DelayCount < 10000 );
DelayCount = 0;
Display_LCD( Gsm_Title );
strcpy( PCTxBuffer, "NF:InitSysOk\r\n" );
SendStringToPC();
i = 0;
while( Initialized <= 8 )
{
if(ModuleWaitFlag == 0 || DelayCount > 10000 )
{
if( ModuleTxBuffer[0] == 0 )
{
DelayCount = 0;
strcpy( ModuleTxBuffer, Module_AT[Initialized] ); //re-send
}
if( DelayCount > 10000 )
{
i ++;
if( i > 9 )
{
i = 0;
// WDTD = 0x10;
// WDRE = 1;
// WDT = 1;
// SWDT = 1;
// WDOUT= 1;
}
}
}
SendStringToModule( );
//if( RXReg_data == 0x0a )
if( DelayCount > 2000 && ModuleWaitFlag == 1 )
{
JudgeModuleString( );
}
// SendStringToPC( );
}
LedFlashFlag = 0;
// Initiliaze finished
//delay 5 s
LCDRefreshFlag = 1;
while( DelayCount < 1000 );
memset(PCTxBuffer, 0, LINE_LENGTH);
memset(PCRxBuffer, 0, LINE_LENGTH);
memset(ModuleTxBuffer, 0, LINE_LENGTH);
memset(ModuleRxBuffer, 0, LINE_LENGTH);
PowerOffSendTimes = 0;
DisconnectSendTimes = 0;
ModuleWaitFlag = 0;
DelayCount = 0;
PCConnectCount = 0;
strcpy( PCTxBuffer, "NF:InitGsmOk\r\n" );
SendStringToPC();
while(1)
{
/*电源中断处理 */
/************************************************************/
/************************************************************/
/************************************************************/
if( PowerOffDelayCount > 2000 )
{
PowerOffFlag = 1;
PowerOffDelayCount = 0;
}
else
{
PowerOffFlag = 0;
}
if( PowerOffFlag && NetFoxPowerOpenFlag && PowerSmsHasSent == 0 )
{
/*如果电源中断*/
strcpy( PCTxBuffer, "NF:Alarm(AC)\r\n" );
SendStringToPC();
LedFlashFlag = 2;
PowerOffSendTimes = EEPR_AT_data*2;
ModuleWaitFlag = 0;
PowerOffFlag = 0;
Sms_send_type = 1;
PowerSmsHasSent = 1;
SendSmsType = 1;
if(NetFoxConnectOpenFlag == 0 )
{
Display_LCD( Wait_Title );
}
else
{
Display_LCD( ACErr_Title );
}
}
if ( PowerOffSendTimes && ModuleWaitFlag == 0 && SendSmsType == 1 )
{
if( ModuleTxBuffer[0] == 0 && ModuleSendDelayCount > 6000 )
{
DelayCount = 0;
strcpy( ModuleTxBuffer, Sms_PowerOff1 );
if(PowerOffSendTimes > EEPR_AT_data)
ConventPhoneNo2USC2( Phone1, ModuleTxBuffer +9 );
else
ConventPhoneNo2USC2( Phone2, ModuleTxBuffer +9 );
strcat( ModuleTxBuffer, "\"\r\n");
if( NetFoxUseNameOpenFlag)
strcat( ModuleTxBuffer, Name );
strcat( ModuleTxBuffer, Sms_PowerOff2 );
StrCatChar( ModuleTxBuffer, 0x1a );
Sms_edit_mode = 1;
ModuleSendDelayCount = 0;
}
}
/*电源恢复处理 */
/************************************************************/
/************************************************************/
/************************************************************/
if( RePowerOffFlag && NetFoxPowerOpenFlag )
{
/*如果电源恢复*/
LedFlashFlag = 2;
LCDRefreshFlag = 1;
PowerOffSendTimes = EEPR_AT_data*2;
ModuleWaitFlag = 0;
RePowerOffFlag = 0;
Sms_send_type = 1;
SendSmsType = 2;
}
if ( PowerOffSendTimes && ModuleWaitFlag == 0 && SendSmsType == 2)
{
if( ModuleTxBuffer[0] == 0 && ModuleSendDelayCount > 6000 )
{
DelayCount = 0;
strcpy( ModuleTxBuffer, Sms_PowerOff1 );
if(PowerOffSendTimes > EEPR_AT_data)
ConventPhoneNo2USC2( Phone1, ModuleTxBuffer +9 );
else
ConventPhoneNo2USC2( Phone2, ModuleTxBuffer +9 );
strcat( ModuleTxBuffer, "\"\r\n");
if( NetFoxUseNameOpenFlag)
strcat( ModuleTxBuffer, Name );
strcat( ModuleTxBuffer, Sms_PowerOff4 );
StrCatChar( ModuleTxBuffer, 0x1a );
Sms_edit_mode = 1;
ModuleSendDelayCount = 0;
}
}
/* 通讯中断处理*/
/************************************************************/
/************************************************************/
/************************************************************/
if( PCConnectCount > (unsigned long )(EEPR_DT_data*120000) )
{
PCDisconnectFlag = 1;
PCConnectCount = 0;
}
else
{
PCDisconnectFlag = 0;
}
if( PCDisconnectFlag && NetFoxConnectOpenFlag && ConnectSmsHasSent == 0 )
{
/*如果与PC通讯中断*/
strcpy( PCTxBuffer, "NF:Alarm(CON)\r\n" );
SendStringToPC();
LedFlashFlag = 2;
DisconnectSendTimes = EEPR_AT_data*2;
ModuleWaitFlag = 0;
PCDisconnectFlag = 0;
Sms_send_type = 2;
ConnectSmsHasSent = 1;
SendSmsType = 3;
if(NetFoxPowerOpenFlag == 0 )
{
Display_LCD( Wait_Title );
}
else
{
Display_LCD( LinkErr_Title );
}
// led2 = 1;
}
if ( DisconnectSendTimes && ModuleWaitFlag == 0 && SendSmsType == 3)
{
if( ModuleTxBuffer[0] == 0 && ModuleSendDelayCount > 6000 )
{
DelayCount = 0;
strcpy( ModuleTxBuffer, Sms_PowerOff1 );
if(DisconnectSendTimes > EEPR_AT_data)
ConventPhoneNo2USC2( Phone1, ModuleTxBuffer +9 );
else
ConventPhoneNo2USC2( Phone2, ModuleTxBuffer +9 );
strcat( ModuleTxBuffer, "\"\r\n");
if( NetFoxUseNameOpenFlag)
strcat( ModuleTxBuffer, Name );
strcat( ModuleTxBuffer, Sms_PowerOff3 );
StrCatChar( ModuleTxBuffer, 0x1a );
Sms_edit_mode = 1;
ModuleSendDelayCount = 0;
}
}
/* 通讯中断恢复*/
/************************************************************/
/************************************************************/
/************************************************************/
if( RePCDisconnectFlag && NetFoxConnectOpenFlag)
{
/*如果与PC通讯恢复*/
LedFlashFlag = 2;
LCDRefreshFlag = 1;
DisconnectSendTimes = EEPR_AT_data*2;
ModuleWaitFlag = 0;
RePCDisconnectFlag = 0;
Sms_send_type = 2;
SendSmsType = 4;
// led2 = 1;
}
if ( DisconnectSendTimes && ModuleWaitFlag == 0 && SendSmsType == 4)
{
if( ModuleTxBuffer[0] == 0 && ModuleSendDelayCount > 6000 )
{
DelayCount = 0;
strcpy( ModuleTxBuffer, Sms_PowerOff1 );
if(DisconnectSendTimes > EEPR_AT_data)
ConventPhoneNo2USC2( Phone1, ModuleTxBuffer +9 );
else
ConventPhoneNo2USC2( Phone2, ModuleTxBuffer +9 );
strcat( ModuleTxBuffer, "\"\r\n");
if( NetFoxUseNameOpenFlag)
strcat( ModuleTxBuffer, Name );
strcat( ModuleTxBuffer, Sms_PowerOff5 );
StrCatChar( ModuleTxBuffer, 0x1a );
Sms_edit_mode = 1;
ModuleSendDelayCount = 0;
}
}
/*发送字串给模块*/
/************************************************************/
/************************************************************/
/************************************************************/
if( ModuleWaitFlag == 0 )
{
SendStringToModule( );
}
/*Judge receive sms*/
/*
if( ReceiveSMSFlag == 1 )
{
if(ModuleRxBuffer[0] != 0 )
{
Display_LCD(ModuleRxBuffer);
if( StrStr( ModuleRxBuffer, "CMGR"))
{
i = 40;
while( 1)
{
if( ModuleRxBuffer[i] == 0x0a)
{
ModuleRxBuffer[i] = 0x20;
break;
}
else if(ModuleRxBuffer[i] == 0x0d )
ModuleRxBuffer[i] = 0x20;
else if(ModuleRxBuffer[i] == 0 || i > 1000 )
break;
i ++;
}
strcpy(PCTxBuffer, "NF:SMRCV(");
strcpy(PCTxBuffer+9, ModuleRxBuffer+10 );
strcat( PCTxBuffer, ")\r\n");
SendStringToPC();
ReceiveSMSFlag = 0;
}
}
}
*/
/*判断来自模块的字符串*/
/************************************************************/
/************************************************************/
/************************************************************/
if( DelayCount > 1000 )
{
/* Judge Module string */
if(ModuleRxBuffer[0] != 0 )
{
if( ModuleWaitFlag == 1 )
{
//Display_LCD(ModuleRxBuffer);
if( StrStr( ModuleRxBuffer, "+CMGS") )
{
strcpy( PCTxBuffer, "NF:SENDOK\r\n\0");
SendStringToPC();
}
else if( StrStr( ModuleRxBuffer, "+CSQ" ) )
{
//Display_LCD("QWE");
strcpy( PCTxBuffer, "NF:NFCSQ(");
memcpy( PCTxBuffer+9, ModuleRxBuffer+8, 4 );
memcpy( PCTxBuffer+13, ")\r\n\0\0", 4 );
SendStringToPC();
}
else if( StrStr( ModuleRxBuffer, "+CSCA" ) )
{
//Display_LCD("QWE");
strcpy( PCTxBuffer, "NF:NFCSCA(");
memcpy( PCTxBuffer+10, ModuleRxBuffer+10, 14 );
memcpy( PCTxBuffer+24, ")\r\n\0\0", 4 );
SendStringToPC();
}
if( StrStr( ModuleRxBuffer, "OK") )
{
ModuleWaitFlag = 0;
ReceiveSMSFlag = 0;
memset( ModuleRxBuffer, 0, LINE_LENGTH );
ModuleReceiveCount = 0;
if( Sms_send_type == 1 && PowerOffSendTimes > 0 )
PowerOffSendTimes --;
else if( Sms_send_type == 2 && DisconnectSendTimes > 0 )
DisconnectSendTimes --;
}
/* else// if( StrStr( ModuleRxBuffer, "ERROR") || StrStr( ModuleRxBuffer, "500") )
{
ModuleWaitFlag = 0;
memset( ModuleRxBuffer, 0, LINE_LENGTH );
ModuleReceiveCount = 0;
ModuleTxCount = 0;
memset( ModuleTxBuffer, 0, LINE_LENGTH );
Sms_edit_mode = 0;
}
*/
ModuleTxCount = 0;
memset( ModuleTxBuffer, 0, LINE_LENGTH );
}
else
{
if( StrStr( ModuleRxBuffer, "+CMGS") )
{
strcpy( PCTxBuffer, "NF:SENDOK\r\n\0");
SendStringToPC();
}
if( StrStr( ModuleRxBuffer, module_reply[4]) )
{
ReceiveSMSFlag = 1;
strcpy( ModuleTxBuffer, "AT+CMGR=" );
i = strlen(ModuleRxBuffer);
i --;
j = 0;
while( ModuleRxBuffer[i] != 0x20 && i > 0)
{
i --;
j ++;
}
i++;
j--;
for( k = 0; k < j; k ++ )
{
ModuleTxBuffer[8+k] = ModuleRxBuffer[i+k];
}
ModuleTxBuffer[8+k] = '\r';
ModuleTxBuffer[8+k+1] = '\n';
ModuleTxBuffer[8+k+2] = 0;
ModuleSendDelayCount = 0;
//Display_LCD(ModuleTxBuffer);
}
}
memset( ModuleRxBuffer, 0, LINE_LENGTH );
ModuleReceiveCount = 0;
Sms_edit_mode = 0;
}
DelayCount = 0;
/* time out in 8 seconds */
if( ModuleSendDelayCount > 16000 )
{
ModuleWaitFlag = 0;
ReceiveSMSFlag = 0;
}
}
/*判断来自pc 的字符串*/
/************************************************************/
/************************************************************/
/************************************************************/
if( PCWaitFlag == 1 )
{
JudgePCString( );
PCRxBuffer[0] = 0;
PCReceiveCount = 0;
PCWaitFlag = 0;
}
/*led 刷新处理*/
/************************************************************/
/************************************************************/
/************************************************************/
if( LCDRefreshFlag )
{
if(NetFoxPowerOpenFlag == 0 && NetFoxConnectOpenFlag == 0 )
{
Display_LCD( Wait_Title );
}
else if( NetFoxPowerOpenFlag == 1 && NetFoxConnectOpenFlag == 1)
{
Display_LCD( Work_Title );
}
else if( NetFoxPowerOpenFlag == 1 )
{
Display_LCD( WorkAC_Title );
}
else
{
Display_LCD( WorkLink_Title );
}
LCDRefreshFlag = 0;
LedFlashFlag = 0;
}
}// while (1)
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -