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

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

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

噴霧機 動噴 動力噴霧機 単体動噴 プランジャー 通販 HAIGE HG-18A 吸水力:9.5-14L min 回転数:800-1200 モーター:0.6-1HP, 噴霧器 噴霧機 動力噴霧器 倉庫 動力噴霧機 動噴 単体動噴 ピストンポンプ ノズル

  • 噴霧機 動噴/動力噴霧機 単体動噴 プランジャー HAIGE HG-18A 吸水力:9.5-14L/min 回転数:800-1200 モーター:0.6-1HP, 噴霧器 噴霧機 動力噴霧器 動力噴霧機 動噴 単体動噴 ピストンポンプ ノズル
  • xkXDzXO6
  • 13500円-36%-8600円
  • >

    >

    >

    >

    >

    >

    噴霧器 噴霧機 ならハイガーにおまかせください

    >

    >

    >

    >

    >

    >

    >   >
    1.余水噴出ホース
    噴射を止める際に出ていく水を流すホースです。
      2.吸水ホース
    水を吸い上げるホースです。
    >   >
    3.プーリー
    直径18cmのプーリーです。
      4.プーリーの差込み口
    プーリーの装着部分です。
    出荷時はカバーがついており、外してから入れてください。
    >   >
    5.ポンプ回り&ホースの差込み口
    1・・・水の流れを止めたり放出する際に動かします。
    2・・・噴射ホースの差込み口です。
    3・・・吸水ホースの差込み口です。
    4・・・余水噴出ホースの差込み口です。
    6.ロックレバー
    噴射をロックさせるレバーです。
    レバーを上下に動かして操作します。
    ロックの際はレバーの窪みの型にはまるまで上げて固定します。
    >  
    7.オイル入れ
    ポンプに入れる10W-30のオイル入れです。
    500mlを目安に入れてください。

    商品スペック
    モーター 0.6-1HP
    エンジン 1.5-2PS
    噴霧力 20-35kg/cm2
    吸水力 9.5-14L/min
    回転数 800-1200
    寸法 320*235*265 mm
    軸径 19mm
    軸キーサイズ 5mm×5mm
    重 量 8.5kg

    メーカーの異なるポンプとホースを繋ぐためのネジの購入も出来ます

    日本製の噴霧器用ホースを繋ぐ場合にご購入下さい。

    >

    >

    <噴霧器 噴霧機

はじめに

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

tips.hecomi.com

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

薄い【送料無料】TONEラチェットハンドル 首振りタイプ 差込角12.7mm RH4FHX, 【送料無料】TONEラチェットハンドル 首振りタイプ 差込角12.7mm RH4FHX
なので速いですし、生の 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())、生の シルキー・はやうち3段・178-39 【メーカー直送】, 園芸道具・高枝切の高枝切(一本物)178-39。枝打ち鋸の定番。
のデータとして使いたい場合も同様に受信部でキューしておいて、メインスレッドで処理されるよう次回の 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.