|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
uchar strsearch(uchar *ptr2,uchar *ptr1_at)//查字符串*ptr2在*ptr1中的位置% t8 Q( P) j0 B, S% O+ d! k- H
//本函数是用来检查字符串*ptr2是否完全包含在*ptr1中+ t, p1 z1 h( Z. s, w% r- V/ @5 i% d2 V
//返回: 0 没有找到 i" D& A6 @; O- q
// 1-255 从第N个字符开始相同
: o! f6 c) ~- ]* p0 s; q{1 V8 P0 x) T/ p9 B( x5 j& x
//、 uchar max_length;) E% q) v$ C$ ~+ X4 Y
uchar i,j,k;
9 Z1 H6 g7 d1 j# A3 l" `+ d# | uchar flag;& w$ f* ^1 y+ x6 R
if(ptr2[0]==0) return(0);
5 `% a# |" L0 G, C4 D0 N- n flag=0;- j. M; ^$ M- J/ n. k, D9 f
for(i=0,j=0;i<RsBuf_N;i++)2 z; p; W$ V/ \% F
{
1 m$ w! B/ G6 `1 P& O if(ptr1_at[i]==ptr2[j])# d/ i- M* V& E0 v( r
{//第一个字符相同
' O- Q2 q% q, k) g- }4 S! A k=i;6 p" t- f! Q+ J, b4 r* p! }
//for(k=i;k<MAX_TM-2;k++,j++)
8 t: P) l# l, ~5 K do {
0 T2 x/ o( ?1 A+ @5 k if(ptr2[j]=='\0')//比较正确, z+ F u$ a- X$ I
return(i+1); //返回值是整数,不含0. H7 k* ~9 l* E5 _/ P: C4 |
if(ptr1_at[k]!=ptr2[j]) break;7 J8 g0 c. O) _" F. i
k++;j++ ; 3 A( s/ |9 v8 j* v9 N' ^
} while(k<RsBuf_N) ;2 ^9 X' j! ^- T1 U
9 F. a# i& @$ N2 ^4 c+ e7 O/ t
j=0;2 S8 c/ b2 \7 x7 y
}8 y+ p! Q5 u% U2 z5 C
}% Z% @/ q! X1 B0 X, X- ^
return(0);& H- N0 [ k; a
}
8 b4 q8 x0 y8 k% o" J# @7 w$ l' g, \1 U) }8 J: f) G+ `
% d U7 ?: Z' Y0 p) X. x2 J// 通讯中断接收程序 中断函数无返回值3 p& k: Y/ m$ r/ ]2 P% l
void uart_rx(void) interrupt 4 using 3 //放在这里 和放在main()里面是一样的% g) Q$ b& _# `* e9 D5 g' P
{
( s/ c* R; l* |' k) { EA=0;
1 J( L) E' V; f7 @& }' F- D if((RsPoint<RsBuf_N)&&RI) //必须判断RI是否为1,RI=1的话表示接收一桢数据完毕
" h: }1 r( W7 P" n# q; `$ p$ |: T" V //if(RI)
% ?) K6 y1 k* o( j* k! j {
* R& o3 n0 Z, n: \7 i1 ?$ q RI=0;6 M; @- q& X! k6 ?& ~
RsBuf[RsPoint++]=SBUF;
* H4 I# k* P6 M9 T8 q) Z //RsBuf[RsPoint]=0x00; //将下一个数据清零8 c& C' N9 K" g' ?/ ^
//SendASC(RsBuf[RsPoint-1]);; b5 G$ D! b# a. _
//lcd_disp_str(RsBuf ,2);
1 ~& [ `- x/ d* a2 S* s; j4 r }
9 b* b# x5 {) a2 v& w( { EA=1;
# F9 N% T5 W* i O' K }
% _6 V, ]/ z, `- S9 p- J7 F+ D) e9 }
5 G2 j d( G1 E" n7 n0 q4 m& N
. h, }$ ^! q4 i, N& R9 z& {
/***********************发送TEXT短信息********************************( W% R! Y2 w# r* M9 v
*功 能: TEXT模式发送短信息
F' L3 L: w1 d1 [6 U*形 参: char *dialnum 目的号码+8613333333333 char *text发送内容0 `9 T3 Y. o" V6 M4 S; ]1 e
*返 回 值: 1 发送成功 0 发送失败) M" v5 _2 q. e! W
*备 注:发送TEXT短信息 之前应该先 1,设置短消息模式 AT+CMGF=? (0)=PDU (1)=TEXT
& G6 V9 F$ J1 y7 c5 @ 2,设置短消息中心 AT+CSCA=“+8613800531500”回车
; k' G1 Z% u" J. b
" B) Q7 Y9 c6 x( i*****************************************************************/0 q' N; M$ Q/ d3 M% Y# i$ `
char TransmitText() //发送号码 发送内容,字母或数字1 m1 Y; ^+ s2 l# E+ P' H
{
$ m/ B4 O1 D( N1 X r% N1 e uchar i=5,j=5;
2 z! j; W/ F7 u7 d! Z W7 i uchar p;
; C' K* V( b; Z( ]4 u, R8 V uchar send_number;: D$ ?* w6 [1 Y% v+ [4 Q
) R) D4 D6 h! y
SendString("AT+CMGF=1\r\n"); % A1 f( {6 _3 D, P' w
' \8 L1 g; T, r& u/ j delayms_1000ms();
" U, ]. }6 d* T: w$ [- c
) x/ W2 a k% ?+ ^* |5 c; y SendString("AT+CSCS=\"UCS2\"\r\n");
2 u# [/ ?2 J3 H# T( ~' F
" {& ^2 n( b1 B0 f delayms_1000ms();# [( i, f; D0 `4 i/ _
, i6 V( q) | m& O- u* q) a
SendString("AT+CSMP=17,0,2,25\r\n");
* H# ?9 C) u- J1 a 0 B Z4 D# z: p. N1 q) J
delayms_1000ms();1 ~6 G) V" M5 t& x
# i, J; T/ I, u [ SendString("AT+CMGS="); //信息发送指令 AT+CMGS=//发送短信内容长度
7 I0 K+ L b& X4 Y8 X/ w SendASC('"');
7 x' f4 m4 A& X8 A0 | p for(send_number=0;send_number<11;send_number++)& b" I5 c4 Z, a5 j( u
{
& O/ v1 _! m& I; J7 m SendASC('0');4 S; f) A! s+ ~
SendASC('0');
- ~; A# g) }5 t* P9 N SendASC('3');% H' @; z" ^# S% \7 {& _* F
SendASC(dianhuahaoma[send_number]);1 B9 D& f2 k' R
} , c7 h) J7 t# k$ w1 G0 {
SendASC('"');. s! h$ B4 B; H' M
SendASC('\r'); //发送回车指令//0 u1 W# F! f" f' G6 l4 S
SendASC('\n'); //发送换行指令//
H3 y4 ~4 U& O! N' V1 z# L 5 E' @9 E6 y, u. P. p9 t
delayms_1000ms();
( f. q1 K" k* w% @, ?
2 K' o0 p; s7 W6 s2 d' J SendString("76D16D4B533A57DF67094EBA51654FB5FF01"); //监测区域有人入侵!+ ~4 [* M' H: u+ W; Y
6 _! k$ f1 v, T" H2 _8 X h
delayms_1000ms();" S9 m: s* V* O5 K# y
% Y, X- T3 U! q' }7 A SendASC(0x1a);0 C x' z3 U4 ]
; ~' k. Y7 V& V) W0 W( ]5 B
SendASC('\r');
$ K. U9 J4 t) K( n1 n4 D3 S/ v! g SendASC('\n');. o0 \4 L9 f7 s/ K4 i/ I2 e7 U' v
SendString("AT+CMGF=1\r\n");
4 ^$ g1 z F2 v delayms_1000ms();3 @9 v, q/ e- P$ v6 z t
SendString("AT+CSCS=");
& z$ [) p0 [: g4 j6 k* g# l SendASC('"');
9 g `5 L& n; `4 V4 E" U SendString("GSM");
% ` s# [) l; p0 ` SendASC('"');
, v) d4 H: i# o# b2 A2 | SendString("\r\n");( l/ F0 {& x6 t
delayms_100ms();
: H% _6 B7 w8 z while(j--)$ I1 M; B' _) v; M! N6 j
{
0 d/ e: E* q6 }! j) A3 b delayms_100ms();( Y0 @+ C5 N* o3 K5 n- ?
p=strsearch("ERROR",RsBuf);
' R$ d8 T% V/ S i) V- ^ if(p!=0)
7 K8 m: k0 R7 s! d$ L0 T2 n# Y {& ]+ {4 z2 [6 {" Z- z d9 y* @
p=0;* a$ p0 M9 V1 Y
return(0);
" S6 ^$ ]( [$ }+ ^' c' F
3 p( d3 I0 d1 `$ D4 P7 P, \ }( Q9 W' q4 d$ K W [! L, |' m
p=strsearch("OK",RsBuf);, _- u+ @( K* q$ x
if(p!= NULL )
/ e) O6 Q5 N# D- W {! p/ j$ ~2 G. D! P8 Y+ X2 |1 J2 ~
p=0;" S7 Z( ^ @2 r3 B \ W
return 1;3 ^" `. E* i2 d+ S/ E. w# ^
}
% @7 K! L& t. t* g# \
; J" I7 y \, J delayms_1000ms();
# y5 p8 {$ e( I7 j( ] 0 A; f+ J" J) W7 ]7 z7 `5 f ~: _- |
} / P- M+ [7 v+ q0 {+ n* e, s& Z! ^. i
0 z* s8 R) A! ]$ C1 k# H8 |6 a
SendASC(0x1b);
7 a! {* j9 g/ `+ i3 t# ]6 Z: | delayms_1000ms();1 \8 ^; f9 y* j
delayms_1000ms();2 N0 {1 S( Y' ~% {" B8 X E
RsPoint=0;' \' V7 U8 I& e- ~; I! c! t
return 0;
0 l3 B! b9 B2 R4 k1 F0 _}
5 E# P2 D% Q. M6 } K1 ~$ M; ?//========处理短信=========
1 y3 x6 L6 m" x) h3 [3 v( tvoid deal()
+ P( m/ b, h1 J# w, K: e3 b{ uchar p,j,i;2 U) |+ L/ |, S$ _: J: q
// SendString(RsBuf);3 P W P1 n: \
p=strsearch("+CMTI",RsBuf); ( s, `9 l. g6 h- K( a0 D; l
// p=1;
- K2 |0 t8 l) N" P% L if(p!=0)7 P# f$ G' B$ U; u$ |
{ 3 ^; h- ~% h: S( M+ Y' a
for(j=10;j<RsBuf_N;j++)" `: q& O- X% N0 I% e/ \
{
" ` i% x Q: K: r" o, d4 R RsBuf[j]=0;# t0 h/ V6 k5 p9 a7 K7 ]6 r/ z
} ! ?9 j0 R2 u) U
RsPoint=0;$ l$ D9 L" [0 w% }6 ^" ]
4 m! x3 x' O. V: {3 S7 l% d
// write_1602com(0xcd);
6 F/ E2 C7 n' U! w. Q. Y // write_1602dat('1');6 g2 u5 t0 O1 E0 A1 `: h/ X
delayms_1000ms();. b r* n% ?, P0 |
SendString("AT+CMGL=");9 Z5 A0 o7 O( E z) j
SendASC('"');4 \2 p/ |# O9 _4 E& X, Y+ _
9 [0 {- X5 {6 Z5 Y4 p7 Q. H SendString("REC UNREAD");. G+ Q9 Z5 X, G3 J+ L
SendASC('"');
9 n1 O/ Y8 ?+ T( u0 a" [ SendASC(',');3 Z' c4 e. s0 u& r: E
SendASC('0');
- A" h8 V* i0 }# {/ u SendASC('\r');
2 B6 k% T2 t7 m: ~) y0 Y0 A( x) h% X8 i5 U SendASC('\n');
# w: i2 w& g9 I# O$ O9 Q delayms_1000ms();
/ h4 J/ ?7 [% Y7 J! E delayms_1000ms();4 x) L: T. n, V3 j/ ?( ^: a7 [
delayms_1000ms();5 `. V( ]5 i- q1 Y! n+ t! I
delayms_1000ms();
! Y. p( @# a8 Z" o0 [, u8 o- w) g delayms_1000ms();2 l* c& l: S. X; [
delayms_1000ms();
. z, i; a) O* P2 i // write_1602dat('3');
+ ~" I4 _+ D- Y( y i=strsearch("+CMGL",RsBuf);
4 b# L( L6 H2 W6 k: J7 b+ R2 s" a RsPoint=0;5 D9 @8 b9 K# y( `1 {1 e/ e
/ e. b$ Q2 x: E% [% Y6 b( G
if(i!=0)5 F: ?9 A+ O j
{/ J6 y$ `+ b$ ^2 m: }5 Z
p=0;
" ~1 y1 @0 s! r8 J8 d$ s i=0;
' n s9 n% I+ }$ p" k( u i=strsearch("5E03",RsBuf);( ]/ {2 y4 o8 t0 Z! A; T
if(i!=0)
/ k# f- v5 H2 W, v {. S0 W* l1 h6 E8 p& S" m
i=0;
! G( f9 s* Z: G! ` bufang=1;
, ]( v* ^1 r4 | TR0=1; //T0的运行控制位,TR0置1时,T0开始工作,TR0置0时,T0停止工作: Z& i. r5 ~$ H$ m; U; N
}
6 i# x. v6 s* f7 |1 a i=strsearch("64A4",RsBuf);
6 s8 D& k$ M; o/ Z: L if(i!=0)3 \' v# G8 E8 {8 k& ^
{
+ K; K1 K7 B: T7 \) o% y c( A i=0;
2 @5 n5 f! N9 o, P' m TR0=0;3 }# G4 L) h3 V+ q) c# ?$ r3 U7 @5 z
fm=1;
$ m. O, ?6 V, o. ]! D" H* p( S8 ~: P LEDG=1;
. s6 r, w4 p+ b3 A+ K4 D bufang=0;$ B5 P* P( o/ @/ f6 g
bjcount=0;- Y+ t: u5 q( K R! ~: W8 R
bfcount=0; ~9 x# ~8 M) C- P' ^3 f/ ], R/ ^
baojing=0;
; V" q5 d6 `8 k4 Q3 E' A9 ~: k/ ^ ) y6 ^& I# C$ Y$ K& R# v7 m
}! [' X7 R8 Y, Z. Y4 b0 v
2 W6 [* E8 G5 P* F
}/ T3 v7 v+ j/ U) d4 p# B
delayms_1000ms();
7 r9 _$ W% A6 }/ ]* R7 N SendString("AT+CMGD=0,3\r\n");
: N( p0 J" G% w& ~9 l& b
5 D2 s0 e) C& y, p3 }4 _// delayms_1000ms();; t7 s# o! K# R1 \- J( o1 C4 B
}9 V2 }8 j! ?% {# `
}: |' B9 F! h5 l2 v6 A$ Q
! _7 d# w& h6 h |
|