久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4199|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

2440裸機編程之十一 GPRS

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:68618 發(fā)表于 2014-11-12 13:36 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
GPRS (General Packet Radio Service)是一種基于包的無線通訊服務(wù)。它將使得通訊速率從56一直上升到114Kbps,并且支持計算機和移動用戶的持續(xù)連接。較高的數(shù)據(jù)吞吐能力使得可以使用手持設(shè)備和筆記本電腦進行電視會議和多媒體頁面以及類似的應(yīng)用。GPRS是基于Global System for Mobile(GSM),并且能完成現(xiàn)有的一些服務(wù),例如:蜂窩電話電路交換(circuit-switched)連接和短消息服務(wù)(SMS)。
GPS/GPRS 的AT命令是對早期調(diào)制解調(diào)器AT命令的一個擴充,在早其AT命令的基礎(chǔ)上加上對GSM/GPRS業(yè)務(wù)支持的擴展AT命令集,擴展AT命令集基本格式為“AT+”+命令字符及相關(guān)設(shè)置參數(shù)。

一、GPRS模塊通過串口和PC機相連,用超級終端測試AT指令:

應(yīng)答
AT
返回:OK
讀取日期時間
AT+CCLK?
返回:+CCLK: "02/01/01,00:29:55"
撥打電話
ATDT電話號碼;
讀取設(shè)備名稱
AT+GMI
返回:SIEMENS
讀取軟件名稱
AT+GMM
返回:MC39i
讀取信號強度
AT+CSQ
返回:+CSQ: 28,99
讀取電話簿用戶
AT+CPBR=1,2
返回:
+CPBR: 1,"137xxxx9236",129,"  "
+CPBR: 2,"138xxxx6183",129,"  "
單條讀取短信
AT+CMGR=5
返回:
+CMGR: 1,,44
0891683108200205F0240D91683115829952F000080111615184202318989876EEFF1F62114E0D6E
05695A30026D176FA14E0DFF1F



下面用超級終端發(fā)送一條短信:
AT<CR>
OK
AT+CMGF=1<CR>                      (發(fā)送修改字符集命令,TEXT模式)
OK
AT+CSMP=17,167,0,0<CR>             (設(shè)置文本模式的參數(shù))
OK
AT+CSCS=GSM<CR>
OK
AT+CMGS=159xxxx9928<CR>            (發(fā)送發(fā)短信命令)
><SP>Hello!How are you?<CTRL+Z>    (發(fā)送短信內(nèi)容)
+CMGS: 86
OK

發(fā)送成功




二、利用2440的串口接GPRS模塊實驗


程序:
//***********************************************************************************
//***********************************************************************************
/*
*********************************************************
*         變量
*********************************************************
*/
char sms[50];
/*
*********************************************************
* 函數(shù)介紹:本函數(shù)被使用來做測試串口傳輸數(shù)據(jù)的功能。
* 輸入?yún)?shù):無
* 輸出參數(shù):無
* 返回值  :無
*********************************************************
*/

//***************************************************************************

#define RX_BUF_SIZE  1024
static char rx_buf[RX_BUF_SIZE];
static U16 rx_buf_head, rx_buf_tail;

#define RX_BUF_EMPTY() (rx_buf_head==rx_buf_tail)
#define RX_BUF_INC() (rx_buf_head = (rx_buf_head+1)&(RX_BUF_SIZE-1));
#define RX_BUF_DEC() (rx_buf_tail = (rx_buf_tail+1)&(RX_BUF_SIZE-1));


//串口1接收中斷處理
static void __irq Uart1RxInt(void)
{
    ClearSubPending(BIT_SUB_RXD1); //rSUBSRCPND = BIT_SUB_RXD0;          //Clear pending bit (Requested)
    ClearPending(BIT_UART1);

//printf("URT1 rx interrupt!\n");
rx_buf[rx_buf_head] = RdURXH1();
RX_BUF_INC();
if(RX_BUF_EMPTY())
  RX_BUF_DEC();
}

static void Echo_Rx_Data(void)
{
while(!RX_BUF_EMPTY()) {
  Uart_SendByte(rx_buf[rx_buf_tail]);
  RX_BUF_DEC();
}
}

/****************************************************************************
【功能說明】串口發(fā)送命令字符串并等待回顯
****************************************************************************/
void GPRS_Cmd( char *pt )
{
Uart_Select( 1 ) ;  //選擇UART通道為串口1
Uart_Printf( pt );
Uart_Select( 0 ) ;  //選擇UART通道為串口0
Delay(10);
Echo_Rx_Data();
}

/****************************************************************************
【功能說明】初始化開發(fā)平臺
****************************************************************************/
void GPRS_Init(void)
{   
U32 mpll_val = 0 ;

    Port_Init();  //端口初始化
    Isr_Init();   //中斷初始化
mpll_val = (92<<12)|(1<<4)|(1);
//init FCLK=400M, so change MPLL first
ChangeMPllValue((mpll_val>>12)&0xff, (mpll_val>>4)&0x3f, mpll_val&3);
ChangeClockDivider(14, 12);
cal_cpu_bus_clk();
   
    Uart_Init(0,0,115200);  //串口初始化 波特率為115200
    Uart_Init(0,1,115200);
    Uart_Select(0);  //選者串口0
    rx_buf_head = rx_buf_tail = 0;

    pISR_UART1 = (U32)Uart1RxInt;  //串口接收數(shù)據(jù)中斷
ClearSubPending(BIT_SUB_RXD1);
ClearPending(BIT_UART1);
EnableSubIrq(BIT_SUB_RXD1);
EnableIrq(BIT_UART1);

Clk0_Disable();
Clk1_Disable();
}

/****************************************************************************
【功能說明】發(fā)送掛機命令A(yù)TH
****************************************************************************/
void GPRS_HOLD()
{
GPRS_Cmd("AT\r");
Delay(500);
GPRS_Cmd("ATH\r");
}

/****************************************************************************
【功能說明】發(fā)送接聽命令A(yù)TA
****************************************************************************/
void GPRS_ANSWER()
{
GPRS_Cmd("AT\r");
Delay(500);
GPRS_Cmd("ATA\r");
}

/****************************************************************************
【功能說明】發(fā)送撥打命令A(yù)TDT
****************************************************************************/
void GPRS_CALL(char *number)
{
GPRS_Cmd("AT\r");
Delay(500);
GPRS_Cmd("ATDT");
GPRS_Cmd(number);
GPRS_Cmd(";\r");
}

/****************************************************************************
【功能說明】發(fā)送短信
****************************************************************************/
static void GPRS_MGS(char *number, char *text)
{
GPRS_Cmd("AT\r");
Delay(500);


GPRS_Cmd("AT+CMGF=1\r");//發(fā)送修改字符集命令,TEXT模式
Delay(500);

GPRS_Cmd("AT+CSMP=17,167,0,0\r");//設(shè)置文本模式的參數(shù)。
Delay(500);

GPRS_Cmd("AT+CSCS=GSM\r");
Delay(500);

GPRS_Cmd("AT+CMGS=\""); //發(fā)送發(fā)短信命令
GPRS_Cmd(number);
GPRS_Cmd("\"\r");
Delay(500);

GPRS_Cmd(text);
Uart_Select( 1 ) ;  //選擇UART通道為串口1
Uart_SendByte( 26 );  //"CTRL+Z"的ASCII碼
Uart_Select( 0 ) ;  //選擇UART通道為串口0
Delay(100);
Echo_Rx_Data();
Delay(5000);   //等待5秒  
Echo_Rx_Data();
}

/****************************************************************************
【功能說明】輸入一組數(shù)字用作電話號碼
****************************************************************************/
static int InputNumber(char *num)
{
int key;
int i=0;

for(i=0; i<20; i++)
  num[ i] = 0;
i = 0;

printf("Please input the number:\n");
while(1)
{
  key = Uart_Getch();
  switch(key)
  {
      case '0':
      case '1':
      case '2':
      case '3':
      case '4':
      case '5':
      case '6':
      case '7':
      case '8':
      case '9':
       num[i++] = key;
    Uart_Printf("%c",key);
    break;
   case ENTER_KEY:  //數(shù)字輸入完畢
    //num[i++] = key;
    return i;
    break;
   default:  //數(shù)字輸入錯誤!!!
    Uart_Printf( "輸入錯誤,請重新輸入!!!\n");
    return 0;
    break ;  
     }
}
}

/****************************************************************************
【功能說明】GPRS模塊Q2403實驗程序
****************************************************************************/
void Main(void)
{
U16 key ;
char number[20];

GPRS_Init();

Test_Again:
Uart_Printf( "\nGSM/GPRS TEST, press ESC key to exit !\n" ) ;
Uart_Printf(" 1 : Send sh1111111ort message\n");
Uart_Printf(" 2 : Call the number\n");
Uart_Printf(" 3 : Ring off\n");
Uart_Printf(" 4 : Pick up\n");
  
while(1)
{
  key = Uart_Getch();
  if(key==ESC_KEY)
   break;
/*  if(key) {
   putch(key);
   WrUTXH1(key);
  }
*/  
  Echo_Rx_Data();
  
  switch( key )
  {
   case '1':
    Uart_Printf("Send short message\t\t\n");
    Uart_Printf("Please enter the phone number:\n");
    if( !InputNumber(number) )break;
   
    Uart_Printf("\nPlease enter the context in English:\n");
    Uart_GetString(sms);
    Uart_Printf("\nNow send short message...\n");
    GPRS_MGS(number,sms);
    //printf("\n");
    //break;
    goto Test_Again;
        case '2':
         Uart_Printf("Call the number\t\t\n");
         Uart_Printf("Please enter the phone number.\n");
                if( !InputNumber(number) )  break;
                Uart_Printf("\nNow send a call...\n");
                GPRS_CALL(number);
                //printf("\n");
                //break;
                goto Test_Again;
        case '3': Uart_Printf("Ring off\t\t\n");
                GPRS_HOLD();
                //break;
                goto Test_Again;
        case '4': Uart_Printf("Pick up\t\t\n");
                GPRS_ANSWER();
                //break;
                goto Test_Again;
  }
  }

}
//***********************************************************************************
//***********************************************************************************


實驗結(jié)果:

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:45457 發(fā)表于 2015-9-11 19:11 | 只看該作者
2440裸機編程之十一 GPRS
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: av中文字幕在线 | 观看av| 北条麻妃一区二区三区在线观看 | 91大神在线资源观看无广告 | 国产黄色大片 | 亚洲精品久久久久久一区二区 | 日本精品一区二区三区视频 | 污片在线免费观看 | 免费一级毛片 | 亚洲嫩草 | 中文字幕在线观看视频网站 | 亚洲第1页 | 亚洲欧美国产视频 | 亚洲欧美中文日韩在线v日本 | 亚洲精品一区二区三区中文字幕 | 国产精品1 | 午夜影院在线 | 99久久久久久99国产精品免 | 三级黄色片在线播放 | 精品视频在线观看 | 就操在线 | 一区视频 | 国产精品久久久久9999鸭 | 成人亚洲 | 岛国二区| 久久久精品一区 | 高清免费av| 午夜精品一区二区三区在线 | 男女久久久 | 欧美成人精品一区二区男人看 | 午夜精品视频 | 黄色av网站在线观看 | 美女视频网站久久 | 久久国产精品久久久久久 | 狼人伊人影院 | 亚洲欧美中文日韩在线v日本 | 亚洲乱码一区二区三区在线观看 | 在线看一区二区三区 | 99reav| 欧美在线视频一区 | 日韩伦理一区二区三区 |