|
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 |
|