欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

專注電子技術學習與研究
當前位置:單片機教程網 >> STM32 >> 瀏覽文章

Rainbow網絡通信:通過UDP發送數據

作者:白櫟旸   來源:本站原創   點擊數:  更新時間:2014年04月30日   【字體:

    Rainbow包含一個END28J60的網絡模塊,可以非常方便和網絡設備進行通信。開發包實現了一個TCP/IP協議棧,并進行了c++封裝,無論是UDP、TCP還是WebServer的編程,都非常簡單,這使得開發人員可以不用關心網絡實現的細節,而是關注功能的實現。

 
    要進行網絡通信,首先需要初始化網絡:指定MAC地址和ip,可以采用靜態設定或者DHCP的方式,兩種方式都非常簡單,以靜態設定為例,我們在進行網絡通信之前,調用Ethernet.begin(mac, ip)即可,其中mac是需要設定的mac地址,ip是網絡模塊的ip地址,參考定義為:
    byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
    IPAddress ip(192, 168, 1, 15);
 
    在Rainbow中進行UDP通信非常簡單,只需要以下幾個步驟即可:
    1、定義EthernetUDP對象:EthernetUDP UDP;
    2、開始UDP通信,設置本機監聽UDP包的地址,假如在6001端口進行監聽:UDP.begin(6001);
    3、設置對方的ip地址和端口:UDP.beginPacket(destIp, destPort);
    4、向UDP包中寫入要發送的數據,如:UDP.println("Hello,world!");
    5、通過網絡模塊將UDP數據包發送出去:UDP.endPacket();
    
    在軟件包的“Projects\UDP-Send”文件夾包含了本文的完整工程,可以直接編譯、燒寫和調試。這個程序主要展示如何通過UDP向對方發送字符串,看看main.cpp的代碼:
#include "WProgram.h"
#include "Ethernet.h"
#include "EthernetUDP.h"
 
//網絡模塊的MAC地址
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
//網絡模塊的IP地址
IPAddress ip(192, 168, 1, 15);
 
//定義對方ip和端口
IPAddress destIp(192, 168, 1, 171);
uint16_t destPort(6000);
 
//定義UDP對象
EthernetUDP UDP;
 
void setup()
{
    //初始化Rainbow
    boardInit();
    //初始化默認串口
    Serial.begin();
    Serial.println("UDP-Send start...");
    //對網絡進行初始化
    Ethernet.begin(mac, ip);
    //開始一個UDP,雖然是發送,但是還是要設置監聽端口,因為UDP是雙工通信
    UDP.begin(6001);
}
 
void loop()
{
    //開始準備UDP包
    UDP.beginPacket(destIp, destPort);
    //準備要發送的數據
    UDP.println("Hello,world!");
    //將UDP包發送出去
    UDP.endPacket();
    delay(5000);
}
 
int main()
{
    setup();
    while(1) loop();
}
 
    這段代碼我們設置Rainbow的ip地址為192.168.1.15,UDP接收端的ip地址為192.168.1.171,可以根據實際情況進行修改。
 
    上面的程序編譯無誤后,將程序燒寫到Rainbow中,然后在電腦上運行串口調試工具并和Rainbow連接成功,啟動UDP監聽,可以在串口調試工具中看到輸出的日志,同時,每隔5秒,將在從網絡上接收到Rainbow發來的UDP數據:
關閉窗口

相關文章