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

基于GSM家用防盗报警

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
uchar strsearch(uchar *ptr2,uchar *ptr1_at)//查字符串*ptr2在*ptr1中的位置: v' ?6 b. X% @( J. S
//本函数是用来检查字符串*ptr2是否完全包含在*ptr1中
4 s4 d7 t( V% F6 Y" O6 C, ~//返回:  0  没有找到2 G2 l, P  q8 M; J
//       1-255 从第N个字符开始相同1 r5 R! l  `! ?+ F8 q
{
& N/ K+ Y& C* j2 {  o//、        uchar max_length;
3 N3 P: H2 F' m        uchar i,j,k;
$ h" x' y" _( g        uchar flag;
, I+ `- q; Y- Q0 x: E) V        if(ptr2[0]==0) return(0);
4 e! H* R1 P% A% }% r& Q& \        flag=0;$ [( v* b  F; x" E$ W* L# u8 V# p
        for(i=0,j=0;i<RsBuf_N;i++)
# b* A# K4 p1 u0 z        {  g3 o: L) [0 N! ^& O6 H# F
        if(ptr1_at[i]==ptr2[j])
8 t% k" v& c& t# J* g* U        {//第一个字符相同
3 N% p* A/ {+ `6 \: [                k=i;
3 T' B; M4 j4 b, X! I+ U' e                //for(k=i;k<MAX_TM-2;k++,j++)+ Q$ x% g7 E8 N0 d! p; k: ~
                do {: G( c1 a+ j" |. ]
                        if(ptr2[j]=='\0')//比较正确
9 a& d" ~: n8 O9 `! K- e  \. @6 ]                                return(i+1);               //返回值是整数,不含0* h# G+ ?+ y( |( N  O5 N
                        if(ptr1_at[k]!=ptr2[j]) break;$ d2 O8 I7 L4 ^2 Y1 j' D" J3 b
                        k++;j++ ;         ' h+ |* Z- m' F4 e
                } while(k<RsBuf_N) ;  ~4 L% a& U% k* m. {2 |
) a* z& |$ z/ b% u. A( j* U  o
                j=0;
6 o4 d9 Q0 g& a* v        }
5 V. R0 _5 h4 Y+ J        }
, E" r% K! j: n- M; G0 C2 L9 Y7 D        return(0);* d$ G) v" X$ K+ C9 B; O0 ~/ G' j' i! j* D
}
4 J8 Y2 l8 d; R3 j' B7 {
' m& a. v9 a+ g( i$ E% z% C( V3 P6 Y0 a' U0 W8 P. i& O; A8 b
//  通讯中断接收程序   中断函数无返回值, G$ a: X! O2 Z
  void uart_rx(void)  interrupt 4        using 3          //放在这里 和放在main()里面是一样的) ?: z9 G, j6 p
{4 G6 A7 \. a7 |
        EA=0; : B7 N4 Y; w0 @+ ]2 ]
           if((RsPoint<RsBuf_N)&&RI) //必须判断RI是否为1,RI=1的话表示接收一桢数据完毕
( S' l% h, r2 [/ O! h        //if(RI)
  r! X' w% _1 K    {
4 w. D+ X  k. i4 h9 `            RI=0;
# O3 R9 M: I! a. L0 t! V            RsBuf[RsPoint++]=SBUF;' \7 p# T. Q2 q1 x
                //RsBuf[RsPoint]=0x00;   //将下一个数据清零( x: y7 B! T" ~* s& j! n
                //SendASC(RsBuf[RsPoint-1]);
) x& _8 F1 r) O+ w3 F                //lcd_disp_str(RsBuf ,2);
$ T6 H& f9 G, D( n) H    }
$ o, R+ q8 q8 i9 R0 R$ |! |        EA=1;0 q7 l5 S6 k' p( i1 C$ X
}
6 @( k& \8 ^' ~- G2 M
) w& ~* {- ]- X; E' F2 D' j- s0 ~# ?. y% \9 R, ]

, ?. ~2 ^) v7 ?2 z4 |! J /***********************发送TEXT短信息********************************
7 f* S6 |$ r$ c4 w; M*功    能: TEXT模式发送短信息
" D3 D) Y0 _, `; P5 G*形    参: char *dialnum 目的号码+8613333333333    char *text发送内容! d- r& Q6 o* G0 V. w5 @
*返 回 值: 1 发送成功  0 发送失败
1 c- ~1 P  ~3 s1 y, D*备    注:发送TEXT短信息  之前应该先  1,设置短消息模式   AT+CMGF=? (0)=PDU (1)=TEXT* D- @) W1 t! v3 ~1 T( w- N
                                  2,设置短消息中心     AT+CSCA=“+8613800531500”回车                 
# O. o+ u7 v# i) z$ |' X1 q5 t: m0 i8 L5 W7 e  e
*****************************************************************/: B" a4 K* s. ^9 g
char TransmitText()   //发送号码        发送内容,字母或数字
* Q& {+ U& o, o( L! c( r! M* W{8 f8 B8 G  [# [/ z+ k1 o
        uchar i=5,j=5;
3 f0 ~) k% |9 l2 M        uchar p;" t& z6 O3 D) g
        uchar send_number;, P4 \. V' h. ?7 ^2 X- T2 q
          y8 C: ?8 [5 x) N# M6 M
        SendString("AT+CMGF=1\r\n");        6 m' ?5 H" R5 q% Y+ Y  R" ?
               
. ~% `& O- k9 @! \                delayms_1000ms();3 e2 |- m) z3 E
               
9 r, B( d* _6 G: p9 h' G$ ?. j                SendString("AT+CSCS=\"UCS2\"\r\n");       
4 N1 j. O+ t$ e& I                , v4 a$ m6 q+ R/ i+ G; {
                delayms_1000ms();  b: Y1 ?# l- Q# j, |4 Z5 I( \
               
! a; X2 ]! y8 |- y  o9 R, \                SendString("AT+CSMP=17,0,2,25\r\n");        3 L. G9 x2 Z% O' V! U" O* s' r9 c
               
' C6 _3 {  |! e) O  D                delayms_1000ms();
+ Q* R; L3 F% G' U. @6 o4 S               
6 ^- Q, i' w+ K" Q% D7 k- t5 I                SendString("AT+CMGS=");        //信息发送指令 AT+CMGS=//发送短信内容长度
* }, _5 G( P  A+ U0 j1 B                SendASC('"');
9 T9 a& |. Q' x                for(send_number=0;send_number<11;send_number++)
9 m1 ~( W; h0 V( z                {
4 l+ z/ ~6 a# w' {# q% A& q                        SendASC('0');  G# }3 I0 B( c$ u
                        SendASC('0');" X% W0 J# _; ~3 S
                        SendASC('3');
' {7 S4 w* ~1 B& r: R0 Y                        SendASC(dianhuahaoma[send_number]);( @) j# s8 t8 g0 c- v/ z
                }   + J! J  p$ z4 I4 G6 p9 A
                SendASC('"');
# F. |, F3 t! Z2 }                SendASC('\r');                        //发送回车指令//
7 b4 f& o1 P/ w$ ]; v7 @8 \( y                SendASC('\n');                        //发送换行指令//
/ G' i! b& @6 W" W6 s+ r               
1 x' @( q, J2 n1 H                delayms_1000ms();
* f9 U3 F' _0 u
* K$ [( A5 x, u( i. [5 {( {" I                SendString("76D16D4B533A57DF67094EBA51654FB5FF01");          //监测区域有人入侵!
  b! y  o9 k" _( L
1 J3 c$ z6 t) _$ T3 p$ h& }- v9 U                delayms_1000ms();0 C; T5 u0 g( H! n9 y
               
+ t  e  V. m# D# D: {                SendASC(0x1a);
7 F) m& u/ b5 q- b
' `$ L: x6 t( u! r                SendASC('\r');
: g$ f5 K& M" I/ G- V, s8 {                   SendASC('\n');. W# k5 w7 M# w" c8 A
                SendString("AT+CMGF=1\r\n");6 h4 q  Z9 W: P
    delayms_1000ms();3 M2 U5 s. p, R
                SendString("AT+CSCS=");
6 w% n/ E1 R3 {. ?* x    SendASC('"');  E- T2 d* Z" |5 r  ^
        SendString("GSM");
) E- x4 _$ U8 e0 @+ C5 m! W        SendASC('"');9 b$ [: x. s; P2 C. d
        SendString("\r\n");
' q2 s# d1 f* F' d' `; p( h                        delayms_100ms();
7 a& \% _/ `+ |* I% B                        while(j--)
0 @1 @% d* x: M  Y/ D& W- _9 K                        {
) p5 w7 G0 L' H                                delayms_100ms();  C4 ~+ f" Z/ J
                                p=strsearch("ERROR",RsBuf);
1 ^/ P( g, c& i: D/ O; I8 C                    if(p!=0)
- G7 G# P) ~, K( ?" _2 j                    {
( O: Y' l2 d0 n! J0 l; [                            p=0;, M6 _* r7 R) r0 r3 Q; m
                             return(0);5 x" F0 m3 `0 l' K
                                  
8 {/ h: s# y3 y% y0 h  D# E2 b                                }& P0 o& |- f9 Z; o1 S
                                p=strsearch("OK",RsBuf);: c, V' L2 S! j( l( `
                                if(p!= NULL )
) u# k& K: Q0 ^1 F3 m+ Q                                {  m6 E8 c( t, M. F- D
                                        p=0;
' a, q7 V9 Z1 p- d; J                                        return 1;- v) N9 }6 w3 d5 C6 l. X" b, L
                                }
6 ^/ r: i% j+ @4 l, J, Q8 ~8 C                       
) ?1 K# g2 Q1 U6 v                                delayms_1000ms();
- a& o/ g" v3 ?7 e, `% {                       
/ v" g$ f9 B& ^                    }               
' Z( ~' d" E5 {( g( M) d* h& D
$ X7 J3 a) J6 e) @+ e. }        SendASC(0x1b);
1 ?; H/ g/ s) w+ W4 m        delayms_1000ms();& s0 G7 F2 X. a2 G. w) F
        delayms_1000ms();
+ b: j( Q- U: f" Y        RsPoint=0;
& i' _2 S9 u0 H8 e0 U6 N        return 0;          
! O6 v* @1 ]7 q3 J}
& j% t' T, K+ D//========处理短信=========
: z5 h. e6 a% l7 h) d" S: rvoid deal()                 
" p% _& z: F1 b' [{         uchar p,j,i;% U. i" R: ^2 n5 f) R7 h
     //        SendString(RsBuf);
9 m. ]/ X& g1 x. q        p=strsearch("+CMTI",RsBuf);          
; Z. u* C4 t3 `2 d( C8 `          // p=1;
3 N- @% [1 g, P1 \4 Q8 \           if(p!=0)1 L0 V" V& |* C/ q. c( a" W/ B( K" v, _
           {
+ \  }8 r+ J5 P0 K* n            for(j=10;j<RsBuf_N;j++)+ w: G& `& `6 V0 \, V
                  {
- N2 j* Z/ J3 ~# R/ w; N" n                    RsBuf[j]=0;  R/ Q7 @7 s' W; g8 p8 g
                  }       
( o5 V  ?9 \5 {3 v- z0 ^                  RsPoint=0;+ g+ c" g* g* X2 w
                
* m( i  [4 j$ |             //  write_1602com(0xcd);
* y- k# T. _7 ]( e# t0 G                //          write_1602dat('1');3 V7 k0 }' b4 A3 M2 u
                   delayms_1000ms();$ r$ ~# Z* e2 _. ]  w' `8 O) Z- Z
         SendString("AT+CMGL=");
. i3 T' r+ V5 p4 h0 y$ c                  SendASC('"');
0 H* y# p) L$ X" R& ]                  6 `" h( P. M- N* x. w. n' J
                  SendString("REC UNREAD");
; A0 M9 a; z5 k                  SendASC('"');+ l  ^+ Q* B$ v% _
                  SendASC(',');9 K) ^" ?% |) |
                  SendASC('0');
1 O' A/ y0 r6 H/ |5 T6 p                  SendASC('\r');
# W4 s+ Q: J$ I  `: ]                  SendASC('\n');# K8 q9 K7 |5 J0 E
                  delayms_1000ms();
$ p6 N( V- D4 k8 O9 L+ m* _                  delayms_1000ms();+ i8 C7 T) ]% J: V8 o
                  delayms_1000ms();* U* Y6 h# |, Q
                  delayms_1000ms();5 M, q; }6 V8 M/ x5 n! t
                  delayms_1000ms();+ f" t" S$ v; |" y# B0 u% }/ ^
                  delayms_1000ms();9 D, t% `2 l" b
                //          write_1602dat('3');. Y! l+ a: k+ `3 \2 q
              i=strsearch("+CMGL",RsBuf);
7 i( s5 y& B6 `; e- W. T' H, `4 z                   RsPoint=0;
5 f, D$ t5 f8 g             : j( _4 k8 Z( Y; a, u
              if(i!=0)+ d5 C. J6 _: X, F7 }; f, T% }
              {
1 r; J" u( F7 @( b* j                           p=0;       
$ s+ ?4 G' }9 A* j1 B) o                    i=0;: m7 D8 n" M. x1 I) U  \' _' K% J
                        i=strsearch("5E03",RsBuf);
# D; |' n1 l6 ]" Z                        if(i!=0)
7 z# O$ W# Y9 H$ [# D                        {
) y9 A3 j5 ?3 p) I9 T                                i=0;" I7 F$ h3 l% v
                                bufang=1;; L1 ~% M: q! v8 @
                                TR0=1;   //T0的运行控制位,TR0置1时,T0开始工作,TR0置0时,T0停止工作
; @: P6 O: P6 A; R                        }
( z" C( }) P7 F; a! D                        i=strsearch("64A4",RsBuf);
" v  U+ l' R$ c) N                        if(i!=0)+ c! s+ S3 p8 E
                        {- l% R8 {9 @& ~
                                i=0;, X8 u8 P- t4 o% `9 a! D: U; U
                                TR0=0;
7 B6 j: q! x) e                    fm=1;* w/ B% W& c( ^1 j+ a3 L
                                LEDG=1;
$ F) d/ \3 M7 M2 U                    bufang=0;
! _! @( c+ x; m                    bjcount=0;
; Q) @4 W3 N8 O$ R) I& |+ Y/ t! s                                bfcount=0;7 X( k1 g6 t; S! W+ E
                                baojing=0;
& X" K* O5 L# e# M' l       
- c6 S0 }# i/ ~2 `' ?5 }( ^                        }
* J% ^3 t! p6 F" L9 a7 N( o9 z8 \1 j& M) p$ j  `/ S' O+ U3 A: c
              }$ ^% `! e6 i4 A2 f9 T$ L
                  delayms_1000ms();# D) z) g: _: w  C( C, e1 K! ?# c
                 SendString("AT+CMGD=0,3\r\n");) c' O% M# E% T7 k) A
             
/ |' h4 @; L% o5 y* e& K9 C//       delayms_1000ms();1 Q' o/ Z, V/ l  z9 g
            }
" m2 \: u0 _/ J# t: g}* ?2 G! K% U+ @0 r
  `) _! r4 S3 H% ?( }) t5 ^! z$ E
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-8-12 23:43 , Processed in 0.125000 second(s), 23 queries , Gzip On.

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

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

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