新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > STM32通過GPRS與服務器建立TCP連接

        STM32通過GPRS與服務器建立TCP連接

        作者: 時間:2016-11-26 來源:網絡 收藏
        u16 USART3_CGREG_Cnt;

        u8 USART3_Task_Cnt;

        本文引用地址:http://www.104case.com/article/201611/321911.htm

        //task_GPRS為GPRS處理任務,每50ms~200ms調用一次

        void task_GPRS()
        {
        switch(USART3_Task_Cnt)
        {
        case 0:
        // SendUartStr("case0",1);
        if(GprsState.bits.Timeout == true)
        {
        GprsState.Flag =0x00000000;
        {
        GPIO_InitTypeDef GPIO_InitStructure;

        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_Init(GPIOC, &GPIO_InitStructure);
        //GPIO_SetBits(GPIOC, GPIO_Pin_9);
        GPIO_ResetBits(GPIOC, GPIO_Pin_9);
        SetGprsTime(3000);
        USART3_Task_Cnt = 1;
        }
        }
        break;
        case 1:
        // SendUartStr("case1",1);
        if(GprsState.bits.Timeout == true)
        {
        GPIO_InitTypeDef GPIO_InitStructure;

        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_Init(GPIOC, &GPIO_InitStructure);
        GPIO_SetBits(GPIOC, GPIO_Pin_9);
        //GPIO_ResetBits(GPIOC, GPIO_Pin_9);
        SetGprsTime(1000);
        USART3_Task_Cnt = 2;
        }
        break;
        case 2:
        // SendUartStr("case2",1);
        if(GprsState.bits.Timeout == true)
        {
        GPIO_InitTypeDef GPIO_InitStructure;

        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_Init(GPIOC, &GPIO_InitStructure);
        GPIO_SetBits(GPIOC, GPIO_Pin_8);
        //GPIO_ResetBits(GPIOC, GPIO_Pin_8);
        SetGprsTime(50);
        USART3_Task_Cnt = 3;
        }
        break;
        case 3:
        // SendUartStr("case3",1);
        if(GprsState.bits.Timeout == true)
        {
        GPIO_InitTypeDef GPIO_InitStructure;

        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_Init(GPIOC, &GPIO_InitStructure);
        //GPIO_SetBits(GPIOC, GPIO_Pin_8);
        GPIO_ResetBits(GPIOC, GPIO_Pin_8);
        SetGprsTime(3000);
        USART3_Task_Cnt = 4;
        }
        break;
        case 4:
        if(GprsState.bits.Timeout == true)
        {
        // SendUartStr("AT+IPR=9600",3);
        // Delay(500);
        SendUartStr("AT+CREG=1",3);
        USART3_Task_Cnt = 5;
        SetGprsTime(4000);
        }
        break;
        case 5:
        if(GprsState.bits.Timeout == true)
        {
        SendUartStr("AT+CGREG=1",3);
        // USART3_Task_Cnt = 6;
        USART3_Task_Cnt = 7;
        USART3_CGREG_Cnt = 4000;
        SetGprsTime(1000);
        }
        break;
        case 6:
        // if(GprsState.bits.Timeout == true)
        // {
        // SendUartStr("AT+CREG?",3);
        // SendUartStr("AT+CGREG=1",3);
        // SendUartStr("AT+CGREG?",3);
        // if(GprsState.bits.AT_CGREG_OK == true)
        // {
        // USART3_Task_Cnt = 7;
        // SetGprsTime(5000);
        // }
        // else
        // {
        // USART3_CGREG_Cnt--;
        // if(USART3_CGREG_Cnt == 0)
        // {
        // USART3_Task_Cnt = 0;
        // }
        // }
        // }
        USART3_Task_Cnt = 7;
        break;
        case 7:
        if(GprsState.bits.Timeout == true)
        {
        SendUartStr("AT^SICS=0,conType,GPRS0",3);
        USART3_Task_Cnt = 8;
        SetGprsTime(100);
        }
        break;
        case 8:
        if(GprsState.bits.Timeout == true)
        {
        // SendUartStr("AT^SICS=0,user,gprs",3);
        USART3_Task_Cnt = 9;
        SetGprsTime(100);
        }
        break;
        case 9:
        if(GprsState.bits.Timeout == true)
        {
        // SendUartStr("AT^SICS=0,passwd,gprs",3);
        USART3_Task_Cnt = 10;
        SetGprsTime(100);
        }
        break;
        case 10:
        if(GprsState.bits.Timeout == true)
        {
        SendUartStr("AT^SICS=0,apn,"cmnet"",3);
        USART3_Task_Cnt = 11;
        SetGprsTime(100);
        }
        break;
        case 11:
        if(GprsState.bits.Timeout == true)
        {
        SendUartStr("AT^SISS=1,ConID,0",3);
        USART3_Task_Cnt = 12;
        SetGprsTime(100);
        }
        break;
        case 12:
        if(GprsState.bits.Timeout == true)
        {
        SendUartStr("AT^SISS=1,srvType,socket",3);
        USART3_Task_Cnt = 13;
        SetGprsTime(200);
        }
        break;
        case 13:
        if(GprsState.bits.Timeout == true)
        {
        SendUartStr("AT^SISS=1,address,"socktcp://118.244.164.188:7777"",3);
        USART3_Task_Cnt = 14;
        SetGprsTime(600);
        }
        break;
        case 14:
        if(GprsState.bits.Timeout == true)
        {
        SendUartStr("AT^SISO=1",3);
        USART3_Task_Cnt = 15;
        SetGprsTime(5000);
        GprsState.bits.Connect_Send_OK = false;
        }
        break;
        case 15:
        if(GprsState.bits.Connect_Send_OK == true)
        {
        GprsState.bits.Connect_Send_OK = false;
        USART3_Task_Cnt = 16;
        SendUartStr("Connect_OK!",1);
        }
        if(GprsState.bits.Timeout == true)
        {
        SendUartStr("AT^SISC=1",3);
        // USART3_Task_Cnt = 0;
        USART3_Task_Cnt = 7;
        SetGprsTime(3000);
        }
        break;
        case 16:
        // SendUartStr("AT^SISW=1,12",3);
        if(GprsState.bits.Timeout == true)
        {
        if(GPRSDataBuf.WaitSend == !0)
        {
        SendUartStr("AT^SISW=1,",3);
        SendUartByte((GPRSDataBuf.length)/10+0x30,3);
        SendUartByte((GPRSDataBuf.length)+0x30,3);
        SendUartStr("",3);
        USART3_Task_Cnt = 17;
        SetGprsTime(50);
        }
        }
        break;
        case 17:
        if(GprsState.bits.Timeout == true)
        {
        if(GPRSDataBuf.WaitSend == !0)
        {
        SendUartStr((char*)GPRSDataBuf.buf,3);
        SendUartStr("",3);
        USART3_Task_Cnt = 18;
        SetGprsTime(5000);
        }
        }
        break;
        case 18:
        if(GprsState.bits.Timeout == true)
        {
        // USART3_Task_Cnt = 0;
        SendUartStr("AT^SISC=1",3);
        USART3_Task_Cnt = 7;
        SetGprsTime(1000);
        }
        if(GprsState.bits.Connect_Send_OK == true)
        {
        GprsState.bits.Connect_Send_OK = false;
        GPRSDataBuf.SendOK = !0;
        GPRSDataBuf.WaitSend = 0;
        USART3_Task_Cnt = 16;
        SetGprsTime(1000);//發送間隔時間
        }
        break;
        case 19:

        break;

        default:
        break;
        }
        }



        評論


        技術專區

        關閉
        主站蜘蛛池模板: 璧山县| 陇南市| 宝兴县| 文水县| 兰坪| 峨山| 库伦旗| 小金县| 成武县| 嘉峪关市| 郧西县| 高青县| 肇庆市| 武宣县| 博白县| 屯昌县| 余干县| 昌乐县| 浙江省| 乌兰浩特市| 明星| 凤翔县| 都兰县| 巫溪县| 建昌县| 银川市| 连江县| 东宁县| 峨眉山市| 双柏县| 凉城县| 嘉祥县| 思南县| 辽阳县| 五大连池市| 吴川市| 秀山| 象山县| 漳州市| 萍乡市| 泸州市|