■EthernetUDP.available関数
EthernetUDPクラス※1のUDP.available関数は、バッファから読み込み可能なバイト数(文字数)を取得します。
これは既に到着したデータです。
この関数は、UDP.parsePacket関数の後にのみ正常に呼び出すことができます。
available関数はStreamユーティリティー・クラスから継承します。
※1:EthernetUDPのクラスは、UDPメッセージの送受信が出来ます。
■使用例
Arduino IDEで使用するUDP.available関数の使い方は以下の通りです。
例えば「Arduino Leonardo Ethernet」をPCにUSB接続し、またネットワークに接続されたLANケーブル接続して、ArduinoIDEの「ツール」→「ボード」→「Arduino Ethernet」を選択した状態にします。
最初にEthernetUDP関数でUDP経由でパケットを送受信できるようにするEthernetUDPインスタンスを作成します。
Ethernet.begin関数とUdp.begin関数でイーサネットとUDPを開始します。
Udp.parsePacket関数でUPDデータを読み込み、Udp.available関数でバッファから読み込み可能なバイト数が有る場合には、「"Received packet of size "」と共に受信したパケットサイズをシリアル出力します。

#include <SPI.h> #include <Ethernet.h> #include <EthernetUdp.h> // 下のコントローラのMACアドレスとIPアドレスを入力します。 // IPアドレスはローカルネットワークに依存します: byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; IPAddress ip(192, 168, 1, 177); unsigned int localPort = 8888; // 待機するローカルポート EthernetUDP Udp;// UDP経由でパケットを送受信できるようにするEthernetUDPインスタンス char packetBuffer[UDP_TX_PACKET_MAX_SIZE]; //着信パケットを保持するバッファ void setup() { // イーサネットとUDPを開始します。 Ethernet.begin(mac, ip); Udp.begin(localPort); } void loop() { int packetSize = Udp.parsePacket(); if (Udp.available()) { Serial.print("Received packet of size "); Serial.println(packetSize); Serial.print("From "); IPAddress remote = Udp.remoteIP(); for (int i = 0; i < 4; i++) { Serial.print(remote[i], DEC); if (i < 3) { Serial.print("."); } } Serial.print(", port "); Serial.println(Udp.remotePort()); Udp.read(packetBuffer, UDP_TX_PACKET_MAX_SIZE); // パケットをpacketBuffferに読み込む Serial.println("Contents:"); Serial.println(packetBuffer); } }

図1:プログラム例
■構文
UDP.available()
■パラメータ
特に無し。
■戻り値
読み込み可能なバイト数。
■補足
特に無し。
励みになりますのでよければクリック下さい(^o^)/
