ArduinoのイーサネットUDP通信

目次

1. ハードウェアのテスト

2. プログラム

(0)ヘッダーファイルを追加

(1) 変数の定義

(2) 初期化プログラム

(3) ループ実行プログラム

3. プログラムのダウンロード

(1) 開発ボードコントローラとポート番号の選択

(2) プログラムのコンパイルとダウンロード

4. テスト

(1) テストソフトを起動します

(2) ネットワーク テスト アシスタントは文字列をマイクロコントローラー Udp に送信します。

5. プログラムおよびテスト ソフトウェアのダウンロード リンク


1. ハードウェアのテスト

Arduino開発ボード、Megaシリーズ。

W5500ネットワークポートモジュール

2. プログラム

(0)ヘッダーファイルを追加

#include <Ethernet.h>
#include <EthernetUdp.h>

(1) 変数の定義

EthernetUDP Udp;
char packetBuffer[UDP_TX_PACKET_MAX_SIZE];  // 用于保存读取的Udp数据包的缓冲区
char ReplyBuffer[] = "Received,Over";        // 本机Udp给发送信息的Udp发送字符串

//定义单片机本地Mac、IP地址和端口号
byte localMac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED};
IPAddress localIp(192, 168, 1, 177);
unsigned int localPort = 9999;

(2) 初期化プログラム

// 初始化程序,执行一次
void setup() 
{    
    Ethernet.begin(localMac, localIp);
    // 打开串口
    Serial.begin(9600);
    while (!Serial) 
    {
        ; //等待串口连接。仅本机USB口使用。
    }
    // 检查以太网硬件情况
    if (Ethernet.hardwareStatus() == EthernetNoHardware)  //检查W5500模块是否存在
    {
        Serial.println("Ethernet shield was not found.  Sorry, can't run without hardware. :(");
        while (true) 
        {
          delay(1); // do nothing, no point running without Ethernet hardware
        }
    }    
    
    if (Ethernet.linkStatus() == LinkOFF)                 //检查网口是否连接
    {
      Serial.println("Ethernet cable is not connected.");
    }  

    // 启动UDP
    Udp.begin(localPort);
    
}

(3) ループ実行プログラム

//循环运行程序
void loop() 
{
    int packetSize = Udp.parsePacket();   //Udp接收到的数据长度
    if(packetSize>0)
    {
        Serial.print("Received packet of size ");       
        Serial.println(packetSize);                     //串口打印,Udp接收到的数据长度
        
        Serial.print("From ");
        IPAddress remote = Udp.remoteIP();              //串口打印,发送消息Udp的ip地址、端口号
        for (int i=0; i < 4; i++)                       //ip地址
        {
            Serial.print(remote[i], DEC);
            if (i < 3) 
            {
                Serial.print(".");
            }
        }
        Serial.print(", port ");      
        Serial.println(Udp.remotePort());               //端口号

        // 将Udp接收到的消息,通过串口打印出来
        Udp.read(packetBuffer, UDP_TX_PACKET_MAX_SIZE); //Udp接收到的字符串消息
        Serial.println("Contents:");
        Serial.println(packetBuffer);

        //本机给发送消息的Udp机器发送消息
        Udp.beginPacket(Udp.remoteIP(), Udp.remotePort());
        Udp.write(ReplyBuffer);
        Udp.endPacket();       
    }
    delay(10);  
}

3. プログラムのダウンロード

(1) 開発ボードコントローラとポート番号の選択

(2) プログラムのコンパイルとダウンロード

4. テスト

シリアル ポートとネットワーク デバッグ アシスタント ソフトウェアを使用してテストします。

(1) テストソフトを起動します

コンピューター上にローカル UDP を作成し、マイクロコントローラーに接続するためのソフトウェア シリアル ポートをテストします。

(2) ネットワーク テスト アシスタントは文字列をマイクロコントローラー Udp に送信します。

マイコンに設定したIPアドレスとポート番号に従ってUDP送信テストを実施します。

5. プログラムおよびテスト ソフトウェアのダウンロード リンク

https://download.csdn.net/download/panjinliang066333/88622368

Supongo que te gusta

Origin blog.csdn.net/panjinliang066333/article/details/134950898
Recomendado
Clasificación