<acronym id="xonnx"></acronym>
      <td id="xonnx"></td>
    1. <pre id="xonnx"></pre>

      1. 專注電子技術學習與研究
        當前位置:單片機教程網 >> 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數據:
        關閉窗口

        相關文章

        欧美性色欧美精品视频,99热这里只有精品mp4,日韩高清亚洲日韩精品一区二区,2020国自产拍精品高潮