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

基于GSM家用防盗报警

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
uchar strsearch(uchar *ptr2,uchar *ptr1_at)//查字符串*ptr2在*ptr1中的位置+ L) b$ d( Y/ \1 w# \1 h7 C
//本函数是用来检查字符串*ptr2是否完全包含在*ptr1中
0 ~# L5 `' ~: S2 H. t, T& Y//返回:  0  没有找到
) R. b2 Z! w! @: b( }//       1-255 从第N个字符开始相同
5 @  D1 d1 ]/ Y/ k: y5 D{
0 T! r4 \3 D  n. J4 D1 ^# j//、        uchar max_length;
) \, \+ L4 I$ t* W0 F1 v+ z3 V1 V        uchar i,j,k;
* Z1 \+ f' o1 D6 p        uchar flag;& f7 h& l4 _* E2 }+ z! o' }  D, h
        if(ptr2[0]==0) return(0);
' C6 A/ h* l) r7 B+ ~        flag=0;
9 h4 H, d: P+ z5 j        for(i=0,j=0;i<RsBuf_N;i++)' F- X5 x7 ~% \
        {
9 Z4 R1 m" {# t( V9 a3 I2 e' J. K        if(ptr1_at[i]==ptr2[j])7 C, s! S. {$ q( i: f5 ~( m
        {//第一个字符相同
4 j( W- B# X/ c) Z% K( [% z* {) j                k=i;# s- g+ n4 }+ j6 t* [
                //for(k=i;k<MAX_TM-2;k++,j++)# r5 T0 O) O+ `5 A5 A) I
                do {
( A+ @( i& N& B  ]6 l. {& u                        if(ptr2[j]=='\0')//比较正确
4 `' [) I4 k4 b4 A  j                                return(i+1);               //返回值是整数,不含0
) ^7 m1 C) i3 {+ {1 Q                        if(ptr1_at[k]!=ptr2[j]) break;
4 w( Z) |7 P1 P. z2 `9 n1 J                        k++;j++ ;         ! @  p, s! T' o  K, c8 F
                } while(k<RsBuf_N) ;
8 q% ~3 t6 y" K" z
/ e4 A% I# m- C5 `! B  m, z% r                j=0;+ }# f+ }# L; @" j4 n  X, D8 i
        }
1 r" |1 \! v( b: W) d        }
% ]6 Z6 m. h' [7 Y/ ~        return(0);# ]; q$ F9 Q2 q  q* r/ J
}5 F/ b4 N) H" d

% I5 i+ `# _9 \  D% N
+ e5 C9 b! k3 h//  通讯中断接收程序   中断函数无返回值. J, ~0 }0 g- u/ N
  void uart_rx(void)  interrupt 4        using 3          //放在这里 和放在main()里面是一样的
* g) w# \3 N8 w" z  C( ~* f* P* s {! y' A8 p4 e, m" {2 y/ P5 q
        EA=0;
% F4 J3 q; H: c" m( h* Y           if((RsPoint<RsBuf_N)&&RI) //必须判断RI是否为1,RI=1的话表示接收一桢数据完毕( c; I1 j" d+ u( D4 {2 d. T
        //if(RI)' B' @* F' j7 h3 @( {/ r4 D
    {
' r+ n% Z8 r7 v% |) A  ?- G- h- i% ~1 `            RI=0;
1 ~: l. ]/ E1 u            RsBuf[RsPoint++]=SBUF;. H8 f3 r. y' j/ ?
                //RsBuf[RsPoint]=0x00;   //将下一个数据清零7 w5 ?/ K/ F# n- F& r
                //SendASC(RsBuf[RsPoint-1]);4 J# k3 M5 }  J8 m5 ^
                //lcd_disp_str(RsBuf ,2);- R" h. G+ N  `3 q
    }* z# w# R% C* L) g
        EA=1;2 w' L) `. Q8 }. h
}
0 @2 @1 f6 Q8 o
' ^; H/ q# {# a: d' K. w5 V
4 n; G* b- U# q' S) c4 ?% L
3 p/ H1 |) E4 R /***********************发送TEXT短信息********************************
7 a# l& c) `. H& e5 W2 N*功    能: TEXT模式发送短信息
. O5 v& u) [* @! J*形    参: char *dialnum 目的号码+8613333333333    char *text发送内容' s/ w& Q% W5 ]. d
*返 回 值: 1 发送成功  0 发送失败
: q0 z( b3 r; p* U) @1 T* G' p*备    注:发送TEXT短信息  之前应该先  1,设置短消息模式   AT+CMGF=? (0)=PDU (1)=TEXT
; C' D$ x+ ?* v- H, R. o                                  2,设置短消息中心     AT+CSCA=“+8613800531500”回车                 & H" z; @# ~+ M) L8 W' j5 [

: u" w% U. {. E$ S8 S# V) H*****************************************************************/5 y% _% P9 Q) u+ W1 I1 m0 s' B
char TransmitText()   //发送号码        发送内容,字母或数字
- U+ ?1 X$ ~; _1 S1 N0 ^{9 C3 s. _/ V5 I- X0 m9 E
        uchar i=5,j=5;
  s+ w! m. H9 S$ W8 T        uchar p;, y1 _3 x: S5 {9 D, L5 u2 z: ~
        uchar send_number;1 }) n1 b+ m% G: s' ]0 {1 g
       
' J* M  X  z& z/ G. [' D9 P        SendString("AT+CMGF=1\r\n");       
2 E& v0 W* E3 U3 o( `4 K  S" f               
! F+ w8 ?1 \6 f& g* |( o4 J                delayms_1000ms();: f  w0 ]' B: Y" D
                * |9 {" |2 N3 N# L+ a  a
                SendString("AT+CSCS=\"UCS2\"\r\n");       
" A3 A' F. ]* {1 ~" b. o# |: d               
0 o# m4 K1 d" Z: z4 W7 i4 P                delayms_1000ms();
1 C" Q7 F+ l* F* y$ n                % L. m7 |8 M! J; b, ]3 }
                SendString("AT+CSMP=17,0,2,25\r\n");        - [0 u/ \# `7 B0 s
               
1 M  c: t/ L6 @* K                delayms_1000ms();0 \3 ?! i' g' u
                2 W6 I  `" N( D/ {
                SendString("AT+CMGS=");        //信息发送指令 AT+CMGS=//发送短信内容长度1 c- }% i! @) i* W
                SendASC('"');/ Y% }: F- c" \5 v1 S- n; A
                for(send_number=0;send_number<11;send_number++)
0 v2 t! Z: ~6 h; [' _" L) J                {7 a3 u7 D2 c' x2 f
                        SendASC('0');
6 A& H9 D7 P  ]. u1 I                        SendASC('0');. \  |# `9 r8 G& r) [
                        SendASC('3');
2 r0 I0 j" {6 }- V  ~2 q# u% d                        SendASC(dianhuahaoma[send_number]);
4 d, I* _! a# V& N0 p7 @                }   
. K; c% t6 ~5 J( q                SendASC('"');
0 R: s/ G$ Y7 Y4 ~9 K+ K                SendASC('\r');                        //发送回车指令//
0 n  V, T0 [& N( n( o2 S- d7 E                SendASC('\n');                        //发送换行指令//* D2 s- S2 Z; F1 E& b
                / ~2 Q1 j! \/ E) P
                delayms_1000ms();
. o! `+ b! [' U
) V& G6 ~* v8 {2 }/ o                SendString("76D16D4B533A57DF67094EBA51654FB5FF01");          //监测区域有人入侵!
3 z6 S1 e6 ]+ H7 E3 w
/ R/ I9 O- J1 B2 s( C4 ^                delayms_1000ms();! N& H1 ~& ~+ a4 g
               
- P; ]6 Q+ `$ L0 O5 p# \                SendASC(0x1a);
- P9 N4 q% F+ A' Q0 ^, y& R4 v' v. l# b+ \" N7 d" z
                SendASC('\r');
4 H5 H' H1 Y4 ^% {                   SendASC('\n');
# T& E8 D3 z5 Y8 j, h, B! N                SendString("AT+CMGF=1\r\n");& i7 a  V" L' h" ~
    delayms_1000ms();
% X" O- p6 ?+ h$ @8 C, M                SendString("AT+CSCS=");
) X0 {$ x; O1 n& w( s. C* q    SendASC('"');
/ H3 U/ E8 m" Z/ `8 `        SendString("GSM");6 \' N9 H/ q: @+ @0 v
        SendASC('"');/ ?) s( {5 t0 {. A5 z
        SendString("\r\n");4 Y# d0 `3 h! c& B: h1 a
                        delayms_100ms();* Q0 i4 x0 O; t* x4 M* E
                        while(j--)" I  p* L% t' g! q) g8 P
                        {
/ Z" h* Y. j2 h6 I                                delayms_100ms();
5 o* U+ a! L% U# L  w$ A8 V% ^) J                                p=strsearch("ERROR",RsBuf);
* a6 Q( K+ M/ C+ P                    if(p!=0)
8 d# H6 Q" Y+ f+ Y: P4 O. z                    {
+ S4 ^) ^" H. w; U% R( H5 c                            p=0;! A. I% ?: W  j% W9 N
                             return(0);
* Y4 O) k$ Y+ s' [9 o! Z5 |                                  
$ N5 R( T$ A8 M- c) q  J                                }
$ L" Y. W# f6 p# b1 [. Q                                p=strsearch("OK",RsBuf);
* d: d$ r" {5 A) M: A                                if(p!= NULL )
! r, S( S; V' E1 {+ V                                {
5 y# |( _4 H% y7 ^: Q7 ?                                        p=0;* X9 d, a. y& P& _& |8 s2 \
                                        return 1;. Q9 s* a# N; F# K6 i5 Q& n
                                }9 P) l5 ~. F: Y8 r6 E2 D
                       
$ r7 }8 \3 T( T7 D+ A/ K) ~2 H                                delayms_1000ms();& M% F- K0 k: f2 [
                        * p1 g3 L: U" K7 w1 X2 @. G! Z
                    }               
( `5 U5 \! a; @, R, t
* W! H6 }) c( y' x% P' m        SendASC(0x1b);: Q4 d% L9 S( L( |
        delayms_1000ms();
9 ~2 M/ r7 l* g( n        delayms_1000ms();$ o. D: r: h. Y0 N. ?
        RsPoint=0;
. h! T, J; G, q; X        return 0;           8 I: [# q3 H4 j' i' G4 J' R! _% W
}! p4 k9 `7 z1 }
//========处理短信=========1 k9 K. ^- D: T( |
void deal()                 8 A" |- q5 O/ B& Z
{         uchar p,j,i;1 s; i6 O" g/ z  }: m( T  }3 [
     //        SendString(RsBuf);( G, W' i* c5 [9 r( k, J  s
        p=strsearch("+CMTI",RsBuf);           & M& Y  W; C' t: y
          // p=1;
; S: R* B* F/ t; Y" ], H& x7 {           if(p!=0)+ r3 k* ^# U) t
           {
# k# O/ z0 C7 o7 ^3 A, X            for(j=10;j<RsBuf_N;j++)$ }% l8 W1 i  B. @, u
                  {+ ^) e% b! F. `$ T+ H* |
                    RsBuf[j]=0;# b2 m+ N' @3 w4 ^% x* \1 t3 d
                  }       
4 `# y7 J2 g# q# j: q5 \3 S: R                  RsPoint=0;
4 i. {( e. [5 W6 M+ f$ o: K/ M                
+ [( [/ N: n% |4 v             //  write_1602com(0xcd);
( I/ K0 t+ Q' i; V( E! Y                //          write_1602dat('1');
5 F- G! ]3 R% S# b1 L                   delayms_1000ms();2 O0 L( B9 h; b7 f2 `
         SendString("AT+CMGL=");6 b/ ?: N* B" G$ K2 A9 a7 u3 n
                  SendASC('"');
) g6 [6 l) z* |7 F7 N1 W                  . _+ u; F& ~# J8 y( S! E) H! G; {
                  SendString("REC UNREAD");
* A* {+ h2 c; L                  SendASC('"');
( C9 e& q; H7 ^9 W9 a, F7 p                  SendASC(',');
0 Q( S; H# z# n0 N% [5 k* h' N$ \                  SendASC('0');
, Q) V+ j/ u' b( o                  SendASC('\r');
/ @0 P9 D! O+ V2 U4 ]                  SendASC('\n');* l" d  N* H+ p% `4 [; H
                  delayms_1000ms();
7 L2 _1 y3 c+ [$ H7 c0 [3 ^                  delayms_1000ms();0 z: I% g6 M) A. a- ?* J$ E
                  delayms_1000ms();# D5 |, |' o& e  X
                  delayms_1000ms();* w6 J% W5 M7 I( N
                  delayms_1000ms();
2 n! |7 ~1 `/ B7 K4 S* p/ v+ |                  delayms_1000ms();
. l' w8 N- n: b, c0 R+ e: ]                //          write_1602dat('3');6 s- |* K% ^* ?# H
              i=strsearch("+CMGL",RsBuf); 5 O$ }  E& H: K, A
                   RsPoint=0;0 I8 J7 {; _7 X% E
             # ^' K  _  \9 s" `! t
              if(i!=0)
" W: Z' L2 U# X2 G5 ~( D              {
" Z; c- M7 d$ @3 p; q                           p=0;        8 [9 L2 s% i5 {8 m/ D7 P! L- ^5 N6 ~
                    i=0;/ u) p9 z$ _. Z. Y9 R
                        i=strsearch("5E03",RsBuf);8 O9 H' V; e: Y, J
                        if(i!=0)
5 f+ v- E9 Q0 e/ a' e. H) k' |, Z0 W                        {: U* O3 {1 ?( d0 T( @
                                i=0;2 L$ N/ p" _! T+ ~6 X" z$ u9 s- Z: l$ `$ B
                                bufang=1;, {8 G7 [: @* Z1 W) R# f: r
                                TR0=1;   //T0的运行控制位,TR0置1时,T0开始工作,TR0置0时,T0停止工作1 t& R& ~- V8 V0 F( d5 r. j
                        }
2 a2 Z* s6 H  P                        i=strsearch("64A4",RsBuf);$ q, O$ s3 c/ I5 J& ]
                        if(i!=0)$ Y& K/ D8 Y- A  J: Q3 M4 U
                        {/ \2 l8 F1 f/ b' _- A9 x, C8 j% a5 v
                                i=0;
0 r/ }% F* i  [$ h                                TR0=0;
% T# K. n' ]' Z& Q" a' U  O) g                    fm=1;0 T6 B& b& t5 D1 |. v3 S
                                LEDG=1;
/ v1 g( o' S# T4 h9 y% {                    bufang=0;
4 |. }7 c  C! d& k. ]                    bjcount=0;
0 E; E8 s, H$ B7 |                                bfcount=0;& F9 y+ X0 W+ u/ r% w
                                baojing=0;
% j' B7 {1 c" q& ]; p0 [       
) H. Y* @8 A: S                        }1 j/ p- i1 L& s! a! o1 l2 T
' v! ?8 T2 T9 [7 C
              }) Y- K' ^; `% z* w6 L2 a( B; t
                  delayms_1000ms();
5 A" U! m, b0 Q8 o% ~$ {# O# U                 SendString("AT+CMGD=0,3\r\n");3 H8 b  _0 b4 m% R6 V  j/ M
             
) M7 J$ C. [0 P% d//       delayms_1000ms();( k% `( [4 o7 h
            }( n- {5 s6 t; \. q* {! D
}7 B) R7 N( V0 Z9 h* v1 K8 C
4 ^2 a& H6 _/ D( q" y3 q* b& N1 K7 A
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-7-27 20:35 , Processed in 0.109375 second(s), 23 queries , Gzip On.

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

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

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