読者です 読者をやめる 読者になる 読者になる

C++、JavaScript、Unity、ガジェット等の Tips について雑多に書いています。

HoloLens で UDP 通信を行う方法について調べてみた

KOSHIN 別売り 乾電池式噴霧器 背負い式 消毒 DK-10D 消毒 , 通販 工進 除草で乾電池式噴霧器なら女性やお年寄りでも作業らくらく 高級品 単一形乾電池8本 除草専用

工進/KOSHIN 乾電池式噴霧器 DK-10D(消毒・除草専用/単一形乾電池8本[別売り]/背負い式), 消毒・除草で乾電池式噴霧器なら女性やお年寄りでも作業らくらく!
Ew78BGZx
11000円-33%-7400円

>

>

>

自在二頭口噴口、泡状除草噴口、カバー付き除草噴口を標準付属!
工進 乾電池式噴霧器 DK-10D[単一乾電池8本(別売り)/直射距離約4m/ノズル長さ60cm]

10Lタイプで本体重量も4.2kgと軽量のため、女性やお年寄りにも大人気の商品です。単一乾電池8本で約4時間使用すること
ができ、タンク約10杯分(100L)の作業をすることができます。年間100L未満の噴霧量なら年一回の電池交換でOK

>

スイッチ一つで簡単操作

本体の電源スイッチを入れるだけで、すぐに作業に取り掛か

ることができます。

>

単一乾電池8本で使用可能(乾電池別売り)

単一乾電池8本で約4時間使用することができます。乾電池

ケースも引き出すだけで簡単に交換可能。


>

本体重量4.2kgを実現

業界最軽量クラスの4.2kgで、女性やお年寄りの方でも楽に

作業することができます。ホールド性も抜群です。

>

操作性の高いレバー

握りやすく作業しやすいレバーを採用。レバー自体が軽いた

め長時間の作業でも疲れにくいのが特徴です。



DK-10D仕様
タンク容量 10L
ポンプ ダイヤフラムポンプ
モーター 直流12Vモーター
最高圧力 締め切り時:0.27MPa(2.7kgf/cm2
噴口 自在二頭口噴口 / カバー付き泡状除草噴口 / 泡状除草噴口
噴霧量 一頭口噴口時:0.45L/分 / 二頭口噴口時:0.68L/分 / カバー付き及び泡状除草噴口時:0.55L/分
噴霧圧力 一頭口噴口時:0.26MPa / 二頭口噴口時:0.16MPa / カバー付き及び泡状除草噴口時:0.22MPa
噴霧可能目安 一頭口時:100L(約10杯) / 二頭口時:160L(約16杯) / カバー付き及び泡状除草時:130L(約13杯)
噴霧目安 二頭口(霧):約0.5m / (直射):約4m / カバー付き:幅約0.35m / 泡状除草:幅約0.5m
乾電池 単一形乾電池6本(別売り)
作業時間目安 約4時間(アルカリ乾電池使用時)
本体重量 3.3kg(乾電池含む場合は4.2kg)

付属品
ノズルパイプ(60cm) / 軽量カップ / スポイト / 自在二頭口噴口 / カバー付き泡状除草噴口 / 泡状除草噴口


レビューを書いてQUOカードGET?  いいえ、レビューを書きません。レビューを書きます⇒500円分GET

はじめに

前回のデモで iPad と HoloLens を OSC で通信しようとした際に通信周りが面倒だったのでまとめておきます。

tips.hecomi.com

ちなみに OSC はアドレス付きのデータを扱えるプロトコルで、UDP ベースのものがよく使われます。

薄い【送料無料】大化工業タピレンコアレスラップ CL153008, 【送料無料】大化工業タピレンコアレスラップ CL153008
なので速いですし、生の UDP よりもアドレスや型情報がついている分、圧倒的に使いやすいのでオススメです。

デモ

前回の一例ですが、ここではタッチ座標を iPad から OSC で送信して、それを HoloLens 側で受け取って、その位置に線を描く、というものになっています。

概要

Unity では System.Net.Sockets.UdpClient クラスを利用して簡単に UDP 通信が可能です。

using UnityEngine;
using System.Net;
using System.Net.Sockets;
public class UdpTest : MonoBehaviour
{
    [SerializeField]
    int listenPort = 3333;
    UdpClient udpClient_;
    IPEndPoint endPoint_;
    void Start()
    {
        endPoint_ = new IPEndPoint(IPAddress.Any, listenPort);
        udpClient_ = new UdpClient(endPoint_);
    }
    void Update()
    {
        while (udpClient_.Available > 0) {
            byte[] data = udpClient_.Receive(ref endPoint_);
            // data を使って何か処理する
        }
    }
}

ただ、HoloLens 上で動く UWP アプリでは UdpClient クラスが含まれていません。

代わりに、Windows.Networking.Sockets.DatagramSocket を使う必要があります。

参考: Hololens UDP server? — Hololens Developer Community

コード

ここでは UDP 経由で受け取ったデータは OSC のメッセージに変換して処理するものとします。例として OSC への変換には keijiro さんの unity-osc を利用しています。

github.com

using UnityEngine;
using UnityEngine.Assertions;
#if UNITY_EDITOR
using System.Net;
using System.Net.Sockets;
#else
using System;
using System.IO;
using Windows.Networking.Sockets;
#endif
public class TouchOscServer : MonoBehaviour
{
    [SerializeField]
    int listenPort = 3333;
    Osc.Parser osc_ = new Osc.Parser();
    void OnMessage(Osc.Message msg)
    {
        // ここで適当に処理する
        Debug.LogFormat("{0} => {1}", msg.path, msg.data[0]);
    }
#if UNITY_EDITOR
    UdpClient udpClient_;
    IPEndPoint endPoint_;
    void Start()
    {
        Assert.IsNotNull(handler, "should set handler.");
        endPoint_ = new IPEndPoint(IPAddress.Any, listenPort);
        udpClient_ = new UdpClient(endPoint_);
    }
    void Update()
    {
        while (udpClient_.Available > 0) {
            var data = udpClient_.Receive(ref endPoint_);
            osc_.FeedData(data);
        }
        while (osc_.MessageCount > 0) {
            var msg = osc_.PopMessage();
            OnMessage(msg);
        }
    }
#else
    DatagramSocket socket_;
    object lockObject_ = new object();
    const int MAX_BUFFER_SIZE = 1024;
    byte[] buffer = new byte[MAX_BUFFER_SIZE];
    async void Start()
    {
        try {
            socket_ = new DatagramSocket();
            socket_.MessageReceived += OnMessage;
            await socket_.BindServiceNameAsync(listenPort.ToString());
        } catch (System.Exception e) {
            Debug.LogError(e.ToString());
        }
    }
    void Update()
    {
        lock (lockObject_) {
            while (osc_.MessageCount > 0) {
                var msg = osc_.PopMessage();
                OnMessage(msg);
            }
        }
    }
    async void OnMessage(DatagramSocket sender, DatagramSocketMessageReceivedEventArgs args)
    {
        using (var stream = args.GetDataStream().AsStreamForRead()) {
            await stream.ReadAsync(buffer, 0, MAX_BUFFER_SIZE);
            lock (lockObject_) {
                osc_.FeedData(buffer);
            }
        }
    }
#endif
}
}

Unity と UWP 側で UDP の処理を切り分けています。Unity Eidtor 上の C# プロジェクトでは #else ブロックの内容が補完付きで編集できませんが、ビルド後の C# プロジェクトの中であれば補完付きで編集やデバッグもできるので、手を加えたい場合はビルド後のプロジェクトに対してやるのをオススメします。

本例では OSC 側でデータをキューに詰めてもらってますが(Osc.Parser.FeedData())、生の 【送料無料】キャリングホースリール 50m グレー〔伸縮 ガーデニング 伸びる ベランダ 畑 水 水まき 自然 農作業 〕 おしゃれ, ◆大好評!タイムセール開催中! 3/31(金)12:59迄◆
のデータとして使いたい場合も同様に受信部でキューしておいて、メインスレッドで処理されるよう次回の Update 時にキューから取り出して処理、みたいな流れになると思います。

おわりに

HoloLens といろんなものを連携させて是非遊んでみてください。

CodkagalmudugishaLagaHeloWararkaXaqiiqda | ishaWararkaSuganeeSomaliaThursday,April27th,2017HomeWararkaMaantaWararkaDalkaWararkaGalmudugBanaadirNewsEnglishWararkamaantaDHAGEYSO:WaxgaradkaGalmudugookuhanjabayinfarogelindegdegahkusameyndoonaan…-Apr27,2017WaxaaodayaashadhaqankaGalmudug,markiiuguhoreysaykahadleendoorashadamadaxweynahamaamulkaoodib...Akhriso:BooqashadaFarmaajoEeTurkigaIyoHehiisyadaTaariikhigaAhEeLabadaDhinac-Apr27,2017MadaxweynahaSoomaaliyaMaxamedCabdullahiFarmaajoiyowafdiuuhogaaminayoayaahaatanbooqasho3maalmood...WARDEGDEG:LaboWiilooWalaaloahoosixungoordhowloogudilayMuqdisho(Magacyadooda)-Apr27,2017WararkanagasoogaarayodegmadaWadajirayaakuwaramayainlagudilayxaafadaSiliga...Top:DFoobillowdayqorshihiiciidanka&SidalooguqeybiyeyMaamulada-Apr27,2017WasiirkaDifaacaXukumaddaSoomaaliyaC/rashiidC/llaahiMaxamedayaabilaabaydiyaarintaCiidamadaXooggaeedhawaan...XOG:BeelishortaagtayMasuuluuMagacaabayRWkheyreiyoMDFarmaajooofarogeliyay-Apr27,2017CuleesbadanayaadhankabeeshaDaaroodkagayimidMadaxweyneFarmaajoKadibmarkiiladamcay...WarDegDeg:-Al-shabaabooWeerarKuahHoteeloayDeganYihiinWasiiradaSoomaliya-Apr27,2017IlolagukalsoonankaroayaaxaqiijiyayinDagaalyahanaxXarakadaAl-shabaabayweerarkuyihiinHoteelo...Sawirro:14RuuxooShubanBiyoodugugeeriyootaydeegaankaGadoon-Apr27,2017DeegaankaGadoonoohoostagadegmadaDhuusamareebeeGobolkaGalgaduudayaatodobaadkanwaxaacudurkaShuban...WarDegDegah:-Ra’iisulWasaarahaSoomaaliyaooMuqdishokulaShirsanHogaamiyahaGuudEeAhlusunna-Apr26,2017Ra'iisulWasaarahaXukumaddaSoomaaliyaXasanCaliKheyrreayaaCaawaKulanlalehGuddoomiyahaGuud...WARDEGDEGAH:MadaxweyneFarmaajoooYuusufJeelleumagacaabayXilCusub-Apr26,2017MadaxweynahaSoomaaliyaMaxamedC/llaahiFarmaajoayaamaantaumagaacabayMaareeyahaGuudeeHey’addaSaadaasha...(WarCusub);-MusharraxiintaMadaxweynahaMaamulkaGalmudugooMudoKoobanLooQabtay..-Apr26,2017GuddigadoorashadaGalmudugayaamuddo24-saacahgudaheedugayeeraydegmadaCadaadoineyku...FAALLO:YaadiiddanDowladdaMadaxweyneFarmaajo?-Apr26,2017Waxaanfalanqeyn-taydansikoobanugusharraxayaaindadbadanaysiqaldanuisticmaalayaan...DHAGEYSO:MahadSalaad”MadaxdaQarankaeeGodkakuridayaCiidamadawaaninlaFadeexeeyalanaMaxkamadeeyo”+(XildhibaanDamu-Jadiid)..-Apr26,2017ildhibaanMahadMaxamedSalaadookamidahXildhibaanadaBaarlamaankaSoomaaliyaayaasheegayin...DEGDEG:DagaalculusoocaawakadhaxqaraxayAl-ShabaabiyoEthiopia-Apr26,2017WararkainagasoogaarayaGobolkaHiiraanayaawaxaaaysheegayaaninDagaalculusuu...DAAWO:MadaxweyneFarmaajooosiweynloogusoodhaweeyayTurkiga-Apr26,2017MadaxweynahaDFSMudaneMaxamedCabdullahiFarmaajoayaagoordhowgaaraymagaaladdaAnkaraeecaasimaddadalka...WararkiiugudanbeeyayshirxasaasiahoocaawausocdaRWKheyre&MadaxdaAhlusuna-Apr26,2017WararkalagahelayomagaaladaMuqdishoayaasheegayainuushirxasaasiahcaawausocdo...­­­MusharaxMadaxweyneXaafDucaaleGeelleoowadaQorshelaguHormarinayoBulshadaGalmudug”Sawiro”-Apr25,2017MusharaxaMadaxweynahaDowladGoboleedkaGalmudugMudaneXaafDucaaleGeelleookamidaMusharaxiintaUgu...Wardegdegah-:JenGabreooweerarAfkaahkuqaadayMadaxweynahaSoomaaliya.-Apr25,2017JenGabreookamidahsaraakiishaciidamadaEthiopiaayaabartauukuleeyahay...UlajeedkaSafarkaMadaxweyneFarmaajoEeDalkaTurkiga-Apr25,2017MadaxweynahaSoomaaliyaMaxamedCabdullahiFarmaajoayaasaacadahasoosocdakusiijeedadalkaTurkiga,...DEGDEG:AskaridilayWiiliyoAabihiisoogoordhowlatoogtay-Apr25,2017WararkainagasoogaarayaMagaaladaBaydhaboeeGobolkaBaayayaawaxaaaysheegayaanin...WARCULUS:DiyaaradodagaalooduqeeyayGedo&HaliskujirtaNoloshaSaraakiilShabaabcaanah..-Apr25,2017WararkanagasoogaarayagobolkaGedoayaasheegayainhalkaasayxalaykadhaceen...EnglishNewsSomalia:Healthyherdshelpcommunitiessurvive-Jan6,2017Inacrowdedpenmadeofthornyshrubbrushesandtwigs,aherderpulls...U.S.airstrikeinSomaliakilledlocalmilitia,notalShabaab-Nov10,2016ASeptemberU.S.airstrikeinSomaliakilledlocalmilitiaforcesandnotal...SaudikingsendscongratulationstoSomalia,butonwrongday-Oct23,2016SaudiArabia'sKingSalmanhascongratulatedSomalia"ontheanniversaryofthecountry'snational...Somalipiratesfreeforeignsailors‘for3mransom’-Oct22,2016ThecrewofafishingvesselhijackedbySomalipiratesfourandahalf...AMISOMapologisesforshootingdeadacivilianinSomalia-Oct21,2016TheAfricanUnionpeacekeepingmissioninSomalia(AMISOM)onThursdayapologisedforshootingdeada...SomalisecurityforcesapprehendAljazeerajournalist-Oct19,2016TheSomalisecurityforcesarrestedAljazeerajournalist,HamzaMohamedtogetherwiththreeotherjournalists...7DeadasSomaliTroopsFightAl-ShababinTownNearCapita-Oct19,2016SomalipolicesayatleastsevenaredeadafterhoursofclashesasSomali...DowladdaItoobiyaooSoobandhigtayXaqiijintaHeshiiskaPuntlandiyoGalmudug.-Oct19,2016WasaraddaArrimahaDibaddaItoobiyaayaaBarteedaInternetkakusooqortayjiritaankaHeshiiskaaydhanka...WararkiiugudambeeyayAfgooyeiyoCiidamadaDFoodibulawareegay-Oct19,2016CiidamadadowladdaSoomaaliyaayaadibugulaabtaydegmadaAfgooyeeeGobolkaShabeellahaHoose,saacado...Sawiro-MadaxweynahaGalmudugoodhagaxdhigaywaddooyincusub-Oct18,2016MadaxweynahaGalmudugayaamaantadibugulabatayMagaladaCadaadoiyadoohalkaasisidiiranloogu...WardegdegAh:-DagaalCulusooHaddaKaSocdaAfgooye+khasaaraha-Oct18,2016WargoordhawkusoodhacayWarqabadkaWakaaladaWarqaad.comayaasheegayainDagaalXooganuu...Dhageyso-BanaabaxXooganookasocdaMagalada….-Oct18,2016Banaabaxxooganooloogasoohorjeedawarqadkasoobaxayqaramadamadoobeislamrkanalagu...Degdegah-WasiirkaAmnigaGalmudugoogaalkacyokagadhawaaqayarinkusaabsan…-Oct18,2016Wasiirkaamnigagalmudugcismaanciisenuurtaardhuleedoogordhowlahadlaywarbaahintaayaa...DHEGEYSO-XasanSheekh*GalkacyowaxayahaydmeelaanlaguhoyanGalmudugkahor*.-Oct18,2016MadaxwaynahaSoomaliyaXasansheikhayaatilmamayintaaanGalmuduglaDhisiningaalkacyoay...DegDeg:-GalmudugooWarkasoosaartayWada-hadalkaPuntland-Oct18,2016DowladdaGalmudugayaaWarkasooSaartayWada-hadalkaGalmudugaylagaleysoMaamulkaPuntland,...MadaxweynahaGalmudugooUgaasXasanugubaaqayinuuTaageeroMaamulkaHirshabeelle”Sawiro”-Oct18,2016MadaxweynahagalmudugayaamaantadibugusoolabatayMagaladacadaadomadaxweynahaayaawaxaasafarkiisaku...WarDegDegah:-DadkaMagaaladaGaalkacyoooSaakakaCabsiqabainlaguDuldagaalamo-Oct18,2016WararkakaimaanayamagaaladaGaalkacyoeegobolkaMudugayaawaxaysheegayaaninsaakayhalkaasi...MadaxweynahaoouhambalyeeyeymadaxdacusubeemaamulkaHirshabeelle:-Oct18,2016MadaxweynahaJamhuriyaddaFederaalkaeeSoomaaliya,MudanaXasanSheekhMaxamuud,ayaauhambalyeeyayhoggaankacusub...DhageysoDhamaanqudbadihiilagajeediyaydoorashadamadxaweynahahirshabelleiyokuxigeenkiisa….-Oct17,2016MadaxweynahaHirshabellecalicabdulaahiwarsameiyomadaxweynekuxigenkiisacaliguudlaweayaauguhoreyntiiHoos...DEGDEG:CaliGuudlaaweookuguuleystaydoorashadaMadaxweynekuxigeenkaHirshabeelle-Oct17,2016CaliCabdullaahiXuseen(CaliGuudlaawe)ayaakuguuleystaydoorashadaMadaxweynekuxigeenkaMaamulkaHirshabeelle,kaddib...MuuqaalkaGobolkaBanaadirFreeUsersOnlineCounterFARSAMADIICaydaruus©2017CodkagalmudugishaLagaHeloWararkaXaqiiqda-Allrightsreserved.DesignedBye:CaydaruusFirginle.