第四章 水塔供水远程自动控制系统设计分析
shuiwei=2; }
if((biaozhi==0)&&(shuiwei==0)) {
if((shuiwei_1==1)&&(shuiwei_2==1)) {
biaozhi=1; led2=0;
delay_ms(1000);
Sendsms(\
//回复消息
led2=1; }
}
(3)回复短消息判断语句:
if((biaozhi2==1)&&(shuiwei==2)) {
if((shuiwei_1==0)&&(shuiwei_2==0)) {
biaozhi=0; biaozhi2=0; led2=0; JQ=1;
delay_ms(1000);
Sendsms(\ //回复消息 led2=1; } }
if(k1==0)
{ Delsms(1);//删除短信
//Readsms(1); //读短信
//Sendcmd(flag_biaozhi); //发送AT命令 }
- 16 -
大学学士学位论文
{ 信息 }
if(new_sms==1)
//查询新短息
led2=0; //读完成指示 delay_ms(1000);
Readsms(1); new_sms=0; delay_ms(1000);
Delsms(1);//删除短信 delay_ms(1000);
//读短信
if((flag_biaozhi[2]=='O')&&(flag_biaozhi[3]=='P'))//判断是OP
{
biaozhi2=1;
Sendsms(\ JQ=0; led2=1; } else {
Sendsms(\ //delay_ms(2000); led2=1; }
//回复消息
//回复消息
4.3.2 SMS短信模块的设计
在这个系统中短信模块起着一个功能连接或者是推动的作用,我们与单片机的交互也是靠着短信模块来实现的,所以这是改善用户体验的一个功能性模块,虽然短信模块有现成的硬件电路,但是使用的时候我们也要有相应的软件进行配置和驱动,设置如下。
#ifndef __SMS_H__ #define __SMS_H__
#include
- 17 -
第四章 水塔供水远程自动控制系统设计分析
#define uchar unsigned char #define uint unsigned int #define ulong unsigned long
extern uchar idata rbuff[]; extern uchar extern bit extern bit bit kai=0;
void Init_tc35(void);
//判断是否连接TC35
void Sendcmd(uchar *cmd); void Sendchar(uchar c); void Sendsms(uchar *q);
//发送AT命令 //发送一个字符
//向指定的号码发送短消息 //读取指定索引号的短信内容
//删除指定索引号的短信内容
data databuff[]; tc35_init_ok; receive_ok;
extern uchar rcount;
extern bit new_sms;
void Readsms(uchar index); void Delsms(uchar index); #endif
对手机卡的短信模块的连接,以及短息超时时的处理方法进行配置,其程序主要部分如下。 #include \
#define uchar unsigned char #define uint unsigned int #define ulong unsigned long
extern uchar numbuff[]; extern uchar flag_biaozhi[];
void Sendcmd(uchar *p) { while(*p)
- 18 -
//发送AT命令
大学学士学位论文
{ SBUF=*(p++); while(TI==0);
TI=0;
}
}
void Init_tc35(void)
{ uint i=0xffff; rcount=0; receive_ok=0; Sendcmd(\ while(receive_ok==0) { i--; if(i==0)
{ rcount=0; receive_ok=0; return;
}
}
receive_ok=0; rcount=0; delay(4000);delay(4000);
i=0xffff;
void Readsms(uchar index)
{ ulong i=0x1ffff;
bit es; receive_ok=0;
rcount=0;
//判断是否连接TC35
//超时还未响应则返回
//读取指定索引号的短信内容
//这个值不能再小
- 19 -
第四章 水塔供水远程自动控制系统设计分析
Sendcmd(\ Sendchar(index+0x30); Sendchar(0x0D); rcount=0; receive_ok=0; ES=es;
}
void Delsms(uchar index) { ulong i=0x5fffff; receive_ok=0; rcount=0;
Sendcmd(\ Sendchar(index+0x30); Sendchar(0x0D); while(receive_ok==0) {
i- if(i==0)
{ rcount=0; receive_ok=0; return;
}
}
receive_ok=0; rcount=0;
}
void Sendsms(uchar *q) {
//恢复中断
//删除指定索引号的短信
//删除等待5秒,有的时候删除短信很慢 //超时还未响应则返回
//向指定的号码发送短消息(英文消息)
- 20 -