chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

ESP8266的UDP廣播詳解

電子設(shè)計 ? 來源:電子設(shè)計 ? 作者:電子設(shè)計 ? 2020-12-26 02:29 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

先來看看ESP8266的UDP通訊,主要看它的廣播模式。說這個,需要先了解UDP通訊是什么?

說到UDP,伴隨而來的還有另一個東西,就是TCP。這里不說定義,只說應(yīng)用。簡單來說,這兩者都是網(wǎng)絡(luò)通信中常用的通信協(xié)議。

最主要的區(qū)別,TCP通訊比較穩(wěn)定,它和接收端要進行三次握手,接收端有沒有收到數(shù)據(jù),都能知道。優(yōu)點是安全,缺點是和UDP相比,速度慢。UDP在發(fā)送時,不管有沒有接收方,也不管接收方有沒有收到,只要把數(shù)據(jù)發(fā)出去,就完了。所以,相比TCP,安全性差一些,速度要快一些。

但并不是說安全性差,就不能用,像視頻、音頻等一些無關(guān)緊要的數(shù)據(jù),都可以用UDP來進行傳輸。

UDP包的最大長度是多少?

65535個字節(jié)。但是除掉IP頭(20字節(jié))和UDP頭(8字節(jié))之后,剩余65507個字節(jié)。

UDP如何廣播?

IP 255.255.255.255 為廣播地址,往這個地址發(fā)數(shù)據(jù),局域網(wǎng)中的所有機器都可以收到。

對UDP有一個基本了解之后,咱們來進行ESP8266的UDP廣播。本節(jié)程序是在上一節(jié)程序基礎(chǔ)上修改的,所以如果你上一節(jié)看懂了,這一節(jié)是很簡單的。使用步驟多一點,但是并不麻煩,分為6步。

1.包含頭文件

#include "espconn.h"

#include "mem.h"

主要是"espconn.h",涉及到UDP通訊所需的各種數(shù)據(jù)結(jié)構(gòu)。

2.設(shè)置工作模式及相關(guān)參數(shù)

wifi_set_opmode(0x03); // station+ soft-ap模式

struct softap_config config; //定義AP參數(shù)結(jié)構(gòu)體,

wifi_softap_get_config(&config); //獲取當(dāng)前AP模式的參數(shù)

os_memcpy(config.ssid,"ESP8266",strlen("ESP8266")); //修改AP名稱

os_memcpy(config.password,"123456789",strlen("123456789")); //修改AP密碼

config.ssid_len=strlen("ESP8266"); //修改 AP名稱的長度

wifi_softap_set_config(&config); //使修改后的參數(shù)生效

此時,如果把程序燒錄進去,可以看到當(dāng)前環(huán)境下有一個ESP8266的wifi,輸入密碼“123456789”可以連接。

3.掃描并連接當(dāng)前環(huán)境下的wifi

跟上一節(jié)一樣,掃描當(dāng)前環(huán)境下的wifi,并進行連接。我這里連接我家里的“shatanliu”,你要改成你自己的。

4.連接成功后,設(shè)置UDP相關(guān)參數(shù)

跟上一節(jié)相比,這里要對Wifi_conned();進行修改。

首先頭文件中定義一個結(jié)構(gòu)體形式的ESPCONN描述符:

struct espconn user_udp_espconn;

關(guān)于espconn,SDK中給出的定義如下:

/** A espconn descriptor */

struct espconn {

/** type of the espconn (TCP, UDP) */

enum espconn_type type;

/** current state of the espconn */

enum espconn_state state;

union {

esp_tcp *tcp;

esp_udp *udp;

} proto;

/** A callback function that is informed about events for this espconn */

espconn_recv_callback recv_callback;

espconn_sent_callback sent_callback;

uint8 link_cnt;

void *reverse;

};

可以看到,無論是TCP通訊還是UDP通訊,都要用到這個結(jié)構(gòu)體,同時,要在結(jié)構(gòu)體內(nèi)設(shè)置相應(yīng)的發(fā)送、接收回調(diào)函數(shù)。

接下來就是一個UDP參數(shù)的設(shè)置過程:

wifi_set_broadcast_if(STATIONAP_MODE);

設(shè)置UDP廣播包的發(fā)送接口,默認soft-ap。這里選擇的是station和soft-ap。

參數(shù):1、station 2、soft-ap 3、station和soft-ap

user_udp_espconn.type=ESPCONN_UDP; //設(shè)置為UDP通信

//開辟UDP參數(shù)需要的空間

user_udp_espconn.proto.udp=(esp_udp *)os_zalloc(sizeof(esp_udp));

//設(shè)置本地端口和遠程端口

user_udp_espconn.proto.udp->local_port=2525;

user_udp_espconn.proto.udp->remote_port=1024;

//設(shè)置遠程IP

const char udp_remote_ip[4]={255,255,255,255};

os_memcpy(user_udp_espconn.proto.udp->remote_ip,udp_remote_ip,4);

//設(shè)置發(fā)送完成和接收完成的回調(diào)函數(shù)

espconn_regist_recvcb(&user_udp_espconn,user_udp_recv_cb);

espconn_regist_sentcb(&user_udp_espconn,user_udp_sent_cb);

//使UDP參數(shù)生效

espconn_create(&user_udp_espconn);

//UDP發(fā)送函數(shù)

user_udp_send();

5.定義發(fā)送完成和接收完成的回調(diào)函數(shù)

void ICACHE_FLASH_ATTR user_udp_sent_cb(void *arg)

{

os_printf("SEND SUCCESS!");

os_timer_disarm(&test_timer);

os_timer_setfn(&test_timer,(os_timer_func_t *)user_udp_send,0);

os_timer_arm(&test_timer,1000,0);

}

串口打印:SEND SUCCESS! 然后延時1秒,調(diào)用UDP發(fā)送函數(shù)。

為什么串口不發(fā)送中文?SDK3.0的版本,串口對中文的支持好像不太好,有興趣的自己試一下。

void ICACHE_FLASH_ATTR user_udp_recv_cb(void *arg,

char *pdata,

unsigned short len)

{

os_printf("udp have received data:%s",pdata);

}

把收到的數(shù)據(jù),串口打印出來。

6.定義UDP發(fā)送函數(shù)

void ICACHE_FLASH_ATTR user_udp_send(void)

{

char hwaddr[6];

char DeviceBuffer[40]={0};

wifi_get_macaddr(STATION_IF,hwaddr);

os_sprintf(DeviceBuffer,"DEVICE MAC ADDRESS IS:"MACSTR"!!

ESP8266 IOT!",MAC2STR(hwaddr));

espconn_send(&user_udp_espconn,DeviceBuffer,os_strlen(DeviceBuffer));

}

通過wifi_get_macaddr函數(shù)獲取station模式下的MAC地址,并通過espconn_sent函數(shù)打印出來。

函數(shù)定義

sint8 espconn_send(

struct espconn *espconn,

uint8 *psent,

uint16 length

)

參數(shù):

struct espconn *espconn : 對應(yīng)網(wǎng)絡(luò)傳輸?shù)慕Y(jié)構(gòu)體

uint8 *psent : 發(fā)送的數(shù)據(jù)

uint16 length : 數(shù)據(jù)長度

程序修改完成,保存、清理、編譯、下載一條龍,然后重新上電。這里,需要借助串口助手和網(wǎng)絡(luò)調(diào)試助手兩個工具來查看效果。效果如下所示:

打開網(wǎng)絡(luò)調(diào)試助手:

如圖,依次設(shè)置相關(guān)的參數(shù)。

怎么知道顯示的MAC地址對不對?打開路由器的管理界面,看當(dāng)前連接設(shè)備的MAC地址:

如此,說明發(fā)送端(路由下的8266)和接收端(路由下的PC)成功進行通信。

如果這時候網(wǎng)絡(luò)調(diào)試助手發(fā)送數(shù)據(jù):hello。

串口助手會收到如下信息:

至此,UDP廣播說完了。你們可以試一下讓當(dāng)前電腦連接8266,看網(wǎng)絡(luò)調(diào)試助手里的參數(shù)如何修改。

審核編輯:符乾江
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 通信協(xié)議
    +關(guān)注

    關(guān)注

    28

    文章

    1064

    瀏覽量

    41670
  • TCP
    TCP
    +關(guān)注

    關(guān)注

    8

    文章

    1412

    瀏覽量

    82582
  • UDP
    UDP
    +關(guān)注

    關(guān)注

    0

    文章

    331

    瀏覽量

    35053
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    esp8266 udp server 端口監(jiān)聽錯誤的原因?

    1、使用esp8266 at組件+sal socket實現(xiàn)使用udpserver_sample.c demo代碼 udp server,通信失敗 2、跟蹤代碼發(fā)現(xiàn) packegs 里面
    發(fā)表于 09-23 07:03

    請問一下我想用ESP8685直接替換ESP8266而不用寫程序,可以讓ESP8685直接通過之前ESP8266的外掛的flash運行程序嗎

    請問一下我想用ESP8685直接替換ESP8266而不用寫程序,可以讓ESP8685直接通過之前ESP8266的外掛的flash運行程序嗎
    發(fā)表于 09-17 12:06

    ESP8266】進入透傳模式后,數(shù)據(jù)間隔怎么調(diào)整,

    01.TCP客戶端用ESP8266透傳模式發(fā)送數(shù)據(jù)是10ms發(fā)送一次,(連續(xù)發(fā)送) 02.TCP服務(wù)器接收到的數(shù)據(jù)是200ms左右接收一次,數(shù)據(jù)未丟失,但是更新不及時; 03.通過TCP調(diào)試助手已
    發(fā)表于 09-15 10:16

    rtt連接ESP8266報錯(AT+CIPDNS_CUR?),固件版本為2.3.0.0,是什么原因?qū)е碌模?/a>

    不知道我這個固件版本挺新的,為什么不支持報錯(AT+CIPDNS_CUR?) 大佬們那個固件版本支持AT+CIPDNS_CUR?的,可以給我一個支持(AT+CIPDNS_CUR?)的固件包嗎.但是固件版本是2.3.0.0的嗎,我使用的是esp8266_12F
    發(fā)表于 09-12 07:21

    【RA-Eco-RA6M4開發(fā)板評測】——4.使用ESP8266獲取任意城市的天意預(yù)報

    手頭上有一個ESP8266,閑置了很久,突然想起來可以和RA6M4開發(fā)板連接起來,使用AT指令來獲取網(wǎng)絡(luò)天氣預(yù)報,于是就把它們連接起來。就有了這個帖子。 開始創(chuàng)建工程,打開 RA smart 配置
    發(fā)表于 07-23 19:50

    STM32+esp8266連接機智云,上傳溫濕度數(shù)據(jù)并控制繼電器開關(guān)(平臺配置、代碼生成、代碼移植)

    本教程將詳細介紹如何將STM32微控制器與ESP8266Wi-Fi模塊連接到機智云平臺,實現(xiàn)溫濕度數(shù)據(jù)的上傳與繼電器的遠程控制。通過此過程,您將學(xué)會如何配置機智云平臺,燒錄ESP8266固件,移植
    的頭像 發(fā)表于 07-15 18:54 ?535次閱讀
    STM32+<b class='flag-5'>esp8266</b>連接機智云,上傳溫濕度數(shù)據(jù)并控制繼電器開關(guān)(平臺配置、代碼生成、代碼移植)

    單片機實例項目:ESP8266串口WIFI

    單片機實例項目:ESP8266串口WIFI,推薦下載!
    發(fā)表于 06-03 21:01

    基于STM32 HAL庫與標準庫的esp8266接入機智云方案(二)

    在《基于STM32HAL庫與標準庫的esp8266接入機智云方案(一)》中,我們詳細介紹了硬件連接和機智云客戶端的創(chuàng)建。本篇將重點講解如何下載代碼、分析下載的代碼,并直接使用這些代碼連接機智云。同時
    的頭像 發(fā)表于 05-28 18:02 ?926次閱讀
    基于STM32 HAL庫與標準庫的<b class='flag-5'>esp8266</b>接入機智云方案(二)

    ESP8266燒錄與機智云一鍵配網(wǎng)教程

    ESP8266模塊因其低成本和高性能,廣泛應(yīng)用于智能家居和工業(yè)自動化等領(lǐng)域。機智云平臺提供了一鍵配網(wǎng)功能,簡化了設(shè)備的聯(lián)網(wǎng)過程。本教程將詳細介紹如何使用ESP8266進行燒錄,并通過機智云實現(xiàn)一鍵配
    的頭像 發(fā)表于 05-24 11:04 ?1167次閱讀
    <b class='flag-5'>ESP8266</b>燒錄與機智云一鍵配網(wǎng)教程

    【RA-Eco-RA4M2開發(fā)板評測】RA4M2 + ESP8266獲取城市天氣預(yù)報(一)

    很高興收到瑞薩電子的RA4M2開發(fā)板,有幸成為了幸運觀眾,本期就來使用瑞薩的RA4M2開發(fā)板通過串口連接WIFI模塊ESP8266,獲取天氣預(yù)報數(shù)據(jù)信息。并實時顯示出來。它可以獲取國內(nèi)任何城市
    發(fā)表于 05-02 14:28

    零知開源——ESP8266+MPU6050 實現(xiàn)運動姿態(tài)檢測

    零知ESP8266的I2C通信 ? ? ? ?在運動姿態(tài)檢測、機器人平衡控制、VR頭戴設(shè)備等應(yīng)用中,MPU6050(三軸加速度計+三軸陀螺儀)是一個常見的姿態(tài)傳感器。而ESP8266作為一款低功耗
    的頭像 發(fā)表于 02-20 17:54 ?2550次閱讀
    零知開源——<b class='flag-5'>ESP8266</b>+MPU6050 實現(xiàn)運動姿態(tài)檢測

    STM32和ESP32應(yīng)該學(xué)哪個

    等等,市場占有率也很高。 ESP32相對年輕了不少,滿打滿算也不到 10 歲,他的前身,還得從 ESP8266 說起,都屬于樂鑫科技的產(chǎn)品。 如果你用單片機做過一些物聯(lián)網(wǎng)產(chǎn)品,那多多少少應(yīng)該聽過 ESP8266,這是一個非常常見
    的頭像 發(fā)表于 02-18 09:52 ?936次閱讀

    ESP8266筆記-07.ESP8266ESP TOUCH

    可以從Smart Config的官方文檔中可以看到ESP8266支持4種SmartConfig模式,其實是3種,有一種是混合的。 我們先采用第一種協(xié)議,也就是ESPTOUCH協(xié)議進行連接,具體的代碼
    發(fā)表于 12-30 10:37

    ESP8266筆記-05.ESP8266 WIFI的使用

    ESP8266是怎么火起來的?毫無疑問就是他把WIFI模塊的價格成功的打了下來,在我第一次看到ESP8266僅僅10元成本的開發(fā)板竟然可以連接WIFI時,知道對我幼小的心靈造成多大的震撼嗎?一度帶
    發(fā)表于 10-31 18:33

    esp8266加入到c51單片機單通道程序怎么寫

    要將ESP8266模塊加入到C51單片機的單通道程序中,您需要了解如何通過串行通信(UART)與ESP8266進行通信。以下是如何實現(xiàn)這一點的步驟和示例代碼。 步驟 1:硬件連接 首先,您需要
    的頭像 發(fā)表于 10-18 11:32 ?1976次閱讀