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