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

專注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機(jī)教程網(wǎng) >> STM32 >> 瀏覽文章

Rainbow網(wǎng)絡(luò)通信:通過UDP發(fā)送數(shù)據(jù)

作者:白櫟旸   來源:本站原創(chuàng)   點(diǎn)擊數(shù):  更新時(shí)間:2014年04月30日   【字體:

    Rainbow包含一個(gè)END28J60的網(wǎng)絡(luò)模塊,可以非常方便和網(wǎng)絡(luò)設(shè)備進(jìn)行通信。開發(fā)包實(shí)現(xiàn)了一個(gè)TCP/IP協(xié)議棧,并進(jìn)行了c++封裝,無論是UDP、TCP還是WebServer的編程,都非常簡(jiǎn)單,這使得開發(fā)人員可以不用關(guān)心網(wǎng)絡(luò)實(shí)現(xiàn)的細(xì)節(jié),而是關(guān)注功能的實(shí)現(xiàn)。

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

相關(guān)文章