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

標題: STM32驅(qū)動BC26程序開發(fā)—UDP透傳 [打印本頁]

作者: bgh    時間: 2019-6-24 09:57
標題: STM32驅(qū)動BC26程序開發(fā)—UDP透傳
BC26模塊開發(fā),實現(xiàn)UDP透傳方式



STM32BC26源碼如下:
#include "BC26.h"
#include "main.h"
#include "string.h"
char *strx,*extstrx;
char atstr[BUFLEN];
int err;  
char socketnum='0'
BC26 BC26_Status;

#define SERVERIP "47.104.238.90"
#define SERVERPORT 1001

void Clear_Buffer(void)
{
    printf(buf_uart2.buf);
    Delay(300);
    buf_uart2.index=0;
    memset(buf_uart2.buf,0,BUFLEN);
}

int BC26_Init(void)
{
    int errcount = 0;
    err = 0;  
    printf("start init BC26\r\n");
    Uart2_SendStr("AT\r\n");
    Delay(300);
    printf(buf_uart2.buf);   
    printf("get back BC26\r\n");
    strx=strstr((const char*)buf_uart2.buf,(const char*)"OK")
    Clear_Buffer();        
    while(strx==NULL)
    {
        printf("\r\nμ¥Ƭ»úÕyÔúᬽóμ½Ä£¿é...\r\n");
        Clear_Buffer();        
        Uart2_SendStr("AT\r\n");
        Delay(300);
        strx=strstr((const char*)buf_uart2.buf,(const char*)"OK");
    }

    Uart2_SendStr("AT+CIMI\r\n")
    Delay(300);
    strx=strstr((const char*)buf_uart2.buf,(const char*)"ERROR")
    if(strx==NULL)
    {
        printf("ÎòμÄ¿¨oÅêÇ : %s \r\n",&buf_uart2.buf[8]);
        Clear_Buffer();        
        Delay(300);
    }
    else
    {
        err = 1;
        printf("¿¨′íÎó : %s \r\n",buf_uart2.buf);
        Clear_Buffer();
        Delay(300);
    }

    Uart2_SendStr("AT+CGATT=1\r\n")
    Delay(300);
    strx=strstr((const char*)buf_uart2.buf,(const char*)"OK")
    Clear_Buffer();        
    if(strx)
    {
        Clear_Buffer();        
        printf("init PDP OK\r\n");
        Delay(300);
    }
    Uart2_SendStr("AT+CGATT?\r\n")
    Delay(300);
    strx=strstr((const char*)buf_uart2.buf,(const char*)"+CGATT: 1")
    Clear_Buffer();        
    errcount = 0;
    while(strx==NULL)
    {
        errcount++;
        Clear_Buffer();        
        Uart2_SendStr("AT+CGATT?\r\n")
        Delay(300);
        strx=strstr((const char*)buf_uart2.buf,(const char*)"+CGATT: 1")
        if(errcount>100)   
        {
            err=1;
            errcount = 0;
            break;
        }
    }


    Uart2_SendStr("AT+QBAND?\r\n")
    Delay(300);
    strx=strstr((const char*)buf_uart2.buf,(const char*)"OK")
    if(strx)
    {
        printf("========BAND========= \r\n %s \r\n",buf_uart2.buf);
        Clear_Buffer();
        Delay(300);
    }

    Uart2_SendStr("AT+CSQ\r\n")
    Delay(300);
    strx=strstr((const char*)buf_uart2.buf,(const char*)"+CSQ")
    if(strx)
    {
        printf("DÅoÅÖêá¿:%s\r\n",buf_uart2.buf);
        Clear_Buffer();
        Delay(300);
    }
    Uart2_SendStr("AT+CEREG?\r\n");
    Delay(300);
    strx=strstr((const char*)buf_uart2.buf,(const char*)"+CEREG: 0,1")
    extstrx=strstr((const char*)buf_uart2.buf,(const char*)"+CEREG: 1,1")
    Clear_Buffer();        
    errcount = 0;
    while(strx==NULL&&extstrx==NULL
    {
        errcount++;
        Clear_Buffer();
        Uart2_SendStr("AT+CEREG?\r\n")
        Delay(300);
        strx=strstr((const char*)buf_uart2.buf,(const char*)"+CEREG: 0,1")
        extstrx=strstr((const char*)buf_uart2.buf,(const char*)"+CEREG: 1,1")
        if(errcount>100)     //·àÖ1ËàÑ-»·
        {
            err=1;
            errcount = 0;
            break;
        }
    }
    return err;
}

//激活場景
void BC26_PDPACT(void
{
    int errcount = 0;
    Uart2_SendStr("AT+CGPADDR=1\r\n")
    Delay(300);
    Clear_Buffer();
    Uart2_SendStr("AT+CGATT?\r\n")
    Delay(300);
    strx=strstr((const char*)buf_uart2.buf,(const char*)"+CGATT: 1")
    Clear_Buffer();        
    while(strx==NULL)
    {
        errcount++;
        Clear_Buffer();
        Uart2_SendStr("AT+CGATT?\r\n")
        Delay(300);
        strx=strstr((const char*)buf_uart2.buf,(const char*)"+CGATT: 1")
        if(errcount>100)   
        {
            errcount = 0;
            break;
        }
    }
    Uart2_SendStr("AT+QSOCL=0\r\n")
    Delay(300);
    Clear_Buffer();        
    printf("\r\njust close old socket\r\n");
}

//UDP連接
void BC26_ConUDP(void)
{
    int errcount = 0;
    Uart2_SendStr("AT+QSOC=1,2,1\r\n")
    Delay(300);
    strx=strstr((const char*)buf_uart2.buf,(const char*)"QSOC")
    strx=strstr((const char*)strx+1,(const char*)"QSOC");
    if(strx)
    {
      socketnum=strx[5];  

    }
    Clear_Buffer();
    printf("socket number = %c\r\n",socketnum);
    memset(atstr,0,BUFLEN);
    sprintf(atstr,"AT+QSOCON=%c,%d,\"%s\"\r\n",socketnum,SERVERPORT,SERVERIP);
    Uart2_SendStr(atstr)
    Delay(300);
    strx=strstr((const char*)buf_uart2.buf,(const char*)"OK");//·μ»ØOK
    errcount = 0;
    while(strx==NULL)
    {
        errcount++;
        strx=strstr((const char*)buf_uart2.buf,(const char*)"OK")
        if(errcount>100)  
        {
            errcount = 0;
            break;
        }
    }
    Clear_Buffer();        
}

//發(fā)送數(shù)據(jù)
void BC26_Senddata(uint8_t *len,uint8_t *data)
{
    int errcount=0;
    memset(atstr,0,BUFLEN);
    sprintf(atstr,"AT+QSOSEND=%c,%s,%s\r\n",socketnum,len,data);
    Uart2_SendStr(atstr)
    Delay(300);
    strx=strstr((const char*)buf_uart2.buf,(const char*)"OK")
    while(strx==NULL)
    {
        errcount++;
        strx=strstr((const char*)buf_uart2.buf,(const char*)"OK")
        if(errcount>100)   
        {
            errcount = 0;
            break;
        }
    }
                strx=strstr((const char*)buf_uart2.buf,(const char*)"ERROR");
                if(strx)
                {
                                GPIO_SetBits(GPIOC,GPIO_Pin_7);                //
                                Delay(500);
                                GPIO_ResetBits(GPIOC,GPIO_Pin_7);
                                Delay(300);
                                NVIC_SystemReset();        //
                }
    Clear_Buffer();        

}

/*
+NSONMI:0,4
AT+NSORF=0,4
0,47.104.238.90,1001,4,31323334,0

OK*/
//接收數(shù)據(jù)
void BC26_RECData(void)
{
    strx=strstr((const char*)buf_uart2.buf,(const char*)"+QSONMI")
    if(strx)
    {
        Delay(300)
        Clear_Buffer();

    }
    memset(atstr,0,BUFLEN);
    sprintf(atstr,"AT+QSORF=%c,%d\r\n",socketnum,100);
    Uart2_SendStr(atstr)
    Delay(300);
    Clear_Buffer();
}

源碼資料下載
STM32L1xx_UDP透傳.7z (1.1 MB, 下載次數(shù): 100)



作者: SHIROYAN    時間: 2019-6-27 09:25
這兩天項目正好需要用到,感謝分享~~~幫大忙啦
作者: fzu2019    時間: 2019-10-4 14:00
謝謝大佬
作者: 雪山鳳凰    時間: 2021-9-26 14:55
剛好在找相關資料,先下來看看,謝謝了




歡迎光臨 (http://m.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 中文字幕1区 | 天天综合影院 | 伊人在线 | 神马福利视频 | 成年视频在线观看 | 国产精品久久久久久中文字 | 激情啪啪网| 天天爽天天爽 | 欧美三级韩国三级日本三斤在线观看 | 国产精品久久久久久久久久久久午夜片 | 欧美偷拍视频 | 日韩中文一区 | 黄色一级视频免费看 | 不卡av网站 | 国产第五页 | www4h | 亚洲永久精品视频 | 亚洲高清在线视频 | 久久久久久国产精品 | 国产精品久久久久久久久久久久久 | 99re这里只有精品6 | 簧片在线免费观看 | 午夜视频一区二区 | 在线国产91 | 久久久久久久免费视频 | 青青草91 | 午夜免费剧场 | 亚洲欧美在线观看 | 亚洲欧美日韩成人 | 日韩免费一区二区 | 国产女人高潮毛片 | 日韩成人免费 | 五月天激情综合网 | 国产成人精品毛片 | 91亚色视频 | 丁香激情五月 | 激情福利视频 | 91久久国产综合久久91精品网站 | 中文字幕欧美在线 | 国产一区二区福利 | 亚洲国产精品久久久久久久 |