communication between RefBox and View3

MEMO

いままでのシステム.
view2recv-?.txt を介してview3 → RefBox のデータのやり取り.

ファイルフォーマットは,
report machine number, report machine type, robotino の座標(x, y, φ),refBoxSeqNum
Player No は,ファイル名にて対応.

通信プログラムとしては,
main(int argc, char **argv) にて,

  recvData.filename  = config_->get_string("/llsfrb/comm/view2-recv");

  llsfInitInputFile(recvData);

  for(int i = 0; i < 24; i++) m_type[i] = 0;
  machine_name_ = "M00";
  machine_type_ = "T0";

として,ファイルからデータを受け取って,machine_name とmachine_type を用意.

llsfInitInputFile(llsfview2recv &recvData){} では,


void llsfInitInputFile(llsfview2recv &recvData)
{
  FILE *fp;
  recvData.machineNumber = 0;
  recvData.machineType = 0;
  recvData.seq = 0;

  if ((fp = fopen(recvData.filename.c_str(), "w")) != NULL) {
    fprintf(fp, "%d\t%d", 0, 0);
    fclose(fp);
  } else {
    printf("Cannot initialize the machine report file! %s\n", recvData.filename.c_str());
  }
}

として,変数の初期化と,ファイルのオープンを行っている.

データファイルの読み取りは,

void llsfInputView2(llsfview2recv &recvData)
{
  FILE *fp;
  if ((fp = fopen(recvData.filename.c_str(), "r")) != NULL) {
    while(feof(fp) == 0) {
      fscanf(fp, "%d\t%d\t%lf\t%lf\t%lf\t%ld",
        &recvData.machineNumber, &recvData.machineType,
        &recvData.x, &recvData.y, &recvData.ori,
        &recvData.seq);
    }
    fclose(fp);
  }
}

である.

これらが,RCLL2018 では,machine_name_,machine_rotation_,machine_zone_のレポートとなります.
片方だけ送信するのも可能で,送信フラグ(send_rotation_,send_zone_)を用意する必要があります.

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

*