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