亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? gsm_gprs.c

?? 基于LINUX 平臺的GPRS通信
?? C
字號:
/*this is a test about GPRS*/#include <stdio.h>#include <string.h>#include <stdlib.h>#include <fcntl.h>	/* open() close() */#include <unistd.h>	/* read() write()*/#include <termios.h>	/* set baud rate*/#include <fcntl.h>#include <sys/select.h>#include <sys/time.h>#include <sys/types.h>#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 --------------------------*//*succese return 1*//*error return 0*//*讀取串口緩沖區中的數據*/int read_GSM_GPRS_datas(int fd, char *rcv_buf,int rcv_wait){	int retval;	fd_set rfds;	/* fd_set 定義 文件描述符集 */	struct timeval tv;	int ret,pos;	tv.tv_sec = rcv_wait;	/* 等待時間 */	tv.tv_usec = 0;	pos = 0; /* point to rceeive buf */		while (1)	{		FD_ZERO(&rfds);		/* 清除文件描述符集rfds */		FD_SET(fd, &rfds);	/* 將文件描述符fd 加入到文件描述符集rfds */		/*使用select函數判斷是否接收緩沖區內有數據,		 如果在等待了([tv.tv_sec]秒+[tv.tv_usec]微秒)后沒有數據,		 則retval=0,出錯時 retval=-1,retval其它情況時表示接收到了數據*/		retval = select(fd+1 , &rfds, NULL, NULL, &tv);		/* 函數select用于解決I/O復用,成功返回準備好的文件描述符,錯誤返回’-1’ */		if (retval == -1) 		{			perror("select()");			break;		}		else if (retval) 		{/*使用read函數讀出接收緩沖區中的內容,存放在數組rcv_buf[]中,			如果接收正確,ret=接收到的字節數*/						ret = read(fd, rcv_buf+pos, 2048); /**ret返回實際讀得的字符數*/			pos += ret;			if (rcv_buf[pos-2] == '\r' && rcv_buf[pos-1] == '\n') 			{/*當接收到的字符為‘\r’或者‘\n‘時表示接收了一行數據,				但并不代表接收數據完成,當接收到以’\r‘’\n‘為結尾的字符串,				并且再等待了([tv.tv_sec]秒+[tv.tv_usec]微秒)沒有新的數據時,				認為接收一次數據完成*/								FD_ZERO(&rfds);				FD_SET(fd, &rfds);				retval = select(fd+1 , &rfds, NULL, NULL, &tv);				if (!retval) 					break;/*沒有數據,退出*/			}		} 		else 		{			printf("No data\n");			break;		}	}	return 1;} /* end read_GSM_GPRS_datas*//*------------------ send cmd --------------------------*//* succese return 1 *//* error   return 0 *//*用于發送數據*/int send_GSM_GPRS_cmd(int fd, char *send_buf){/*將send_buf中的內容發送到fd指向的設備,發送正確	 ret返回發送的字節數,發送錯誤ret返回“-1”*/		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 *//*----------------- send cmd : "at" to GSM/GPRS MODEM ---------------------*//*發送一個最簡單的AT 命令,查看GPRS模塊是否連接正確,	嵌入式處理器發送命令 :at	如果模塊工作正常,收到后返回 :ok */void GSM_simple_test(int fd){	char *send_buf="at\r"; /* 這里的字符’\r‘表示AT命令的結束 */		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 ------------*//*查看SIM卡的ID號:	嵌入式處理器發送命令 :at+ccid	如果SIM卡正確安裝,模塊工作正常,收到后返回SIM卡ID,以OK 結束 */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<tel_num>;" to GSM/GPRS MODEM ------*//*----------------- finish call, send cmd:  "ath" to GSM MODEM --------*//*呼叫用戶輸入的號碼 嵌入式處理器發送命令 :atd<電話號碼>; 按下回車健,將退出此次呼叫  */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++;	}	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 -------------------*//* 不斷檢查接收緩沖,查看本地號碼是否被呼叫	當檢測到有振鈴信號時,在屏幕顯示RING	檢測一段時間后自動退出	 */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 --------------------------*//* 發送短消息 :輸入電話號碼與短消息內容,將短消息發出*/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 < MAX_LEN_OF_SHORT_MESSAGE-2)	{		short_message_buf[i] = getchar();		if (short_message_buf[i]=='\n') 			break; /*接收到回車符時,認為輸入完成*/		i++;	}	short_message_buf[i] = 0x1A;	short_message_buf[i+1] = '\r';	short_message_buf[i+2] = '\0';	/* send short message */	GSM_GPRS_send_cmd_read_result(fd, short_message_buf,RECEIVE_BUF_WAIT_4S);	printf("\nend send short message\n");} /* end GSM_Send_Message *//*----------------- GSM/GPRS read all short message ----------------*//*查收所有短消息*/void GSM_Read_Message(int fd){	char *send_buf="at+cmgl=\"ALL\"\r";	/*char rcv_buf[2048];*/	GSM_GPRS_send_cmd_read_result(fd,send_buf,RECEIVE_BUF_WAIT_3S);	printf("end read all short message\n");} /* end GSM_Read_Message *//*-------------- GSM/GPRS Config short message env -----------------*//* 配置短消息模式為文本模式;短消息服務中心號碼為+8613800100500*/void GSM_Conf_Message(int fd){	char *send_buf="at+cmgf=1\r";	char *send_center_buf="at+csca=\"+8613800100500\"\r";	GSM_GPRS_send_cmd_read_result(fd,send_buf,RECEIVE_BUF_WAIT_1S);	/* set short message center number*/	GSM_GPRS_send_cmd_read_result(fd,send_center_buf,RECEIVE_BUF_WAIT_1S);	printf("end config short message env\n");} /* end GSM_Conf_Message *//*------------------ GSM/GPRS short message --------------------*/void GSM_short_mesg(int fd){	int flag_sm_run, flag_sm_select;	flag_sm_run = FUNC_RUN;		while (flag_sm_run == FUNC_RUN)	{	/*打印短消息功能列表*/		printf ("\n Select:\n");		printf ("1 : Send short message \n");		printf ("2 : Read all short message \n");		printf ("3 : Config short message env\n");		printf ("4 : quit\n");		printf (">");		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");	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; /*記錄用戶的選選擇輸入*/		flag_func_run = FUNC_RUN;/*FUNC_RUN 已經定義為 0 */	while (flag_func_run == FUNC_RUN)	{		print_prompt();			/*顯示選擇菜單信息*/		scanf("%d",&flag_select_func);	/*獲取用戶輸入的選擇*/		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; /*FUNC_NOT_RUN已定義為1*/				printf("Quit GSM/GPRS function.  byebye\n");				break;							}			default :			{				printf("please input your select use 1 to 7\n");			}		}	}}/*end func_GPRS*/ /*---------------------- init seriel port  -----------------------------*/void init_ttyS(int fd){/*配置串口設備*/	struct termios options;/*定義options,主要串口設置*/		bzero( &options, sizeof( options ));  /*將options的信息清零*/	cfsetispeed(&options,B9600);     /*設置通訊波特率*/ 	cfsetospeed(&options,B9600);	options.c_cflag |= (CRTSCTS | CS8 | CLOCAL | CREAD);	/*CRTSCTS有流控制   CS8 8位數據位 1位停止位	CLOCAL 本地連接,無調制調解器控制 CREAD 允許接收數據*/		options.c_iflag = IGNPAR; /*忽略奇偶校驗*/		/*設置等待時間和最小接收字符*/	options.c_cc[VTIME] = 0;	options.c_cc[VMIN] = 0;	tcflush(fd, TCIFLUSH);/*TCIFLUSH 刷清輸入隊列,溢出數據可以接收,但不讀*/	tcsetattr(fd, TCSANOW, &options);/*啟用新的串口設置,將其屬性賦予串口,TSANOW表示立即生效*/}/*end init_ttyS*//*---------------------- main -----------------------------*/int main(void){	int fd; /*用于記錄文件描述符(端口)*/	printf("\nGSM/GPRS TESTS\n\n");	/*以讀寫方式打開串口  */	fd = open(DEVICE_TTYS, O_RDWR); 	/*#define DEVICE_TTYS "/dev/ttyS0"前面已經定義*/	if (fd == -1)	{/*串口打開失敗*/		printf("open device %s error\n",DEVICE_TTYS);	}	else	{/*串口成功打開*/			init_ttyS(fd);	/*初始化串口設備*/		func_GSM(fd);	/*進行GSM/GPRS測試*/					/*關閉串口*/		if (close(fd)!=0) /*關閉串口*/		printf("close device %s error",DEVICE_TTYS);	}	return 0;}/*end main*/

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
婷婷丁香久久五月婷婷| 亚洲激情一二三区| 欧美日韩国产一级| 欧洲一区在线电影| 欧美伊人久久大香线蕉综合69| 99久久精品国产观看| 成人h动漫精品一区二区| 国产成人精品免费看| 国产成人一级电影| 成人精品鲁一区一区二区| 国产一区在线观看视频| 国产精品资源在线看| 国产一区二区伦理片| 福利电影一区二区| 成人午夜精品一区二区三区| 一本大道久久a久久综合| 日本道精品一区二区三区| 色8久久人人97超碰香蕉987| 欧美在线观看禁18| 日韩欧美中文字幕制服| 日本一区二区三区高清不卡| 亚洲人吸女人奶水| 日韩精品久久理论片| 国产福利精品一区二区| 91麻豆国产香蕉久久精品| 91麻豆精品国产91久久久资源速度| 日韩一区二区影院| 国产精品久久99| 亚洲不卡av一区二区三区| 久久精品国产秦先生| 91麻豆福利精品推荐| 日韩欧美国产三级电影视频| 久久久久国产精品人| 亚洲国产精品影院| 国产精品自拍在线| 欧美日韩在线亚洲一区蜜芽| 久久免费的精品国产v∧| 一区二区在线观看视频 | 99精品视频一区二区三区| 欧美性视频一区二区三区| 欧美本精品男人aⅴ天堂| 亚洲欧美一区二区三区极速播放 | 亚洲国产人成综合网站| 久久se这里有精品| 欧美中文字幕亚洲一区二区va在线| 精品欧美一区二区三区精品久久| 亚洲视频在线一区| 国产原创一区二区| 91精品国产综合久久精品| 亚洲婷婷在线视频| 国产精品一区二区久久精品爱涩| 欧美三区免费完整视频在线观看| 欧美激情一区二区三区| 久久国产尿小便嘘嘘尿| 欧美日韩一区在线观看| 亚洲美腿欧美偷拍| 99这里都是精品| 国产午夜精品福利| 国产在线精品视频| 欧美成人a∨高清免费观看| 亚洲成a人片在线观看中文| 色综合天天综合在线视频| 国产欧美日韩精品一区| 国产在线精品一区二区三区不卡 | 欧美精品高清视频| 亚洲美女免费视频| 色综合天天做天天爱| 亚洲欧美自拍偷拍| aaa亚洲精品一二三区| 国产亚洲精品中文字幕| 国产一区二区三区电影在线观看 | 国产 日韩 欧美大片| 91精品中文字幕一区二区三区| 亚洲色图一区二区| 色狠狠一区二区三区香蕉| 亚洲欧美偷拍另类a∨色屁股| 一本大道久久a久久综合婷婷| 国产日韩欧美一区二区三区乱码 | 中文字幕一区视频| gogogo免费视频观看亚洲一| 国产欧美日韩综合精品一区二区| 国产成人在线免费观看| 国产精品毛片高清在线完整版| 国产激情视频一区二区三区欧美 | 亚洲人123区| 日本韩国欧美一区| 亚洲国产精品麻豆| 欧美一区二区三区公司| 极品销魂美女一区二区三区| 精品国产一区久久| 成人一二三区视频| 亚洲乱码中文字幕| 91精品欧美久久久久久动漫 | 视频一区国产视频| 91精品在线一区二区| 国产精品一区二区果冻传媒| 国产亚洲成av人在线观看导航| 成人一区在线看| 亚洲精品高清在线观看| 欧美精品丝袜中出| 国产一区二区三区日韩| 亚洲人成网站在线| 欧美一级片在线观看| 懂色av一区二区在线播放| 一区二区在线观看av| 精品国精品自拍自在线| 97久久人人超碰| 视频一区欧美精品| 国产精品欧美久久久久无广告| 欧美日韩一本到| 国产·精品毛片| 免费成人av在线播放| 亚洲欧洲精品一区二区三区| 51精品视频一区二区三区| 国产成人8x视频一区二区| 亚洲一区二区三区中文字幕| 日韩一区二区精品| 色哟哟国产精品| 国产九色sp调教91| 日韩综合一区二区| 中文字幕在线观看一区| 日韩精品一区二区三区在线| 色综合色综合色综合| 国产a久久麻豆| 日本aⅴ精品一区二区三区 | 奇米四色…亚洲| 亚洲激情校园春色| 欧美国产成人精品| 欧美精品一区二区久久久| 7777精品伊人久久久大香线蕉经典版下载 | 国产一区999| 免费观看在线色综合| 亚洲成人激情综合网| 亚洲日本免费电影| 国产色产综合产在线视频| 日韩欧美另类在线| 3d成人动漫网站| 欧美日韩成人综合| 日本高清不卡aⅴ免费网站| 56国语精品自产拍在线观看| 成人白浆超碰人人人人| 黑人巨大精品欧美一区| 另类的小说在线视频另类成人小视频在线| 亚洲精品免费电影| 亚洲精品va在线观看| 久久久综合激的五月天| 欧美日韩1区2区| 欧美视频一区二区| 在线中文字幕不卡| 色婷婷亚洲精品| 欧美午夜影院一区| 欧美久久久久免费| 7777精品伊人久久久大香线蕉超级流畅 | 成人午夜免费视频| caoporn国产一区二区| 成人精品视频一区| 一本高清dvd不卡在线观看| 91丝袜美女网| 欧美日韩国产小视频| 欧美一级高清片| 久久久久久综合| 亚洲色图在线视频| 天堂一区二区在线| 国内精品国产成人国产三级粉色| 国产剧情在线观看一区二区| 成人精品国产一区二区4080| 91视频在线观看| 91精品午夜视频| 久久女同性恋中文字幕| 国产欧美日韩另类一区| 亚洲欧洲99久久| 日日骚欧美日韩| 国产在线视频一区二区三区| 成人手机在线视频| 在线观看欧美日本| 日韩精品一区二区三区视频播放| 久久久久久久久久久电影| 国产精品五月天| 丝袜美腿高跟呻吟高潮一区| 国产剧情一区二区| 欧美亚男人的天堂| 精品成人免费观看| 一区二区不卡在线播放| 久久99久久久久| 色婷婷狠狠综合| 亚洲精品在线免费观看视频| 亚洲日本一区二区三区| 久久99蜜桃精品| 欧美性生活影院| 国产精品天美传媒沈樵| 日本不卡免费在线视频| fc2成人免费人成在线观看播放| 欧美色窝79yyyycom| 国产午夜亚洲精品羞羞网站| 亚洲一线二线三线视频| 丰满亚洲少妇av| 精品久久久久一区| 舔着乳尖日韩一区| 91亚洲国产成人精品一区二区三| 日韩小视频在线观看专区|