EthernetUDP.read()

名称

EthernetUDP.read()

説明

指定したバッファにUDPデータを読み込む。引数を与えないときは、バッファの次の文字を返す。

この関数はEthernetUDP.parsePacket()を呼んだ後にだけ成功する。

訳者註: オリジナルの説明は、「Reads UDP data from the specified buffer.」となっているが、指定するのは読む込んだデータを格納するデータと思われる。

書式

int EthernetUDP::read();

int EthernetUDP::read(unsigned char *buffer, size_t len);

引数

bufデータを格納するバッファ。
sizeバッファサイズ。

戻り値

引数なしで呼んだとき:(ライブラリの中の)バッファ内の文字(読み取った文字)。

引数ありで呼んだとき:読み取った文字数(読み取った文字は、指定したバッファに入れられる)。

使用例

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#include <SPI.h>        
#include <Ethernet.h>
#include <EthernetUdp.h>

// Enter a MAC address and IP address for your controller below.
// The IP address will be dependent on your local network:
byte mac[] = {  
  0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress ip(192, 168, 1, 177);

unsigned int localPort = 8888;      // local port to listen on

// An EthernetUDP instance to let us send and receive packets over UDP
EthernetUDP Udp;

char packetBuffer[UDP_TX_PACKET_MAX_SIZE]; //buffer to hold incoming packet,

void setup() {
  // start the Ethernet and UDP:
  Ethernet.begin(mac,ip);
  Udp.begin(localPort);
}

void loop() {

  int packetSize = Udp.parsePacket();
  if(packetSize)
  {
    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());

    // read the packet into packetBufffer
    Udp.read(packetBuffer,UDP_TX_PACKET_MAX_SIZE);
    Serial.println("Contents:");
    Serial.println(packetBuffer);
  }
}

オリジナルのページ

https://www.arduino.cc/reference/en/libraries/ethernet/ethernetudp.read/

最終更新日

January 7, 2024

inserted by FC2 system