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_)を用意する必要があります.
コメントを残す