1

デスクトップ Adob​​e AIR アプリケーションと通信する必要がある Processing アプリケーションがあります。次のことを考慮して、誰でも最良のオプションを提案できますか?

ソケットが答えである場合、どのタイプのソケット、UDP(データグラム クラス)、ServerSocket、または単純なソケットですか?

-両方のアプリが同じマシン上
にある -レイテンシーが重要、小さい方が良い
-送信される信号は小さく、3 つの値で構成される

・通信は片道のみ、処理はAdobe AIRへ

4

1 に答える 1

1

処理側ではoscP5を使用できます:

import oscP5.*;
import netP5.*;

OscP5 osc;
NetAddress where;

void setup() {
  frameRate(25);text("click to send\nOSC",5,50);

  osc = new OscP5(this,12000);
  where = new NetAddress("127.0.0.1",8082);
}
void draw() {}
void mousePressed() {
  OscMessage what = new OscMessage("/straps");
  what.add(193.4509887695313);
  osc.send(what, where); 
}

AIR では、実際にDatagramSocketを使用します。幸いなことに、 TUIO AS3 の UDPConnector のような OSC パケットで使用できるものがあります。基本的な as3 サンプルを次に示します。

package
{
    import flash.display.Sprite;
    import flash.utils.getDefinitionByName;

    import org.tuio.connectors.UDPConnector;
    import org.tuio.osc.*;

    public class BasicOSC extends Sprite implements IOSCConnectorListener
    {
        private var oscSocket:UDPConnector;
        private const OSCSERVER:String = "127.0.0.1";
        private const PORT:int = 8082;

        public function BasicOSC()
        {
            try{    
                oscSocket = new UDPConnector(OSCSERVER,PORT);
                oscSocket.addListener(this);
                trace(this,"OSC ready");
            }catch(e:Error){    trace(e.getStackTrace());   }   
        }
        public function acceptOSCPacket(oscPacket:OSCPacket):void{
            //handle OSC here
            var message:OSCMessage = oscPacket as OSCMessage;
            trace("message from :",message.address,"at",new Date());
            for(var i:int = 0; i < message.arguments.length; i++)
                trace("\targs["+i+"]",message.arguments[i]);
        }
    }
}

これは、これらのプロジェクトのいくつかに大まかに使用したものです。 Hirsch&Mann が Siemens Crystal の火災を防止 Siemens Crystal 用 Hirsch&Mann City Monitor

于 2014-04-22T17:59:53.493 に答える