Embed
Email

gprs

Document Sample

Shared by: Kerala g
Categories
Tags
Stats
views:
0
posted:
12/26/2011
language:
pages:
10
安徽工程科技学院毕业设计(论文)





#include

#include

#include



#include // open() close()

#include // read() write()



#include // set baud rate



#include

#include

#include

#include



#define FUNC_RUN 0

#define FUNC_NOT_RUN 1



#define SIMPLE_TEST 1

#define READ_SIM_CARD_ID 2

#define MAKE_A_CALL 3

#define WAIT_A_CALL 4

#define SHORT_MESSAGE 5

#define FUNC_QUIT 6



#define SEND_SHORT_MESSAGE 1

#define READ_SHORT_MESSAGE 2

#define CONFIG_SHORT_MESSAGE_ENV 3

#define QUIT_SHORT_MESSAGE 4



#define DEVICE_TTYS "/dev/ttyS1"

#define MAX_LEN_OF_SHORT_MESSAGE 140





#define RECEIVE_BUF_WAIT_1S 1

#define RECEIVE_BUF_WAIT_2S 2

#define RECEIVE_BUF_WAIT_3S 3

#define RECEIVE_BUF_WAIT_4S 4

#define RECEIVE_BUF_WAIT_5S 5



//-------------------- read datas from GSM/GPRS ----------------//



int read_GSM_GPRS_datas(int fd, char *rcv_buf,int rcv_wait)

{

int retval;

-1-

安徽工程科技学院毕业设计(论文)





fd_set rfds;

struct timeval tv;



int ret,pos;



tv.tv_sec = rcv_wait; // wait 2.5s

tv.tv_usec = 0;



pos = 0; // point to rceeive buf



while (1)

{

FD_ZERO(&rfds);

FD_SET(fd, &rfds);



retval = select(fd+1 , &rfds, NULL, NULL, &tv);



if (retval == -1)

{

perror("select()");

break;

}

else if (retval)

{// pan duan shi fou hai you shu ju

ret = read(fd, rcv_buf+pos, 2048);

pos += ret;

if (rcv_buf[pos-2] == '\r' && rcv_buf[pos-1] == '\n')

{

FD_ZERO(&rfds);

FD_SET(fd, &rfds);



retval = select(fd+1 , &rfds, NULL, NULL, &tv);



if (!retval) break;// no datas, break

}

}

else

{

printf("No data\n");

break;

}

}



return 1;

-2-

安徽工程科技学院毕业设计(论文)





} // end read_GSM_GPRS_datas





//--------------------------send cmd ------------------------//



int send_GSM_GPRS_cmd(int fd, char *send_buf)

{

ssize_t ret;



ret = write(fd,send_buf,strlen(send_buf));

if (ret == -1)

{

printf ("write device %s error\n", DEVICE_TTYS);

return -1;

}



return 1;

} // end send_GSM_GPRS_cmd



//------------------ send cmd and read back result ---------------------//



void GSM_GPRS_send_cmd_read_result(int fd, char *send_buf, int rcv_wait)

{

char rcv_buf[2048];



if((send_buf==NULL) || (send_GSM_GPRS_cmd(fd,send_buf)))

{ // send success , then read

bzero(rcv_buf,sizeof(rcv_buf));

if (read_GSM_GPRS_datas(fd,rcv_buf,rcv_wait))

{

printf ("%s\n",rcv_buf);

}

else

{

printf ("read error\n");

}



}

else

{

printf("write error\n");

}

} // end GSM_GPRS_send_cmd_read_result





-3-

安徽工程科技学院毕业设计(论文)





//-------------- send cmd : "at" to GSM/GPRS MODEM -----------//



void GSM_simple_test(int fd)

{

char *send_buf="at\r";



GSM_GPRS_send_cmd_read_result(fd,send_buf,RECEIVE_BUF_WAIT_1S);



} // end GSM_simple_test



//-------------- send cmd : "at+ccid" to GSM/GPRS MODEM -----------------//



void GSM_read_sim_card_id(int fd)

{

char *send_buf="at+ccid\r";



GSM_GPRS_send_cmd_read_result(fd,send_buf,RECEIVE_BUF_WAIT_1S);



} // end GSM_read_sim_card_id



//--------------- send cmd : "atd;" to GSM/GPRS MODEM ---------//



void GSM_call(int fd)

{

char send_buf[17];

char *send_cmd_ath = "ath\r";

int i;



// input telephone number

bzero(send_buf,sizeof(send_buf));



send_buf[0]='a';

send_buf[1]='t';

send_buf[2]='d';

send_buf[16] = '\0';



printf("please input telephone number:");



i = 3;

while (1)

{

send_buf[i]=getchar();

if (send_buf[i]=='\n') break;

i++;

-4-

安徽工程科技学院毕业设计(论文)





}



send_buf[i]=';';

send_buf[i+1]='\r';

// end input telphone number



// send cmd

GSM_GPRS_send_cmd_read_result(fd,send_buf,RECEIVE_BUF_WAIT_1S);



//quit call

printf("press ENTER for quit:");

getchar();



// send cmd

GSM_GPRS_send_cmd_read_result(fd,send_cmd_ath,RECEIVE_BUF_WAIT_1S);

} // end GSM_call



//----------- wait for GSM/GPRS call signal -------------------//



void GSM_wait_call(int fd)

{

char rcv_buf[2048];

char *send_cmd_ath = "ath\r";

int wait_RING;

wait_RING = 10;

while (wait_RING!=0)

{

bzero(rcv_buf,sizeof(rcv_buf));



if (read_GSM_GPRS_datas(fd,rcv_buf,RECEIVE_BUF_WAIT_1S))

{

printf ("%s\n",rcv_buf);

}

else

{

printf ("read error\n");

}

wait_RING--;

}

GSM_GPRS_send_cmd_read_result(fd,send_cmd_ath,RECEIVE_BUF_WAIT_1S);

printf("quit wait_call\n");

} // end GSM_wait_call



//------------------------ GSM/GPRS send short message -----------------//

-5-

安徽工程科技学院毕业设计(论文)









void GSM_Send_Message(int fd)

{

char cmd_buf[23];

char short_message_buf[MAX_LEN_OF_SHORT_MESSAGE];

int i;

char rcv_buf;



bzero(cmd_buf,sizeof(cmd_buf));

bzero(short_message_buf,sizeof(short_message_buf));



printf ("send short message:\n");



cmd_buf[0]='a';

cmd_buf[1]='t';

cmd_buf[2]='+';

cmd_buf[3]='c';

cmd_buf[4]='m';

cmd_buf[5]='g';

cmd_buf[6]='s';

cmd_buf[7]='=';

cmd_buf[8]='"';



printf ("please input telephone number:");



i = 9;

while (1)

{

cmd_buf[i]=getchar();

if (cmd_buf[i]=='\n') break;

i++;

}

cmd_buf[i]='"';

cmd_buf[i+1]='\r';

cmd_buf[i+2]='\0';



// send cmd : at+cmgs="(telephone number)"

GSM_GPRS_send_cmd_read_result(fd,cmd_buf,RECEIVE_BUF_WAIT_1S);



// input short message

printf("please input short message:");



i = 0;

while(i ");

scanf("%d",&flag_sm_select);

getchar();

switch (flag_sm_select)

{

case SEND_SHORT_MESSAGE :

{ GSM_Send_Message(fd); break; }

case READ_SHORT_MESSAGE :

{ GSM_Read_Message(fd); break; }

case CONFIG_SHORT_MESSAGE_ENV :

{ GSM_Conf_Message(fd); break; }

case QUIT_SHORT_MESSAGE : { flag_sm_run =

FUNC_NOT_RUN; break; }

default :

{

printf("please input your select use 1 to 3\n");

}

}

}

printf ("\n");

} // end GSM_send_mesg



//-------------------- print -----------------------//

void print_prompt(void)

{

printf ("Select what you want to do:\n");

printf ("1 : Simple Test\n");

printf ("2 : Read SIM CARD ID\n");

printf ("3 : Make A Call\n");

printf ("4 : Wait A Call\n");

-8-

安徽工程科技学院毕业设计(论文)





printf ("5 : Short message\n");

printf ("6 : Quit\n");

printf (">");

} // end print_prompt



//----------------- Control GSM/GPRS MODULE --------------//

void func_GSM(int fd)

{

int flag_func_run;

int flag_select_func;

ssize_t ret;

flag_func_run = FUNC_RUN;

while (flag_func_run == FUNC_RUN)

{

print_prompt(); // print select functions

scanf("%d",&flag_select_func); // user input select

getchar();

switch(flag_select_func)

{

case SIMPLE_TEST : {GSM_simple_test(fd);

break;}

case READ_SIM_CARD_ID : {GSM_read_sim_card_id(fd);

break;}

case MAKE_A_CALL : {GSM_call(fd);

break;}

case WAIT_A_CALL : {GSM_wait_call(fd);

break;}

case SHORT_MESSAGE : {GSM_short_mesg(fd);

break;}

case FUNC_QUIT :

{

flag_func_run = FUNC_NOT_RUN;

printf("Quit GSM/GPRS function.byebye\n");

break;

}

default :

{

printf("please input your select use 1 to 7\n");

}

}



}

}// end func_GPRS





-9-

安徽工程科技学院毕业设计(论文)





//-------------------- init seriel port --------------------//

void init_ttyS(int fd)

{

struct termios options;



bzero(&options, sizeof(options)); // clear options



cfsetispeed(&options,B9600); // setup baud rate

cfsetospeed(&options,B9600);



options.c_cflag |= (CRTSCTS | CS8 | CLOCAL | CREAD);

options.c_iflag = IGNPAR;



tcflush(fd, TCIFLUSH);



tcsetattr(fd, TCSANOW, &options);



}//end init_ttyS



//------------------------- main -------------------//

{

int fd;

printf("\nGSM/GPRS SYSTEM\n\n");

// open seriel port

fd = open(DEVICE_TTYS, O_RDWR);

if (fd == -1)

{

printf("open device %s error\n",DEVICE_TTYS);

}

else

{

init_ttyS(fd); // init device

func_GSM(fd); // GSM/GPRS functions



// close ttyS0

if (close(fd)!=0) printf("close device %s error",DEVICE_TTYS);

}



return 0;

}// end main









- 10 -



Related docs
Other docs by Kerala g
union-budget-2012-13-highlights
Views: 102  |  Downloads: 0
notification M.Tech_05-03-09
Views: 59  |  Downloads: 0
India_Customs Regulation 1
Views: 56  |  Downloads: 0
CE Notification 39-2011-12.9.2011
Views: 54  |  Downloads: 0
STATISTICS
Views: 72  |  Downloads: 0
A Hero (R.K. Narayan)
Views: 91  |  Downloads: 6
RRBPatna-Info-HN
Views: 116  |  Downloads: 0
RRB-Notice-Para
Views: 113  |  Downloads: 0
By registering with docstoc.com you agree to our
privacy policy

You are almost ready to download!

You are almost ready to download!