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