16-ESP8266 SDK開發基礎入門篇--TCP 服務器 非RTOS運行版,串口透傳(串口回調函數處理版)


https://www.cnblogs.com/yangfengwu/p/11105466.html

 

其實官方給的RTOS的版本就是在原先非RTOS版本上增加的

https://www.cnblogs.com/yangfengwu/p/5205570.html    后面的TCP,UDP基本的配置也就是像AT這樣,只不過咱是用SDK開發

配置一下WIFI的工作模式  無線名稱

 

 

 

 

 

 

 

    wifi_set_opmode(STATIONAP_MODE);//配置WiFi的模式STATION + AP AP--連接WIFI自身的無線實現通信  STATION--wifi連接路由器,手機或者電腦也連接路由器,實現通信
    soft_ap_Config.ssid_len = strlen(SSID);//熱點名稱長度,與你實際的名稱長度一致就好

    memcpy(soft_ap_Config.ssid,SSID,soft_ap_Config.ssid_len);//實際熱點名稱設置,可以根據你的需要來
    memcpy(soft_ap_Config.password,PWD,strlen(PWD));//熱點密碼設置
    soft_ap_Config.authmode = AUTH_WPA2_PSK;//加密模式
    soft_ap_Config.channel = 1;//信道,共支持1~13個信道
    soft_ap_Config.max_connection = 4;//最大連接數量,最大支持四個,默認四個

    wifi_softap_set_config_current(&soft_ap_Config);//設置 Wi-Fi SoftAP 接口配置,不保存到 Flash
    //    wifi_softap_set_config(&soft_ap_Config);//設置 Wi-Fi SoftAP 接口配置,保存到 Flash

 

下載進去

       

 

 

接着做TCP 服務器

其實就是參考這個文檔

 

 

 

 

 

其實說一下...官方其實給例子了...就是那個不帶SDK的1.5版本的

 

 

 

 

 

 如果不明白為什么是http但是用的TCP  https://www.cnblogs.com/yangfengwu/category/1383497.html    看頭幾節

 

所以我就不班門弄斧了.......直接拷貝,然后寫上注釋

 

 

 

 

 

 

 

 

//接收到數據
void TcpServerRecv(void *arg, char *pusrdata, unsigned short length)
{
    while(length--)
    {
        USART_SendData(UART0, *(pusrdata++));//接收的數據發給串口
    }
}

//斷開
void TcpServerDisCon(void *arg)
{
    struct espconn *pesp_conn = arg;

    os_printf("TCP Client %d.%d.%d.%d:%d disconnect\n", pesp_conn->proto.tcp->remote_ip[0],
                pesp_conn->proto.tcp->remote_ip[1],pesp_conn->proto.tcp->remote_ip[2],
                pesp_conn->proto.tcp->remote_ip[3],pesp_conn->proto.tcp->remote_port);
}

//程序啟動了監聽
void TcpServerListen(void *arg)
{
    struct espconn *pesp_conn = arg;//接收傳過來的 espconn 信息

    espconn_regist_recvcb(pesp_conn, TcpServerRecv);//設置接收回調
    espconn_regist_disconcb(pesp_conn, TcpServerDisCon);//設置斷開連接回調
}

 

 

 完成了上面就是WIFI監聽8888端口 ,客戶端連接上以后發送的數據直接轉發到串口

模塊默認是192.168.4.1

測試

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

好現在咱再進一步  做成透傳的   再讓WIFI串口接收的數據發給網絡

https://blog.csdn.net/u010333084/article/details/51336886

 

上一節咱用任務處理的串口數據,這次咱用回調實現,,這樣處理起來快

 

 

 

 

 

 

 

 

 

 

 

 

測試

 

 注意哈,這樣做實際上就是那個函數在中斷函數里面運行了....切記函數里面別加延時

好現在把串口接收的數據轉發給網絡

 

因為發送需要

 

 所以咱定義一個全局的這個變量

思路是這個變量在監聽到連接,斷開和網絡接收到數據里面賦值

如果只放到網絡接收到數據里面賦值..那么如果客戶端連接了,它不先給咱發數據,咱就不能發給他,因為變量沒有賦值

不過現在這樣有個問題是  最后連接的或者最后給我發的數據的TCP客戶端,我下次的數據會發給它

大家可以再做個數組哈,,把這個全部保存下來,,自己擴展下哈

提示哈,,做四個數組就可以,,循環判斷如果哪個在連接狀態就發送

 

 

 

測試

 

 

 

 

 

 

 

 

 如果再把這里的發送改為直接用數組復制給串口發送緩沖區(只調用一句話),就完美了

 

 自己開動大腦想辦法吧

 

 

 

https://www.cnblogs.com/yangfengwu/p/11112015.html

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM