u_result MainWindow::captureAndDisplay() { u_result ans; rplidar_response_measurement_node_t nodes[360*2]; size_t count = _countof(nodes); printf("waiting for data...\n"); // fetech extactly one 0-360 degrees' scan ans = mDrv->grabScanData(nodes, count); if (IS_OK(ans) || ans == RESULT_OPERATION_TIMEOUT) { mDrv->ascendScanData(nodes, count); plotHistogram(nodes, count); /* printf("Do you want to see all the data? (y/n) "); int key = getchar(); if (key == 'Y' || key == 'y') { for (int pos = 0; pos < (int)count ; ++pos) { printf("%s theta: %03.2f Dist: %08.2f \n", (nodes[pos].sync_quality & RPLIDAR_RESP_MEASUREMENT_SYNCBIT) ?"S ":" ", (nodes[pos].angle_q6_checkbit >> RPLIDAR_RESP_MEASUREMENT_ANGLE_SHIFT)/64.0f, nodes[pos].distance_q2/4.0f); } } */ } else { printf("error code: %x\n", ans); } return ans; }
int main(int argc, char **argv) { argc = AS_configure(argc, argv); merylArgs *args = new merylArgs(argc, argv); gkpStoreFile::registerFile(); gkpStoreChain::registerFile(); switch (args->personality) { case 'P': estimate(args); break; case 'B': build(args); break; case 'd': dumpDistanceBetweenMers(args); break; case 't': dumpThreshold(args); break; case 'p': dumpPositions(args); break; case 'c': countUnique(args); break; case 'h': plotHistogram(args); break; case PERSONALITY_MIN: case PERSONALITY_MINEXIST: case PERSONALITY_MAX: case PERSONALITY_MAXEXIST: case PERSONALITY_ADD: case PERSONALITY_AND: case PERSONALITY_NAND: case PERSONALITY_OR: case PERSONALITY_XOR: multipleOperations(args); break; case PERSONALITY_SUB: case PERSONALITY_ABS: case PERSONALITY_DIVIDE: binaryOperations(args); break; case PERSONALITY_LEQ: case PERSONALITY_GEQ: case PERSONALITY_EQ: unaryOperations(args); break; default: args->usage(); fprintf(stderr, "%s: unknown personality. Specify -P, -B, -S or -M!\n", args->execName); exit(1); break; } delete args; return(0); }