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

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

?? gprs.c

?? 通過車載終端采集GPS數據
?? C
?? 第 1 頁 / 共 2 頁
字號:

#include "w77e532.h"
#include "16c554.h"
#include "gprs.h"
#include "mcuInit.h"

#include "string.h"
#include "stdio.h"

#include "global.h"
#include "commoninterface.h"

extern Uchar volatile xdata D12_Y5;
extern idata Uchar D18CS;//D12_Y5的寄存器

//#define PWRKEY_PIN      P3_5    /*工作時為高電平*/
//#define PWRENABLE_PIN   P1_5    /*工作時為高電平*/    
//#define RESET_ALL       P1_5    /*工作時為高電平*/


AT_STRING_STRUCT code at_cmd[]
        ={
            {"AT\r",0},
            {"ATE0+COLP=1\r",1}, /**/
            {"AT+CCID\r", 2},
            {"AT+CIPSTART=\"UDP\",", 3},
            {"AT+CIPSEND=", 4},
            {"AT+CIPCLOSE\r", 5},
            {"ATD", 6},
            {"ATA\r", 7},
            {"ATH\r", 8},
            {"AT+CSTT", 9},
            {"AT+CIICR\r", 10},
            {"AT+CIFSR\r", 11},
            {"AT+CLVL=100;+CMIC=0,6\r", 12},
            {"AT+CIPSTATUS\r", 13},
//AT+CIPSHUT 
            {"",}
         };

AT_STRING_STRUCT code at_ret[]
        ={ 
            {"\r\n",AT_RET_CRLF},
            {"OK\r\n",AT_RET_OK},
            {"8986",AT_RET_CCID},
            {"CONNECT OK\r\n",AT_RET_CONNECT_OK},
            {">", AT_RET_PROMPT},
            {"SEND OK",AT_RET_SEND_OK},
            {"CLOSE OK",AT_RET_CLOSE_OK},
            {"+CSQ:",AT_RET_CSQ},
            {"NJPT", AT_RET_NJPT},
            {"STATE:CONNECT OK",AT_RET_STATE_OK},
            {"ALREADY CONNECT",AT_RET_ALREADY_CONNECT},
            {"RING",AT_RET_RING},
            {"NO CARRIER",AT_RET_NO_CARRIER},
            {"BUSY",AT_RET_BUSY},
            {"+COLP:",AT_RET_COLP},
            {"AT",AT_RET_AT},
            {"AT+CSQ", AT_RET_ATCSQ},
            {"+CLVL", AT_RET_VOLUME},
//AT+CSQ
//SEND FAIL
            {"",0}       /*end of struct*/
         };


char gprsRcvBuffer[1024];
GPRS_INFO_STRUCT gprsInfo;
IP_INFO_STRUCT ipInfo;
/*************************cj add 時間:2007年3月21日
*為了保證處于振鈴狀態下,如果20秒內還沒有連續的振鈴,則表示此時已經沒有必要再等待振鈴*/
#define MAX_RINGLENG  21
unsigned char gRingClock = 0;
void set_ringtimeout()
{
    gRingClock = MAX_RINGLENG;
}

void ringClockTimeout()
{
    if (gprsInfo.state == STATE_VOICE_RING)
    {
        gRingClock--;
        if (0 == gRingClock)
            gprsInfo.state = STATE_IDLE;;
    }
}
//extern char debug_msg[1024];
/*****以上內容填加結束*********************/
void debugDump(char flag, char *ptr, unsigned char len)
{
    //for debug
/*    if (0 == flag)
    {
        memcpy(debug_msg, ptr, len);
        sioc_send(debug_msg, len);
    }*/
}

void gprs_reset(unsigned char nPos)
{
//    sprintf(debug_msg, "模塊重啟:%2bd;%2bd;%2bd;%2bd\r\n", nPos, ipInfo.rxTimer, gprsInfo.txTimer, gprsInfo.state);
//    sioc_send(debug_msg, strlen(debug_msg));
    ipInfo.rxTimer = 0;
    gprsInfo.state = STATE_BEGIN;
}

void gprs_init(void)
{
    D18CS = 0x03;
    D12_Y5 = D18CS;
    tl16c554_init();



    clear_ram(gprsRcvBuffer,sizeof(gprsRcvBuffer));
    clear_ram((char *)&ipInfo, sizeof(ipInfo) );
    clear_ram((char *)&gprsInfo, sizeof(gprsInfo) );

    gprsInfo.valid = 0;
    gprsInfo.rxBytes = 0;
    gprsInfo.rxPtr = gprsRcvBuffer;

    gprs_reset(1);

}

char gprs_packet_send(char *ptr, unsigned int len)
{
    /*xhb_debug 1*/
    if (len > 256)
        debugDump(1, ptr, 250);
    else
        debugDump(1, ptr, len);

    gprsInfo.txTimer = 60;
    at_serial_send(ptr, len);

    return(0);
}

void gprs_send_apn(void)
{
    clear_ram(gprsInfo.cmdBuffer,sizeof(gprsInfo.cmdBuffer) );
    strcpy(gprsInfo.cmdBuffer, "AT+CSTT=\"GJGS.RZ.SD\",\"\",\"\"\r");//strcpy(gprsInfo.cmdBuffer, "AT+CSTT=\"bus8-xit.he\",\"\",\"\"\r");

    gprs_packet_send(gprsInfo.cmdBuffer, strlen(gprsInfo.cmdBuffer));
}


void gprs_send_connect(void)
{
    char *ptr;
    unsigned char ipAddr[6];
    unsigned int ipPort;

    clear_ram(gprsInfo.cmdBuffer,sizeof(gprsInfo.cmdBuffer) );
    strcpy(gprsInfo.cmdBuffer, at_cmd[AT_CMD_CONNECT].str);
    get_serverIp(ipAddr);
    ipPort = ipAddr[4] * 256 + ipAddr[5];

    ptr = gprsInfo.cmdBuffer + strlen(gprsInfo.cmdBuffer);
    sprintf(ptr, "\"%bu.%bu.%bu.%bu\",\"%u\"\r", \
            ipAddr[0],ipAddr[1],ipAddr[2],ipAddr[3],ipPort);

    gprs_packet_send(gprsInfo.cmdBuffer, strlen(gprsInfo.cmdBuffer));
}

void gprs_transmit_process(void)
{
    char *ptr;
    static unsigned char count;

    switch(gprsInfo.state )
    {
        case STATE_BEGIN:
            count = 0;  /*關閉GPRS電源1秒*/ 
            gprsInfo.state = STATE_RESET;

            gprsInfo.resetCount ++;
            gprsInfo.errorCount = 0;
            gprsInfo.txTimer = 0;
            ipInfo.rxTimer = 0;
            break;

        case STATE_RESET:
            count ++;
            D18CS &= 0x0b;
            D12_Y5 = D18CS;
          //  PWRENABLE_PIN = 0;
            
            if( count >= 20*2 )
            {
                count = 0;
                gprsInfo.state = STATE_POWER_HOLD;
            }
                
            break;

        case STATE_POWER_HOLD:  /**/
            count ++;
            D18CS |= 0x0c;
            D12_Y5 = D18CS;
        /*    PWRKEY_PIN = 1;
            PWRENABLE_PIN = 1;*/

            if( count >= 20*3 )  //2
            {
                count = 0;
                gprsInfo.state = STATE_PWRKEY_LOW;
            }

            break;

        case STATE_PWRKEY_LOW:  /*要保持低電平2秒*/
            count ++;
            D18CS &= 0x07;
            D12_Y5 = D18CS;
   //         PWRKEY_PIN = 0;

            if( count >= 20*3 )
            {
                count = 0;
                gprsInfo.state = STATE_PWRKEY_HIGH;
            }

            break;

        case STATE_PWRKEY_HIGH:  /*要保持高電平1秒*/
            count ++;
            D18CS |= 0x08;
            D12_Y5 = D18CS;
       //     PWRKEY_PIN = 1;

            if( count >= 20*3 )  //5
            {
                count = 0;
                gprsInfo.state = STATE_SEND_PREINIT;
            }

            break;

        case STATE_SEND_PREINIT:
            gprsInfo.state = STATE_RECEIVE_PREINIT;

            ptr = at_cmd[AT_CMD_AT].str;
            gprs_packet_send(ptr, strlen(ptr) );
            gprsInfo.txTimer = 20;
            break;


        case STATE_SEND_INIT:
            gprsInfo.state = STATE_RECEIVE_INIT;

            ptr = at_cmd[AT_CMD_INIT].str;
            gprs_packet_send(ptr, strlen(ptr) );
            break;

        /****cj add for set volume***/
        case STATE_SEND_SET_VOLUME:
            gprsInfo.state = STATE_RECIEVE_SET_VOLUME;

            ptr = at_cmd[AT_CMD_SET_VOLUME].str;
            gprs_packet_send(ptr, strlen(ptr) );
            break; 
        /***end of add *****/

        case STATE_SEND_CCID:
            gprsInfo.state = STATE_RECEIVE_CCID;
            ptr = at_cmd[AT_CMD_CCID].str;
            gprs_packet_send(ptr, strlen(ptr) );
            break;

        case STATE_SEND_APN:
#if 1  
/*不是APN接入時采用此段程序*/          
            count ++;
            gprsInfo.txTimer = 0;

            if( count >= 20*10 )  
            {
                count = 0;
                gprsInfo.state = STATE_SEND_CONNECT;
            }
            break;
#endif
            gprsInfo.state = STATE_RECEIVE_APN;

            gprs_send_apn();
            break;

        case STATE_SEND_ACTIVE:
            gprsInfo.state = STATE_RECEIVE_ACTIVE;

            ptr = at_cmd[AT_CMD_GPRS_ACTIVE].str;
            gprs_packet_send(ptr, strlen(ptr) );
            gprsInfo.txTimer = 0;
            break;

        case STATE_SEND_GET_IP:
            if( count == 0 )
            {
                count ++;

                ptr = at_cmd[AT_CMD_GET_IP].str;
                gprs_packet_send(ptr, strlen(ptr) );
                gprsInfo.txTimer = 0;
            }
            else if( count >= 40 )
            {
                gprsInfo.state = STATE_SEND_CONNECT;
            }
            else
                count ++;

            break;


        case STATE_SEND_CONNECT:
            gprsInfo.state = STATE_RECEIVE_CONNECT;

            gprs_send_connect();
            gprsInfo.txTimer = 0;
            break;

        case STATE_SEND_PACKET_INIT:
            gprsInfo.state = STATE_RECEIVE_PACKET_INIT;

            ptr = at_cmd[AT_CMD_AT].str;
            gprs_packet_send(ptr, strlen(ptr) );
            gprsInfo.txTimer = 20;
            break;

        case STATE_SEND_POWER:
            gprsInfo.state = STATE_RECEIVE_POWER;

            gprs_packet_send("AT+CSQ\r", 7 );
            gprsInfo.txTimer = 40;
            break;

        case STATE_SEND_UDP_LENGTH:
            gprsInfo.state = STATE_WAIT_PROMPT;

            gprsInfo.errorCount = 0;
            clear_ram(gprsInfo.cmdBuffer,sizeof(gprsInfo.cmdBuffer) );
            strcpy(gprsInfo.cmdBuffer, at_cmd[AT_CMD_IP_SEND].str);
            
            ptr = gprsInfo.cmdBuffer + strlen(at_cmd[AT_CMD_IP_SEND].str);
            sprintf(ptr, "%u\r", ipInfo.txLength);   /*xhb_debug*/

            gprs_packet_send(gprsInfo.cmdBuffer, strlen(gprsInfo.cmdBuffer) );

            break;

        case STATE_SEND_UDP_PACKET:
            gprsInfo.state = STATE_WAIT_UDP_OK;
            ipInfo.txCount ++;
            gprs_packet_send(ipInfo.txBuffer, ipInfo.txLength );
            
            break;

        case STATE_IDLE:
            if( gprsInfo.outCallNumber[0] )
                gprsInfo.state = STATE_VOICE_CALLING;
            break;


        case STATE_VOICE_CALLING:
            gprsInfo.state = STATE_VOICE_OUT;

            clear_ram(gprsInfo.cmdBuffer,sizeof(gprsInfo.cmdBuffer) );
            strcpy(gprsInfo.cmdBuffer, at_cmd[AT_CMD_DIAL].str);
            
            ptr = gprsInfo.cmdBuffer + strlen(at_cmd[AT_CMD_DIAL].str);
            sprintf(ptr, "%s;\r", gprsInfo.outCallNumber);
            gprs_packet_send(gprsInfo.cmdBuffer, strlen(gprsInfo.cmdBuffer) );

            gprsInfo.outCallNumber[0] = 0;
                
            break;
        
        case STATE_HOLD_OFF:
            gprsInfo.state = STATE_IDLE;

            clear_ram(gprsInfo.cmdBuffer,sizeof(gprsInfo.cmdBuffer) );
            strcpy(gprsInfo.cmdBuffer, at_cmd[AT_CMD_HOLD_OFF].str);
            
            gprs_packet_send(gprsInfo.cmdBuffer, strlen(gprsInfo.cmdBuffer) );
            break;

        case STATE_HOLD_ON:
            gprsInfo.state = STATE_VOICE_IN;

            clear_ram(gprsInfo.cmdBuffer,sizeof(gprsInfo.cmdBuffer) );
            strcpy(gprsInfo.cmdBuffer, at_cmd[AT_CMD_HOLD_ON].str);
            
            gprs_packet_send(gprsInfo.cmdBuffer, strlen(gprsInfo.cmdBuffer) );
            break;


    }

}

char string_contain(char *srcStr, char *destStr)
{
    while(*srcStr)
    {
        if( *srcStr++ != *destStr++ )
            return(-1);
    }

    return(0);

}

void explain_at_return(void)
{
    char *ptrChar;
    unsigned char returnId;
    unsigned int i;

    ptrChar = gprsRcvBuffer;

    do
    {
        returnId = 0;

        for(i=0; *at_ret[i].str||returnId; i++)
        {
            if( string_contain(at_ret[i].str, ptrChar) == 0)
            {
                returnId = at_ret[i].memo;

                if( returnId == AT_RET_CRLF )
                {
                    ptrChar += strlen(at_ret[i].str);
                    break;
                }
                else if( returnId == AT_RET_NJPT )
                {
                    ipInfo.rxState = 1;
                    ipInfo.rxTimer = 0; 
                    ipInfo.rxCount ++;
                    ipInfo.rxLength = gprsInfo.rxBytes;
                    memcpy(ipInfo.rxBuffer, ptrChar, gprsInfo.rxBytes);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
狠狠色2019综合网| 99久久免费精品高清特色大片| 日本欧洲一区二区| 成人午夜视频在线观看| 在线播放亚洲一区| 日韩毛片在线免费观看| 国内精品伊人久久久久av影院| 色综合网站在线| 久久久三级国产网站| 午夜精品一区在线观看| 91在线精品一区二区三区| 欧美r级电影在线观看| 亚州成人在线电影| 日本国产一区二区| 国产精品久久影院| 成人免费视频视频| 欧美国产欧美综合| 国产成人av福利| 精品久久99ma| 美女在线视频一区| 欧美久久久久中文字幕| 亚洲成a天堂v人片| 在线视频国内一区二区| 亚洲天堂成人在线观看| 99麻豆久久久国产精品免费| 中文字幕av资源一区| 成人午夜av电影| 精品福利一区二区三区免费视频| 日韩国产精品久久| 91精品国产综合久久蜜臀 | 99精品久久99久久久久| 久久久不卡网国产精品二区| 精东粉嫩av免费一区二区三区| 91精品国产高清一区二区三区蜜臀 | 日韩国产精品久久久久久亚洲| 欧美亚洲尤物久久| 亚洲国产日韩av| 欧美日韩久久一区| 午夜精品福利视频网站| 91精品国产欧美一区二区成人| 蜜桃视频在线一区| 久久综合网色—综合色88| 欧美日韩国产高清一区二区三区 | 欧美成人一区二区三区片免费 | 欧美一级夜夜爽| 91精品国产91久久久久久最新毛片 | 国产精品久久久久久久久图文区| 欧美v亚洲v综合ⅴ国产v| 久久久久97国产精华液好用吗| 国产欧美在线观看一区| 一区二区三区精品| 国产成人免费网站| 日本sm残虐另类| 狠狠色综合日日| 色综合久久综合网欧美综合网| 国产一区二区按摩在线观看| 日韩欧美视频一区| 国产白丝精品91爽爽久久| 综合亚洲深深色噜噜狠狠网站| 波多野结衣欧美| 亚洲妇女屁股眼交7| 精品国精品自拍自在线| 播五月开心婷婷综合| 亚洲精品国产视频| 欧美一区二区三区公司| 国产精品伊人色| 亚洲激情网站免费观看| 欧美va亚洲va| 色综合天天综合在线视频| 日韩国产欧美在线播放| 久久久www免费人成精品| 色综合色综合色综合色综合色综合| 亚洲aⅴ怡春院| 精品国产一区二区三区忘忧草| 国内精品免费**视频| 亚洲精品视频一区二区| 欧美v日韩v国产v| 在线精品视频一区二区三四| 蜜桃在线一区二区三区| 亚洲天堂2014| 久久亚洲精华国产精华液| 色欧美日韩亚洲| 久久99国产精品久久| 亚洲伦理在线精品| 久久蜜桃av一区精品变态类天堂 | 亚洲一区二区三区四区在线免费观看| 日韩欧美中文字幕精品| 欧美午夜精品一区二区蜜桃| 国产美女久久久久| 日韩av电影一区| 亚洲精品美腿丝袜| 国产精品天天摸av网| 精品久久久久99| 91精品国产综合久久国产大片| 91亚洲国产成人精品一区二三| 国产久卡久卡久卡久卡视频精品| 视频一区欧美日韩| 亚洲一二三四在线| 亚洲欧美日韩人成在线播放| 国产精品区一区二区三区| 日韩精品中文字幕一区| 884aa四虎影成人精品一区| 99精品黄色片免费大全| 北条麻妃一区二区三区| 国产成人精品三级| 国产不卡免费视频| 国产精品一卡二卡在线观看| 美国av一区二区| 日本免费新一区视频| 香蕉加勒比综合久久| 一区二区高清在线| 亚洲综合在线免费观看| 亚洲天堂免费看| 亚洲人成7777| 亚洲激情自拍视频| 一区二区三区欧美| 亚洲午夜一区二区三区| 亚洲午夜激情网站| 午夜精品123| 美美哒免费高清在线观看视频一区二区| 亚洲成人手机在线| 奇米色777欧美一区二区| 麻豆精品视频在线观看| 久久99久久99| 国产成人综合在线观看| 成人一区二区三区在线观看| 成人黄色一级视频| 在线观看一区不卡| 欧美老女人第四色| 日韩精品一区二区在线观看| 久久综合狠狠综合| 国产精品高潮呻吟| 亚洲欧美日韩久久| 日韩av中文字幕一区二区三区 | 亚洲一区在线视频| 青青草国产精品亚洲专区无| 国产一区二区伦理| 波多野结衣视频一区| 欧美性生交片4| 欧美刺激午夜性久久久久久久| 国产亚洲污的网站| 亚洲精选在线视频| 蜜臀91精品一区二区三区| 国产精品18久久久| 精品视频在线免费看| 精品国产污污免费网站入口 | 色一情一乱一乱一91av| 欧美猛男gaygay网站| 久久久激情视频| 亚洲男同1069视频| 国产一区二区三区日韩| 99re在线视频这里只有精品| 欧美一区二区在线免费播放| 国产欧美日韩久久| 天堂va蜜桃一区二区三区| 国产精品88888| 欧美日韩精品久久久| 欧美激情中文不卡| 日韩高清欧美激情| 91丝袜呻吟高潮美腿白嫩在线观看| 欧美高清性hdvideosex| 中文字幕在线一区免费| 麻豆精品一区二区| 欧美中文字幕一二三区视频| 国产午夜三级一区二区三| 亚洲国产欧美在线| jlzzjlzz亚洲日本少妇| 日韩欧美中文一区| 亚洲小说春色综合另类电影| 风间由美一区二区三区在线观看 | 欧美一级国产精品| 亚洲精品午夜久久久| 国产成人免费在线| 日韩精品中午字幕| 石原莉奈一区二区三区在线观看| av电影在线不卡| 国产视频视频一区| 国产一区二区三区精品视频| 欧美精品一卡二卡| 亚洲一区二区视频在线| 91麻豆.com| 国产精品卡一卡二卡三| 国模冰冰炮一区二区| 日韩视频在线你懂得| 日韩va亚洲va欧美va久久| 欧洲色大大久久| 亚洲人成精品久久久久| 大尺度一区二区| 久久久精品蜜桃| 国产高清精品网站| 精品国产精品网麻豆系列| 日韩精品一二三四| 欧美一级片免费看| 日韩av一区二区在线影视| 欧美在线不卡一区| 一区二区三区精品视频在线| 在线观看国产日韩| 亚洲成a人在线观看| 在线播放国产精品二区一二区四区 | 色综合久久88色综合天天|