前提・実現したいこと
ラズパイ、Unity、HoloLens2を用いてUDP通信の受信を行いたいです。
ラズパイから送信されたデータをUnity、HoloLens2で受信したいのですが現状できていないのでどなたか知恵をお貸しください。
まずはUnityのエディタ上で動作させたいと考えています。
別件ですが受信用とは別に作成したアプリケーションではUnityやHoloLens2からラズパイにUDPを送信するプログラムは正しく動作しています。
発生している問題・エラーメッセージ
ラズパイから送信されたデータが正しく受け取れない Unityのデバッグログに特にエラーは出力されていません
該当のソースコード
Unity側のUDP受信用コード
UDPReceiver.cs
using System.Collections; using System.Net; using System.Net.Sockets; using System.Text; using System.Threading; using UnityEngine; public class UDPReceiver : MonoBehaviour { public int portNum = 60000; //ポート番号 static UdpClient udpClient; Thread thread; void Start() { udpClient = new UdpClient(portNum); thread = new Thread(new ThreadStart(ThreadProc)); thread.Start(); } void OnApplicationQuit() { thread.Abort(); } private static void ThreadProc() { while (true) { IPEndPoint remoteEP = null; byte[] data = udpClient.Receive(ref remoteEP); string message = Encoding.ASCII.GetString(data); GameManager.Instance.AddUdpMessage(message); } } }
ラズパイのUDP送信コード
UDPSend.py
from socket import # 送信側プログラム # 送信側アドレスの設定 # 送信側IP SrcIP = "192.168.0.118" //ラズパイのIP # 送信側ポート番号 SrcPort = 60000 # 送信側アドレスをtupleに格納 SrcAddr = (SrcIP,SrcPort) # 受信側アドレスの設定 # 受信側IP DstIP = "192.168.0.104" #Unityを用いるPCのIPアドレス、HoloLens2でやるときはHoloLens2のアドレス # 受信側ポート番号 DstPort = 60000 # 受信側アドレスをtupleに格納 DstAddr = (DstIP,DstPort) # ソケット作成 udpClntSock = socket(AF_INET, SOCK_DGRAM) # 送信側アドレスでソケットを設定 udpClntSock.bind(SrcAddr) # 送信データの作成 data = "send data" # バイナリに変換 data = data.encode('utf-8') # 受信側アドレスに送信 udpClntSock.sendto(data,DstAddr)
送受信テストで使用したUDP受信用コード
UDPReceive.py
from socket import * # 受信側プログラム # 受信側アドレスの設定 # 受信側IP SrcIP = "(受信する端末のIPアドレス)" # 受信側ポート番号 SrcPort = 60000 # 受信側アドレスをtupleに格納 SrcAddr = (SrcIP, SrcPort) # バッファサイズ指定 BUFSIZE = 1024 # ソケット作成 udpServSock = socket(AF_INET, SOCK_DGRAM) # 受信側アドレスでソケットを設定 udpServSock.bind(SrcAddr) # While文を使用して常に受信待ちのループを実行 while True: # ソケットにデータを受信した場合の処理 # 受信データを変数に設定 data, addr = udpServSock.recvfrom(BUFSIZE) # 受信データと送信アドレスを出力 print(data.decode(), addr)
試したこと
ラズパイからUDPが送信されているか確認のために、ラズパイ内部での送受信をしてデータが受け取れているか、ラズパイと別のUbuntuPCで送受信ができているか確認を行いましたがデータはちゃんと送受信できていました。
この確認には上記の送受信んの.pyのコードを使用しています。
補足情報(FW/ツールのバージョンなど)
使用環境
Unity2019.4.15
Microsoft HoloLens2
Raspberry pi3
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。