M5STackにLAN Module W5500 with PoEのLANモジュールをつけて、
UDP通信でデータをPCに送りたいと思っております.
スケッチ例の
M5stack lib examples -> modules -> LAN_W5500 -> WebServerを使えば、
ウェブページからデータを確認することができましたが、
UDP通信を行おうとするとうまくいきません.
ソースコードを以下に添付いたします.
#include <M5Stack.h> #include <SPI.h> #include <Ethernet2.h> #include <EthernetUdp2.h> byte mac[] = {0x24, 0x0A, 0xC4, 0xF8, 0x54, 0xC8}; const IPAddress ip(192,168,3,147); const IPAddress gateway(192,168,3,254); const IPAddress subnet(255,255,255,0); const char *pc_addr = "192.168.18.143"; const int pc_port = 50007; //送信先のポート const int my_port = 50008; //自身のポート // An EthernetUDP instance to let us send and receive packets over UDP EthernetUDP Udp; void setup() { // Open serial communications and wait for port to open: M5.begin(); M5.Power.begin(); // start the Ethernet connection and the server: Ethernet.begin(mac, ip); Udp.begin(my_port); } void loop() { Udp.beginPacket(pc_addr, pc_port); Udp.write("5"); Udp.endPacket(); }
よろしくお願いいたします.
このままではコードが見づらいので、質門を編集し、<code>ボタンで、出てくる’’’の枠の中にコードを貼り付けてください
ハードがないのでお力になれない気もしますが、とりあえず
「うまくいきません」とはどうなることですか?
問題の解決には、(なにを期待したかも明らかにせずに)「期待通りではなかった」というだけの情報は大抵無力で、しかし「その代わりに何が起こったのか」を詳細に検討することで何かが得られることが多いものです。
とりあえず...UDPを受け取る側は確実に動作することが確認されているのですか?
wiresharkを使って、
Udp.write("5")の箇所が入ってくるかを確認してはいるのですが、現状うまく接続出来ていないようです
受け側のPC?でWiresharkでモニターして、該当するパケットが観察されない、ということですか?
「うまい」かどうかじゃなくて、何が起こったかを「そのまま記述する」癖をつけたほうがいいとおもいますけどねぇ。どうしてトラブルシュートの時に「うまくいった」「いかない」に二値化しちゃうんでしょう?
ちょっと知識が曖昧なんですが、UDPパケットってコネクションを持たないから、受け側のポートが開いてなくてもとにかく送られるんでしたっけ?
・何らかのプログラムでそのUDPポートを受信するようにしてみても同様ですか?
・M5Stack側のLANアダプタには通信状態を示すLEDは付いていませんか? それは点滅していますか?
・WiFi経由で同様のことをやった場合はどうなりますか?
などを試してみたらどうなるでしょう。
回答1件
あなたの回答
tips
プレビュー