BLOG

BLOG

開発メモ

Posted on 2014/07/22

コマンド送受信速度のチューン。

1)全てのコードを作り直した。
frameRateを500に変更。
3G回線にて、ロボット、クライアント、サーバーでの遅延がそれぞれ10msec前後。

2)未処理
走行用コマンドを2bytまで減らし制御信号本体を4bytとする。(現在6byt)

3)疑問点>
Processingのdraw関数内での時間計測の結果、
ソース内計測ポイント1、3では0msec
計測ポイント0、2は2>0で0+2がAve12msecくらいでふらつく。
なぜ計測ポイント0が大きい値を示し且つ値がふらつくのか不明。
(本来なら限りなく0でふらつかないはず)
なにかの割り込み処理が発生しているのか?framerateによる調整がはいっているのか?

void draw(){
  //計測ポイント0
  println("step0:"+(millis()-time_2));
  time_2=millis();
 
  if(DEBUG==0){
    getRiftInput();
    getJoystickInput();
  }else{
    getDebugInput();
  }
 
  //計測ポイント1
  println("step1:"+(millis()-time_2));
  time_2=millis();
 
  if(myClient.active()!=false){
    command_byte[0]=0;//user:0
    command_byte[1]=(byte)USER_ID;//userid
    command_byte[2]=1;//command
    command_byte[3]=inttobyte(riy);//rift y
    command_byte[4]=inttobyte(rix);//rift x
    command_byte[5]=inttobyte(jlif);
    command_byte[6]=inttobyte(jlib);
    command_byte[7]=inttobyte(jrif);
    command_byte[8]=inttobyte(jrib);
    command_byte[9]=comnum++;
    command_byte[10]=-128;
    if(comnum>=127)
      comnum=0;
    myClient.write(command_byte);

    while(true){
      myClient.readBytes(rcv_ack);
      if(rcv_ack[0]==2){
        println("ACK");
        rcv_ack[0]=0;
        //計測ポイント2
        println("step2:"+(millis()-time_2));
        time_2=millis();
       
        break;
       
      }
    }
   
  }else{
    println("client err");
    try{
      myClient= new Client(this,SERVER_IP,8080);
      myClient.write(START_COMMAND_BYTE);
    }catch (Exception e){
      println("errnull");
    }
  }

  //計測ポイント3
  println("step3:"+(millis()-time_2));
  time_2=millis();
 
}
新着読み込み中...