找回密码
 注册
关于网站域名变更的通知
查看: 570|回复: 1
打印 上一主题 下一主题

基于GSM家用防盗报警

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2019-5-25 10:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
uchar strsearch(uchar *ptr2,uchar *ptr1_at)//查字符串*ptr2在*ptr1中的位置6 [" }# x1 A$ n& G" O/ y. E
//本函数是用来检查字符串*ptr2是否完全包含在*ptr1中" j: h  O, N: Q$ ~4 h9 J( ]
//返回:  0  没有找到
5 S, ?/ q1 d. V% B" g( z# _2 U0 `//       1-255 从第N个字符开始相同5 N6 D, @3 P1 \( k" P
{5 N+ I- t" Z2 E3 N1 s; q0 d& Y* C
//、        uchar max_length;: u2 D( [  N: j4 B/ e2 s# v
        uchar i,j,k;
2 |9 f# K! `! }5 i! }  J        uchar flag;9 d, s2 M8 A2 W6 U; n/ W" B9 G
        if(ptr2[0]==0) return(0);* M/ ?0 G& {+ x" B  W$ [
        flag=0;
, v/ y$ m3 J/ h4 J, p  S        for(i=0,j=0;i<RsBuf_N;i++)' A* X" i! ~, r8 B1 e# S
        {
8 q( X5 O" e, }) y" S9 C        if(ptr1_at[i]==ptr2[j])! a6 q" Z7 \3 G) @: u; o5 z
        {//第一个字符相同
. X) d+ a0 z1 {) n) z, M: p6 ~                k=i;! f5 c* g: A& F. w0 ^6 H6 l
                //for(k=i;k<MAX_TM-2;k++,j++)% Z0 v) L3 c4 [3 Y
                do {
8 v5 C3 j! f8 A5 N9 Z( C                        if(ptr2[j]=='\0')//比较正确- b: J0 v5 [% \, S# q/ k1 z+ ?/ u* v+ [
                                return(i+1);               //返回值是整数,不含0# X8 O1 B7 D6 B3 i7 E, L7 O
                        if(ptr1_at[k]!=ptr2[j]) break;0 }- K( C5 G7 {1 @
                        k++;j++ ;         . |& S: y# M' w
                } while(k<RsBuf_N) ;' U* E* B$ a* N5 d' ?0 ~9 m

/ |# f2 w8 H6 v& h& f) g/ M                j=0;
, g4 ]  {; V" W8 D        }! M( Z0 m& [. a: ~7 {, {0 y. _
        }
/ Y$ R( N5 Y! j0 D7 J* N, J1 n        return(0);
+ I- K! ^6 n( o* O4 r; N) a& Y}. R- e8 W5 C9 m
; w2 P& A' C- a3 \2 f! R& G
# ~/ p& ?* E4 l- r0 `: n1 ~( s
//  通讯中断接收程序   中断函数无返回值2 z$ u  N) D4 n3 e
  void uart_rx(void)  interrupt 4        using 3          //放在这里 和放在main()里面是一样的* Y/ Z* k2 j7 B+ B
{
2 T. O  r# Z" }2 [         EA=0;
) |$ R# d/ k% C0 z8 o  _           if((RsPoint<RsBuf_N)&&RI) //必须判断RI是否为1,RI=1的话表示接收一桢数据完毕
3 x& @& K: ^+ ?( @5 d( G        //if(RI)
$ n% x7 n  v$ q0 Q- F' K    {
+ y4 K8 f2 N& l" T# z            RI=0;
1 z- ~- s2 u, h            RsBuf[RsPoint++]=SBUF;
% Y# ?  {/ ~) N6 Q, P! r5 J                //RsBuf[RsPoint]=0x00;   //将下一个数据清零! m7 o* c2 i3 e4 S
                //SendASC(RsBuf[RsPoint-1]);% I* _$ y! _8 |5 k  F" \
                //lcd_disp_str(RsBuf ,2);7 S9 V  D1 X" W) j
    }
9 H) L' F& V' I! B. }% ]        EA=1;
4 Z: w0 r) a( _4 ` }
% [0 r4 D% D$ A  `4 r
5 J3 G4 m* [: b/ }% B. B( N: }% L
. G+ f% x7 ~3 k5 ^  \
9 e0 e+ T" y1 m. [ /***********************发送TEXT短信息********************************" ~  Z+ I% q3 g$ N
*功    能: TEXT模式发送短信息
3 k9 S6 G: _3 u0 i. j3 V) v*形    参: char *dialnum 目的号码+8613333333333    char *text发送内容
) a. G) X0 l& z; r*返 回 值: 1 发送成功  0 发送失败
2 \; f2 L  E9 K, ]: u2 e*备    注:发送TEXT短信息  之前应该先  1,设置短消息模式   AT+CMGF=? (0)=PDU (1)=TEXT
) w# D% C. N8 i- y+ K- L                                  2,设置短消息中心     AT+CSCA=“+8613800531500”回车                 
% h# e9 `( x# e9 m" J" \( f$ a% B6 \. |3 e1 {0 X1 o9 T; n4 h- x1 c' t
*****************************************************************/
$ Q" m+ }- Q1 U, _$ Fchar TransmitText()   //发送号码        发送内容,字母或数字5 D! A' b6 x& s0 S0 ]
{% `6 {$ T) W! D0 u0 I" _
        uchar i=5,j=5;
- E0 q" T9 W6 a9 Y) m& ]        uchar p;, i8 v2 o/ r2 E
        uchar send_number;8 X. Q1 n4 U4 Y" G/ f9 ?! i$ u7 V
        5 c0 U3 c; @6 ]4 Z
        SendString("AT+CMGF=1\r\n");        8 |  p% a( {* j4 T. l
               
2 h' A6 ^! a% U. D                delayms_1000ms();
: G7 O# |3 E# @. a- D4 a                & n3 e. Y2 p- g5 M: b
                SendString("AT+CSCS=\"UCS2\"\r\n");        0 W/ y' `7 V) |$ T$ O! Z
               
, m; J. `( v& t                delayms_1000ms();
- n# d" `: k# r- c: O               
: [1 ^# N! I; j# J6 F                SendString("AT+CSMP=17,0,2,25\r\n");       
# u7 G# b$ U8 S/ C3 E8 f/ k" V               
( c; f) ]7 J* H5 d7 B                delayms_1000ms();
6 `3 L( n2 G. l- [4 ], X               
+ @/ G* ~9 O3 R( E                SendString("AT+CMGS=");        //信息发送指令 AT+CMGS=//发送短信内容长度
/ _! v0 ~- u; j4 e4 H4 F5 ~0 o' w                SendASC('"');" O' U  Y$ n- ^/ K) u
                for(send_number=0;send_number<11;send_number++)
/ ]" T1 G5 Z& r; C; `' w                {* Y1 j7 z7 `+ Z0 M) E7 I. I
                        SendASC('0');; j4 t- m7 C7 A5 B' [4 s' C
                        SendASC('0');
3 v0 ]) L- @/ g8 [: p7 S/ g: `                        SendASC('3');$ h4 u7 Z) x7 e# X* w
                        SendASC(dianhuahaoma[send_number]);0 ~5 W# z7 t! M
                }   
. m0 I8 D2 F0 \7 v; b% X                SendASC('"');
- @$ E5 g7 \) [                SendASC('\r');                        //发送回车指令//4 B% j( l# E2 E+ F2 Q  q3 S8 _
                SendASC('\n');                        //发送换行指令//5 ^+ [/ I9 B  s  |5 v1 i
                * h; l! g( i1 G
                delayms_1000ms();
- B  Y1 J0 L$ r: e; G
/ `+ ^& t: i2 I, `                SendString("76D16D4B533A57DF67094EBA51654FB5FF01");          //监测区域有人入侵!
' d: l$ Z$ k. O4 j
4 a. Y4 E, _2 l# `; D& r$ m0 a, f                delayms_1000ms();
7 J, x7 M! Z1 `) M% Q/ V' c               
" L2 i: s# S. ?7 b0 Y                SendASC(0x1a);
; Z# Z# F0 K$ I1 p. o- }/ m9 t' w2 n! u: U  Z& ]$ ^: t
                SendASC('\r');
, y' w' v! p9 R% a5 O                   SendASC('\n');
, z2 }0 _, {5 z! ?1 Y4 e                SendString("AT+CMGF=1\r\n");2 }$ e" f5 y3 h, ?1 c3 }0 n* s
    delayms_1000ms();
& o  T5 c  q/ z" o- i                SendString("AT+CSCS=");
, i: x/ @. @1 L7 n3 y0 t6 u0 m& u0 o2 g- s    SendASC('"');' ?8 f' U# _, A; `9 j- {
        SendString("GSM");
8 _4 k2 x1 {! Y3 n8 x) Y! K        SendASC('"');
: r) B' R$ [' n5 P: E        SendString("\r\n");
/ c& H! ^5 m% x  }& S0 c                        delayms_100ms();: c0 I" c6 }; v5 p) w* x& G9 F4 y
                        while(j--)
8 n" T' }# y) x& ~- o' p; H6 ~                        {
: [7 _% s$ l: y  X1 O                                delayms_100ms();
0 X; y' Q* `% P  ^7 F. i2 Z0 }                                p=strsearch("ERROR",RsBuf);; ?- Z; P( v. a# m: s! U2 y# M0 V" t
                    if(p!=0)7 Y- h' m1 s' W! ~3 w. U$ E( m( b' b
                    {
7 _% x8 [. x8 \( T+ c                            p=0;9 p9 r+ p0 B: V: E& W3 a! @
                             return(0);
! i* h( ^$ g( m8 {  _+ e: k                                  
6 k. y2 J" `- o                                }5 U# W6 z. g+ t: v6 M6 v) T
                                p=strsearch("OK",RsBuf);; r  U0 ~. C& M. z1 J4 b- q
                                if(p!= NULL )
3 \+ x2 _* Q0 m% |( u                                {
6 A' a2 w4 w# E6 t: S! w                                        p=0;
+ A8 K( ^  J5 J; m# G0 X                                        return 1;0 a; \+ p# L: \
                                }
  z; H' x9 E7 u3 o' j                        . [/ m1 m; N: G1 e# Z7 {
                                delayms_1000ms();
( [1 @2 @( c2 }1 Q0 w9 d4 x                        - ~2 R0 q7 \+ i& \
                    }                + H+ y3 j- _% _5 R" I

8 c& Q6 h: k8 x& S) C        SendASC(0x1b);9 z# E0 O2 L6 r2 v( Q, J& h
        delayms_1000ms();
! p- g$ P, U" `& I4 |' z        delayms_1000ms();
% E; ~9 K, }0 z; P        RsPoint=0;( W2 |! D& D2 ]
        return 0;           * }& V- F0 W) q6 x( X2 M
}
' s! p2 C4 ]9 p% v% b//========处理短信=========+ e( g. j7 K. I2 l% J
void deal()                   z% a" ?/ @# Q0 X7 D3 S) E( y5 _( x
{         uchar p,j,i;
' I0 S, h) Z; w& }     //        SendString(RsBuf);5 f/ z& n  j  p6 J& V! P
        p=strsearch("+CMTI",RsBuf);           9 [6 S4 j5 f* V. [' H, d/ y
          // p=1;
/ T6 D: \  E' b4 d( f0 A( [& D. e           if(p!=0)+ Y9 |" ]* d$ ^1 R
           { 9 F2 i7 s! X2 ~! d
            for(j=10;j<RsBuf_N;j++)
6 A+ ?& J( K0 Q) w1 M                  {( Y$ A) S+ c3 B8 _* C; z$ `
                    RsBuf[j]=0;6 d+ `* r% X7 t) L
                  }       
1 D9 g0 ]4 G( k6 {                  RsPoint=0;
9 o/ P+ _9 }- d5 j0 M* I                
0 F6 U' @2 a1 [$ D             //  write_1602com(0xcd);; a$ V0 O6 u5 c* H) K
                //          write_1602dat('1');
7 n* T+ G; c" @                   delayms_1000ms();+ m+ V1 q% v5 D. T
         SendString("AT+CMGL=");
/ q2 A6 t3 w" y( D# ?                  SendASC('"');
7 u. ^7 R! _7 G. _% w$ k                  ) c& Q5 M7 ?- E2 X% g
                  SendString("REC UNREAD");" J# J3 [& A9 d) L
                  SendASC('"');$ [/ `0 T) v5 K2 d7 T: P9 [
                  SendASC(',');- p  @7 i+ E4 e9 j3 y/ K
                  SendASC('0');7 b$ ]* u, p- g# G) j: W6 }+ h4 u" w
                  SendASC('\r');
% q' \" M( ~% Q& T5 I                  SendASC('\n');! e: F& s# {' V; `; ]
                  delayms_1000ms();  v  ~" l' P1 W& R- m$ v% s3 j5 b
                  delayms_1000ms();. G& i" ]5 ~! Z" j$ x
                  delayms_1000ms();
/ `6 w! ^% y, K8 w8 \/ x7 v5 ^                  delayms_1000ms();
% b8 L8 n( u" v" U4 t                  delayms_1000ms();
; F( h9 R4 R& o$ M, e1 h. M8 {8 L                  delayms_1000ms();) }, @+ G% g' ?, R, c8 g" n% p
                //          write_1602dat('3');4 C1 z/ N" E2 e. @3 ^0 [
              i=strsearch("+CMGL",RsBuf);
. P% H5 b: l# L5 V6 x3 y                   RsPoint=0;2 A9 z  c5 ~2 y7 u$ g* b, }
             
2 C: S6 E8 q! M- U- `) L6 e5 W              if(i!=0)2 p% L2 v% m  V! I% H5 L
              {+ M. C" R& Y$ i7 N
                           p=0;       
% r. r8 }2 y1 N7 L  V# W  X2 @                    i=0;
3 P% {  W5 U& \* F                        i=strsearch("5E03",RsBuf);7 |8 n/ e9 ]' X( N" j& x
                        if(i!=0)
) T6 h& V: k/ e+ L2 j6 R4 A                        {: R# Z' Y  {5 q7 M
                                i=0;; S- ?' y) K5 B) f% w4 G& J* u
                                bufang=1;
2 D+ B9 m* z0 P& b                                TR0=1;   //T0的运行控制位,TR0置1时,T0开始工作,TR0置0时,T0停止工作$ v5 K5 x: i3 a# H' w( \
                        }% f# S. y6 j8 i- S
                        i=strsearch("64A4",RsBuf);
/ o* K8 _/ x1 O( G6 D, L                        if(i!=0)
+ N6 |+ B) i/ b9 v                        {  w- q# j! q' i: A
                                i=0;3 H& @; I/ |4 x0 |
                                TR0=0;; e$ T& r0 a7 F9 o5 b. E
                    fm=1;
# s( P- z0 C0 V- v" l- x                                LEDG=1;
* `! q& g8 N9 a# k6 \# I* G4 s# Z- e                    bufang=0;8 O- E& Z$ Z, V* Z
                    bjcount=0;
6 h' T0 T' d; w$ ^0 R                                bfcount=0;
: x3 f7 v8 w1 U1 S& D% P2 {. ^                                baojing=0;
, C$ f" ~3 q6 p8 q8 R) ^5 M        & l2 k: h1 t& h% F8 E
                        }
& P$ s, v; O( p" ~0 g( B
/ j3 u) _1 D8 m2 O0 _% o              }+ j" U" W; |% J: c, h% X
                  delayms_1000ms();$ M9 P0 z6 n* `4 V1 k  m
                 SendString("AT+CMGD=0,3\r\n");" d8 E4 L( E( c5 r- p+ f
             
4 z+ `" h. h1 X//       delayms_1000ms();% z7 h9 h& ]- c( e
            }4 X6 G9 T3 w- f/ \
}& T4 k) ^, G; n) O( a7 x3 n

& r. p/ `/ x: h( q* H0 a
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-10-11 07:04 , Processed in 0.140625 second(s), 23 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表