📄 smsdrive.c
字号:
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/* void TC35_ATV1(void) // at联机测试命令
{
while(1)
{
TI=0; //清除发送标志
RI=0; //清除接收标志
uart_send(Command_ATV1,6); //串口发送 at联机测试命令
deal_with_attention();
DelayMs(250); //延时,等待TC35的反馈信息
DelayMs(250);
DelayMs(250);
DelayMs(250);
if(flag == 1 && count == 6)
{
if(rec[2]=='O'&&rec[3]=='K')
{
deal_with_right();
flag=0;
count=0;
break;
}
else
{
deal_with_error();
flag=0;
count=0;
}
}
}
}*/
//////////////////////////////////////////////////////////////////////////////////////////////////////
/*===========================================
*函数名:TC35信号强度测试 子函数
*参 数:
*功 能:
*返回值:
*作 者:weishao2401 2009/4/29
*============================================*/
void TC35_SignalTest(void) // TC35信号强度测试
{
while(1)
{
TI=0;
RI=0;
uart_send(Command_Csq,7); // AT+CSQ
deal_with_attention();
DelayMs(250); //延时,等待TC35的反馈信息
DelayMs(250);
DelayMs(250);
DelayMs(250);
if(flag == 1 && count == 28)
{
if(rec[18]== '9'&& rec[19]== '9')
{
deal_with_right();
flag=0;
count=0;
break;
} //如果第19和第20个字符分别是“9和“9”,那正确,直接退出
else
{
deal_with_error();
flag=0;
count=0;
} //出错,进入下一次循环
}
}
}
/*===========================================
*函数名:TC35短信格式设置 子函数
*参 数:
*功 能:
*返回值:
*作 者:weishao2401 2009/4/29
*============================================*/
void TC35_AtCmgf1(void) // TC35短信格式设置
{
while(1)
{
TI=0;
RI=0;
uart_send(Command_Cmgf1,10); // AT+Cmgf =1
deal_with_attention();
DelayMs(250); //延时,等待TC35的反馈信息
DelayMs(250);
DelayMs(250);
DelayMs(250);
if(flag == 1 && count == 16)
{
if(rec[12]=='O'&&rec[13]=='K')
{
deal_with_right();
flag=0;
count=0;
break;
}//如果第13和第14个字符分别是“O和“K”,那说明正确,直接退出,否则就说明出错了
else
{
deal_with_error();
flag=0;
count=0;
} //出错,进入下一次循环
}
}
}
/*===========================================
*函数名:TC35编解码字符设置 子函数
*参 数:
*功 能:
*返回值:
*作 者:weishao2401 2009/4/29
*============================================*/
void TC35_AtCscs(void) // TC35编解码字符设置
{
while(1)
{
TI=0;
RI=0;
uart_send(Command_Cscs,12); // AT+CSCS=GSM
deal_with_attention();
DelayMs(250); //延时,等待TC35的反馈信息
DelayMs(250);
DelayMs(250);
DelayMs(250);
if(flag == 1 && count == 18)
{
if(rec[14]=='O'&&rec[15]=='K')
{
deal_with_right();
flag=0;
count=0;
break;
}//如果第15和第16个字符分别是“O和“K”,那说明正确,直接退出,否则就说明出错了
else
{
deal_with_error();
flag=0;
count=0;
} //出错,进入下一次循环
}
}
}
/*===========================================
*函数名:TC35新消息提示设置 子函数
*参 数:
*功 能:
*返回值:
*作 者:weishao2401 2009/4/29
*============================================*/
void TC35_AtCnmi(void) // TC35新消息提示设置
{
while(1)
{
TI=0;
RI=0;
uart_send(Command_Cnmi,12); // AT+CNMI=2,1
deal_with_attention();
DelayMs(250); //延时,等待TC35的反馈信息
DelayMs(250);
DelayMs(250);
DelayMs(250);
if(flag == 1 && count == 18)
{
if(rec[14]=='O'&&rec[15]=='K')
{
deal_with_right();
flag=0;
count=0;
break;
}//如果第15和第16个字符分别是“O和“K”,那说明正确,直接退出,否则就说明出错了
else
{
deal_with_error();
flag=0;
count=0;
} //出错,进入下一次循环
}
}
}
/*===========================================
*函数名:TC35读取短消息 子函数
*参 数:
*功 能:
*返回值:
*作 者:weishao2401 2009/4/29
*============================================*/
/*===========================================
AT+CMGR=7
+CMGR: 1,,23
[0891][683108301505F0][040D91][683164865667F7][0000][90607051008123][03][31D90C]
OK
41 54 2B 43 4D 47 52 3D 37 0D 0D 0A 2B 43 4D 47 52 3A 20 31 2C 2C 32 33 0D 0A [30 38 39 31 36 38 33 31 30 38 33 30 31 35 30 35 46 30 30 34 30 44 39 31 36 38 33 31 36 34 38 36 35 36 36 37 46 37 30 30 30 30 39 30 36 30 37 30 35 31 30 30 38 31 32 33 30 33 33 31 44 39 30 43] 0D 0A 0D 0A 4F 4B 0D 0A
前26个字符是状态显示的,27开始是数据,倒数8个也是命令格式方面的。
*============================================*/
void TC35_AtCmgd();
void TC35_AtCmgr() // TC35读取短消息
{
TI=0;
RI=0;
uart_send(Command_Cmgr,10); // AT+CMGR=
deal_with_attention();
DelayMs(250); //延时,等待TC35的反馈信息
DelayMs(250);
DelayMs(250);
DelayMs(250);
DelayMs(250);
// TC35_AtCmgd();
//出错,进入下一次循环
}
/*===========================================
*函数名:TC35删除短消息 子函数
*参 数:
*功 能:
*返回值:
*作 者:weishao2401 2009/4/29
*============================================*/
/*===========================================
接收到:41 54 2B 43 4D 47 44 3D 36 0D 0D 0A 4F 4B 0D 0A
对应字符:
AT+CMGD=6<CR>
OK
*============================================*/
void TC35_AtCmgd() // TC35删除短消息
{
ydl=0;
TI=0;
RI=0;
uart_send(Command_Cmgd,10); // AT+CMGD=
deal_with_attention();
DelayMs(250); //延时,等待TC35的反馈信息
DelayMs(250);
DelayMs(250);
{ if(flag == 1&& count == 16)
{
if(rec[12]=='O'&&rec[13]=='K')
{
deal_with_right();
flag=0;
count=0;
}
else
{
deal_with_error();
flag=0;
count=0;
} //出错,进入下一次循环
}
}
}
/*===========================================
*函数名:TC35 初始化 子函数
*参 数:
*功 能:
*返回值:
*作 者:weishao2401 2009/4/29
*============================================*/
void TC35_Init(void)
{
TC35_AtSend(); //AT联机测试
DelayMs(250);
DelayMs(250);
TC35_SignalTest(); //TC35信号测试
DelayMs(250);
DelayMs(250);
TC35_ATE1() ;
DelayMs(250);
DelayMs(250);
//TC35_ATV1() ;
//DelayMs(250);
// DelayMs(250);
TC35_AtCmgf1(); //TC35短信格式设置,设为 文本格式
DelayMs(250);
DelayMs(250);
TC35_AtCscs(); //TC35显示字符设置,设为 GSM字符
DelayMs(250);
DelayMs(250);
TC35_AtCnmi(); // TC35新消息提示设置,设置为来消息提示
DelayMs(250);
DelayMs(250);
}
/*===========================================
*函数名:TC35 文本短信发送 子函数
*参 数:U8 User_ID
*功 能:选择用户User_ID,给他发送短信
*返回值:
*作 者:weishao2401 2009/4/29
*============================================*/
void TC35_AtCmgsT(U8 User_ID) // 发送短信 子函数
{
while(1)
{
TI=0;
RI=0;
switch(User_ID)
{
case 1: uart_send(Command_CmgsT1,20); break; // 给用户1发短信
case 2: uart_send(Command_CmgsT2,20); break; // 给用户2发短信
// case 3: uart_send(Command_CmgsT3,20); break; // 给用户3发短信
// case 4: uart_send(Command_CmgsT4,20); break; // 给用户4发短信
default: deal_with_error(); break;
}
deal_with_attention();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -