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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? gprs data for wavecom q2406b(v2.0).#1

?? 以arm和ucos為平臺,實(shí)現(xiàn)的GPS通信功能,上傳的是源代碼,可以直接拿來用
?? #1
字號:
/****************************************Copyright (c)**************************************************
                             內(nèi)蒙古工業(yè)大學(xué)信息學(xué)院GPS車載開發(fā)小組
**--------------File Info-------------------------------------------------------------------------------
** File name:			GPRS數(shù)傳實(shí)驗(yàn)程序
** Last modified Date:  2006-1-5
** Last Version:		1.0
** Created by:			孫作雷
** Descriptions:		完成GPRS模塊WAVECOME Q2406的撥號連接并自動設(shè)定服務(wù)器端的IP地址和監(jiān)聽端口,可自動
                        重?fù)軆纱危繐芴栆淮螌a(chǎn)生一聲峰鳴提示,若三次撥號均未成功建立與服務(wù)器端的數(shù)傳連
                        接,則峰鳴10聲報警,需手工重啟模塊。如成功進(jìn)入數(shù)傳狀態(tài),則實(shí)驗(yàn)板上的8個LED同時閃
                        爍3次,可按KEY1鍵向服務(wù)器端發(fā)送預(yù)設(shè)的字符串"北緯40.506290度,東經(jīng)11.1405032度",
                        同時可接收上位機(jī)發(fā)來的0-6的數(shù)字字符,每接收到一個字符,峰鳴一次,并將加3后的數(shù)值
                        送回上位機(jī)全部LED閃爍一次,按KEY2鍵退出數(shù)傳狀態(tài),并斷開與GPRS網(wǎng)絡(luò)的連接,全部LED
                        閃爍15次。                        
**
********************************************************************************************************/
#include "config.h"
#include<string.h>
#include<ctype.h>
#define   BEEP   (1<<7)
#define   KEY1	 (1<<16)			// P0.16
#define   KEY2	 (1<<17)			// P0.17
/*聲明任務(wù)*/
void Task_Send(void *mydata) reentrant;//發(fā)送任務(wù)
void Task_Receive(void *mydata)  reentrant;//接受任務(wù)
void Task_KeyBoard(void *mydata)  reentrant;//鍵盤查詢?nèi)蝿?wù)
OS_STK TaskStk_Send[MaxStkSize+1];
OS_STK TaskStk_ Send_GPRSAT[MaxStkSize+1];         
OS_STK TaskStk_KeyBoard[MaxStkSize+1];
 
INT8U  Task_Send_GPRSAT_Prio=3;
INT8U  Task_Send_Prio=1;
INT8U  Task_KeyBoard_Prio=2;

/* 定義串口模式設(shè)置數(shù)據(jù)結(jié)構(gòu) */
typedef struct UartMode
{
	uint8 datab;		// 字長度,5/6/7/8可選
	uint8 stopb;		// 停止位,1/2可選
	uint8 parity;		// 奇偶校驗(yàn)位,0-無校驗(yàn),1-奇校驗(yàn),2-偶校驗(yàn)
}UARTMODE;

volatile uint8 D=1,E=0;	// D為進(jìn)入數(shù)傳狀態(tài)標(biāo)志,E為接收到數(shù)傳狀態(tài)建立信號Ok_Info_WaitingForData標(biāo)志。
const uint32 LEDS=(0xff<<18);
volatile *int Sendstr;
const char *in[10]={
                       "AT#APNSERV=\"CMNET\"\r",
                       "AT+CGATT=1\r",
                       "AT#TCPPORT=\"6800\"\r",
                       "AT#TCPSERV=\"202.207.28.17\"\r",
                       "AT#CONNECTIONSTART\r",
                       "AT#OTCP\r",
                       "北緯40.506290度,東經(jīng)11.1405032度",
                       "+++",
                       "AT#CONNECTIONSTOP\r",
                       "AT+CGATT=0\r"
                       };

/*
******************************************************************************************
** 函數(shù)名稱 : DelayNS()
** 函數(shù)功能 : 長軟件延時。
** 入口參數(shù) : dly		延時控制值,值越大延時越長
** 出口參數(shù) : 無
******************************************************************************************
*/
void  DelayNS(uint32  dly)
{  uint32  i;

   for(; dly>0; dly--) 
      for(i=0; i<50000; i++);
}
/*
******************************************************************************************
** 函數(shù)名稱 : Beep()
** 函數(shù)功能 : 產(chǎn)生形參對應(yīng)次數(shù)的峰鳴
** 入口參數(shù) : n       峰鳴的次數(shù)
** 出口參數(shù) : 無
******************************************************************************************
*/
void  Beep (uint8 n)    
{
	for(; n>0; n--)
	{
		IO0CLR =  BEEP;		// 峰鳴
		DelayNS(20);		// 延時
		IO0SET =  BEEP;		// 停止峰鳴
		DelayNS(30);		// 延時
	}
}
/*
*********************************************************************************************************
** 函數(shù)名稱 :LEDS_Flash()
** 函數(shù)功能 :8個LED同時閃爍,閃爍次數(shù)由形參決定
** 入口參數(shù) :n	閃爍的次數(shù)
** 出口參數(shù) :無
*********************************************************************************************************
*/
void  LEDS_Flash (uint8 n)	
{
    uint8 i = 0;
    while (i<n)
	{
		IO1CLR =  LEDS;		// 控制LEDS亮
		DelayNS(50);		// 延時
		IO1SET =  LEDS;		// 控制LEDS滅
		DelayNS(50);		// 延時
		i++;
	}
}
/*
*********************************************************************************************************
** 函數(shù)名稱 :UART0_SendByte()
** 函數(shù)功能 :向串口0發(fā)送1字節(jié)數(shù)據(jù)
** 入口參數(shù) :dat	要發(fā)送的數(shù)據(jù)
** 出口參數(shù) :無
*********************************************************************************************************
*/
void UART0_SendByte (uint8 dat)
{
	U0THR = dat;	              // 要發(fā)送的數(shù)據(jù)
    while ((U0LSR & 0x20) == 0);  // 等待發(fā)送完成
}

/*
*********************************************************************************************************
** 函數(shù)名稱 :UART0_SendStr()
** 函數(shù)功能 :向串口發(fā)送字符串
** 入口參數(shù) :str	要發(fā)送的字符串的首地址指針
** 出口參數(shù) :無
*********************************************************************************************************
*/
void UART0_SendStr(char const *str)
{
   for( ; *str!='\0'; str++) 
      UART0_SendByte (*str);    
}
/*
*********************************************************************************************************
** 函數(shù)名稱 :Send_GPRSAT()
** 函數(shù)功能 :發(fā)送GPRS建立數(shù)傳狀態(tài)的AT指令
** 入口參數(shù) :無
** 出口參數(shù) :無
*********************************************************************************************************
*/
void Send_GPRSAT(void)           //在發(fā)送前4條時,關(guān)閉中斷,不接收模塊返回值,在發(fā)送第5條指令前開啟中斷
{
   uint8 i;
   U0IER = 0x00;
   for(i=0;i<5;i++)
   {
      UART0_SendStr(in[i]);
      DelayNS(500);
   }
  
   DelayNS(500);
   U0IER = 0x05;				 // 允許RBR中斷
   UART0_SendStr(in[5]);
   DelayNS(500);
 }
/*
*********************************************************************************************************
** 函數(shù)名稱 :IRQ_UART0()
** 函數(shù)功能 :串口0接收中斷服務(wù)程序
** 入口參數(shù) :無
** 出口參數(shù) :無
*********************************************************************************************************
*/
void __irq IRQ_UART0 (void)
{
	uint8 k=0,IIR,a;
	while(((IIR=U0IIR)&0x01)==0)//LPC2131串口只有一個中斷入口,它跳入中斷子程序后要依靠中斷標(biāo)志寄存器的
	                              //相關(guān)位查詢。
	{
	   
	   switch(IIR & 0x0e)
	   {			   
	      case 0x04:   
	          a = U0RBR;  // 讀取RBR中的數(shù)據(jù),并清除中斷
		      if(D)		   	//查詢是否進(jìn)入數(shù)傳狀態(tài)
	          {     
	                if(a=='W')
	                {   
	                    E=1;
	                    LEDS_Flash(4); 
	                }
	                    
	                
	                #ifdef DEBUG         //調(diào)試時,將
	                 U0THR = a;	           // 要發(fā)送的數(shù)據(jù)
                     while ((U0LSR & 0x20) == 0); //等待發(fā)送完成
                     #endif
                     
	          }
	          else        //以下為進(jìn)入GPRS數(shù)傳狀態(tài)后的接收程序,接收到的數(shù)據(jù)由上位機(jī)通過GPRS無線鏈路傳來
	          {
	               Beep(1);
	               LEDS_Flash(1);
	               
	               U0THR = (a+3);	             // 將服務(wù)器端發(fā)來的數(shù)值做加3處理。
                   while ((U0LSR & 0x20) == 0);  // 等待發(fā)送完成  
	               
	          }
	          break;
	      case 0x06:                       //串口錯誤中斷
	          k=U0LSR;                  //任意的一個讀取U0LSR都可以清除該中斷。
	          k=U0RBR;                 //讀出錯誤數(shù)據(jù)然后放棄
	          break;
	      default:
	         break;
	    }
	 }
	VICVectAddr = 0x00;			      // 中斷處理結(jié)束
}
/*
*********************************************************************************************************
** 函數(shù)名稱 :UART0_Init()
** 函數(shù)功能 :串口初始化,設(shè)置工作模式和波特率。
** 入口參數(shù) :baud	波特率
**			  set	模式設(shè)置(UARTMODE數(shù)據(jù)結(jié)構(gòu))
** 出口參數(shù) :1-初始化成功,  0-初始化失敗
*********************************************************************************************************
*/
int8 UART0_Init (uint32 baud, UARTMODE set)
{
	uint32 bak;
	
	/* 參數(shù)過濾 */
	if ((baud ==0 ) || (baud > 115200))	return (0);
	if ((set.datab <5) || (set.datab > 8))	return (0);
	if ((set.stopb == 0) || (set.stopb > 2)) 	return (0);
	if (set.parity > 4)	return (0);
	
	/* 設(shè)置串口波特率 */
	U0LCR = 0x80;						// DLAB = 1	
	bak   = (Fpclk >> 4) / baud;
	U0DLM = bak >> 8;
	U0DLL = bak & 0xFF;
	
	/* 設(shè)置串口模式 */
	bak   = set.datab - 5;				// 設(shè)置字長
	if (set.stopb == 2)	bak |= 0x04;	// 判斷是否為2位停止位
	
	if (set.parity != 0)
	{
		set.parity = set.parity - 1;
		bak |= 0x08;
	}
	bak |= set.parity << 4;				// 設(shè)置奇偶校驗(yàn)
	
	U0LCR = bak;
	
	return (1);
}

void Key_Prosses(unsigned char keyvalue)
{
 switch( keyvalue)
  {
   case KEY1:
         while((IO0PIN&KEY1) == 0);//當(dāng)按鍵松開下向上位機(jī)發(fā)送數(shù)傳數(shù)據(jù)
		       //  Sendstr=it[6];
	           //   OSSemPost(Sem_Send);
	 OSTaskCreate(Task_Getchar, (void *)0, &Task_Getchar[0],Task_Getchar_Prio);
	 OSTaskCreate(Task_Send, (void *)0, &TaskStk_Send[0],Task_Send_Prio);
	
			 break;
   case KEY2:
             while((IO0PIN&KEY2) == 0);
	             U0IER = 0x00;
				 Sendstr=
	            for (i=7;i<10;i++)  
	             {
	                UART0_SendStr(in[i]);
	                DelayNS(200);
	             }
				 OSSemPost(Sem_Send); 
	             LEDS_Flash(15)
		 break;
  }

}
/*
*********************************************************************************************************
** 函數(shù)名稱 :main()
*********************************************************************************************************
*/
int main (void)
{
	uint8 i,k=5; 
	
	UARTMODE set;                //設(shè)置串口的格式

	set.datab  = 8;
	set.stopb  = 1;
	set.parity = 0;
	
	
	PINSEL0 = (PINSEL0&(~0x0f)|0x05)&(~(0x03<<14));	// 設(shè)置I/O連接到UART0,P0.7(BEEP)為GPIO功能,其它的管腳功能不變
	PINSEL1 = PINSEL1&(~0x0f);   // 設(shè)置KEY1(P0.16)和KEY2(P0.17)為GPIO功能,其它的管腳功能不變
	PINSEL2 = PINSEL2&(~0x08);  // P1.18-P1.25為GPIO功能,其它的管腳功能不變
	IO1DIR |= LEDS;             // P1.18-P1.25為輸出
	IO0DIR  = IO0DIR&(~KEY1)&(~KEY2)|BEEP; // 設(shè)置BEEP控制口P0.7為輸出模式,KEY1(P0.16)和KEY2(P0.17)為輸入
	IO0SET  = BEEP;			    // 控制BEEP(P0.7)輸出高電平1,不峰鳴
	IO1SET  = LEDS;             // LED全滅
	
	UART0_Init(115200, set);			// 串口初始化
	U0FCR = 0x00;						// 禁能FIFO
	
	IRQEnable();						// 使能IRQ中斷
	/* 使能UART0中斷 */
	VICIntSelect = 0x00000000;			// 設(shè)置所有的通道為IRQ中斷
	VICVectCntl0 = 0x20 | 0x06;			// UART0分配到IRQ slot0,即最高優(yōu)先級
	VICVectAddr0 = (uint32)IRQ_UART0;	// 設(shè)置UART0向量地址
	VICIntEnable = 1 << 0x06;			// 使能UART0中斷

	
	
	LEDS_Flash(2);                      //程序開始時,LED閃爍提示
      OSInit(); //任務(wù)初始化 
     OSTaskCreate(Task_Send_GPRSAT, (void *)0, &TaskStk_Send_GPRSAT[0],Task_Send_GPRSAT_Prio);
	 OSTaskCreate(Task_KeyBoard, (void *)0, &Task_KeyBoard[0],Task_KeyBoard_Prio);
	 OSStart(); //開始多任務(wù)調(diào)度
	/*for (i=0;i<3;i++)
	{
	   Send_GPRSAT();
	   Beep(1);                       
	   
	   while((E==0)&&(k!=0))            //等待接收到Ok_Info_WaitingForData,k用來避免死循環(huán)。
	   {
	       DelayNS(300); 
	       k--;
	   }
	   
	   if(E)break;
	}
	   
	   
	  
    if(E)         
	{
	   D = 0;                           //D清零,進(jìn)入數(shù)傳狀態(tài)
	   while (1)                        //等待按鍵按下,此處是個死循環(huán)
	   {
	      if((IO0PIN&KEY1) == 0)        //如KEY1按下,則向上位機(jī)發(fā)送一串實(shí)驗(yàn)字符
	      {
	          DelayNS(1);            //軟件延時,去抖動
	          if((IO0PIN&KEY1) == 0)
	          {
	              while((IO0PIN&KEY1) == 0);//當(dāng)按鍵松開下向上位機(jī)發(fā)送數(shù)傳數(shù)據(jù)
	              UART0_SendStr(in[6]); 
	          }
	      }
	      else
	      if((IO0PIN&KEY2) == 0)  //入KEY2按下,則退出數(shù)傳狀態(tài)并斷開GPRS連接
	      {
	          DelayNS(1);            //軟件延時,去抖動
	          if((IO0PIN&KEY2) == 0)
	          {  
	             while((IO0PIN&KEY2) == 0);
	             U0IER = 0x00;
	              
	             for (i=7;i<10;i++)  
	             {
	                UART0_SendStr(in[i]);
	                DelayNS(200);
	             }
	             LEDS_Flash(15); 
	          }
	      }
	   }
	}
	else
	  Beep(10); //三次重?fù)芫催M(jìn)入數(shù)傳狀態(tài)則報警
*/	      
}
/*********************************************************************************************************
**                            End Of File
********************************************************************************************************/
void Task_Send_GPRSAT(void *mydata) reentrant
{
  mydata=mydata;
 for(;;){
       Send_GPRSAT();
	   Beep(1); 
	    while((E==0)&&(k!=0))            //等待接收到Ok_Info_WaitingForData,k用來避免死循環(huán)。
	   {
	       DelayNS(300); 
	       k--;
	   }
if(E==1)OSTaskDel(Task_Send_GPRSAT_Prio);
}
void Task_Send(void *mydata) reentrant
{mydata=mydata;
 for(;;){
 UART0_SendStr(*str);
       }
}
 
void Task_KeyBoard(void *mydata) reentrant
{
   mydata=mydata;
 for(;;){
      if(IO0PIN==0) //如果IO0PIN=0說明有鍵按下
	  {
	   DelayNS(1);
	   Key_Prosses(key);//鍵盤處理子程序,根據(jù)鍵值得不同執(zhí)行的操作
	  } 
	 }                 
}

 

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品福利电影一区二区三区四区| 久久久精品影视| 国产激情视频一区二区三区欧美| 亚洲三级在线播放| 精品日韩欧美在线| 欧美亚洲丝袜传媒另类| 国产精品一级黄| 午夜精品久久久久久| 国产亚洲婷婷免费| 欧美猛男男办公室激情| 99久久久国产精品免费蜜臀| 久久99国产精品麻豆| 一区二区三区四区高清精品免费观看| 久久久久国产精品厨房| 欧美人体做爰大胆视频| 91视频一区二区| 懂色av一区二区三区蜜臀| 免费观看日韩av| 亚洲国产日韩一级| 国产精品成人在线观看| ww久久中文字幕| 欧美精品三级在线观看| 日本高清不卡视频| 成人激情免费视频| 韩国三级电影一区二区| 日本欧美一区二区| 亚洲一区二区三区小说| 日韩伦理av电影| 久久精品夜夜夜夜久久| 日韩精品一区二区在线| 欧美三级资源在线| 日本精品视频一区二区| 91社区在线播放| 粉嫩aⅴ一区二区三区四区| 国产乱子轮精品视频| 美女视频网站久久| 日韩av成人高清| 午夜精品成人在线| 午夜久久电影网| 无码av免费一区二区三区试看 | 3atv在线一区二区三区| 色婷婷精品大在线视频| 91老师片黄在线观看| 成人av影视在线观看| 成人三级伦理片| 成人免费看视频| 丁香桃色午夜亚洲一区二区三区| 精品亚洲国内自在自线福利| 久久99久久久久久久久久久| 蜜臀久久久99精品久久久久久| 天天影视色香欲综合网老头| 午夜一区二区三区视频| 丝袜亚洲精品中文字幕一区| 亚洲成人一区在线| 日本 国产 欧美色综合| 奇米在线7777在线精品| 久久狠狠亚洲综合| 国产一区二区三区精品视频| 国产剧情在线观看一区二区| 国产91在线看| 91亚洲精品一区二区乱码| 91国内精品野花午夜精品| 欧美影片第一页| 在线播放91灌醉迷j高跟美女 | 成人久久18免费网站麻豆| 五月天婷婷综合| 99精品在线观看视频| 日本不卡123| 国产一区在线不卡| 成人黄色片在线观看| 9i看片成人免费高清| 91在线码无精品| 欧美日本韩国一区| 久久综合九色欧美综合狠狠| 中文字幕日韩av资源站| 亚洲一区二区三区自拍| 蜜桃视频在线观看一区| 国产精品18久久久久久久久久久久 | 国产精品人成在线观看免费| 亚洲日本欧美天堂| 青青草精品视频| 豆国产96在线|亚洲| 欧美日韩高清一区二区不卡| 欧美精品一区二区三区很污很色的 | youjizz久久| 欧美日韩成人在线| 久久久久国产一区二区三区四区| 亚洲伦理在线免费看| 久久国产综合精品| av亚洲精华国产精华| 欧美一区二区三区四区在线观看| 久久精品综合网| 偷偷要91色婷婷| 不卡av免费在线观看| 欧美一区二区三区免费| 中文字幕一区二区三中文字幕| 五月天激情综合网| a4yy欧美一区二区三区| 日韩欧美一区二区免费| 亚洲品质自拍视频| 国产一区二区三区观看| 欧美视频自拍偷拍| 国产精品久99| 免费在线视频一区| 在线观看av不卡| 欧美国产综合一区二区| 奇米色一区二区三区四区| 91麻豆6部合集magnet| 精品国产精品网麻豆系列| 亚洲一区二区视频| caoporen国产精品视频| www欧美成人18+| 天天色综合天天| 色综合久久久久久久| 亚洲国产成人在线| 久久国产日韩欧美精品| 欧美日韩aaaaaa| 亚洲综合一区二区三区| 大美女一区二区三区| 亚洲精品一区在线观看| 日韩中文字幕不卡| 欧美三级韩国三级日本三斤| 国产精品久久久久aaaa樱花| 国产一区二区毛片| 精品成人一区二区三区四区| 日韩中文字幕91| 欧美日韩国产精选| 亚洲无线码一区二区三区| 色综合夜色一区| 欧美国产成人在线| 国产福利91精品一区| 久久亚洲捆绑美女| 黑人巨大精品欧美黑白配亚洲| 欧美一级一级性生活免费录像| 亚洲国产精品欧美一二99| 欧美在线一区二区| 亚洲制服丝袜在线| 91在线视频免费91| 国产精品不卡视频| 99国产一区二区三精品乱码| 国产精品传媒在线| 91麻豆自制传媒国产之光| 一区精品在线播放| 一本一道久久a久久精品 | 在线播放日韩导航| 亚洲不卡一区二区三区| 在线不卡免费欧美| 蜜臀av性久久久久av蜜臀妖精| 日韩欧美美女一区二区三区| 另类成人小视频在线| 精品国产乱码久久久久久久| 久久99精品久久久久久| 久久久久久99久久久精品网站| 国产丶欧美丶日本不卡视频| 国产拍欧美日韩视频二区 | 日韩欧美国产一二三区| 精品一区二区三区的国产在线播放| 日韩视频免费直播| 国产美女av一区二区三区| 国产亚洲一区二区三区四区| 成人小视频在线| 亚洲日本免费电影| 欧美日韩情趣电影| 美女视频一区在线观看| 久久久久久亚洲综合| 成人免费毛片高清视频| 樱桃视频在线观看一区| 88在线观看91蜜桃国自产| 毛片av一区二区| 中文字幕乱码久久午夜不卡| 色婷婷综合久久久中文字幕| 亚洲bdsm女犯bdsm网站| 欧美成人午夜电影| av不卡在线观看| 亚洲3atv精品一区二区三区| 日韩精品影音先锋| 99精品久久只有精品| 日韩电影在线观看一区| 久久久精品蜜桃| 一本久久精品一区二区| 蜜臀av一区二区| 亚洲欧洲av色图| 91精品国产综合久久福利软件| 国产高清成人在线| 亚洲在线免费播放| 久久久久久久久久久电影| 在线观看欧美日本| 国产毛片精品视频| 一区二区三区欧美亚洲| 911精品产国品一二三产区| 国产精品资源在线| 亚洲成人tv网| 国产精品午夜在线| 日韩一区二区影院| 91蜜桃网址入口| 韩国视频一区二区| 午夜精品免费在线观看| 国产精品无遮挡| 欧美一区二区视频在线观看2020| 成人午夜私人影院|