00001
00011 #include "urg_ctrl.h"
00012 #include <stdio.h>
00013 #include <string.h>
00014 #include <stdlib.h>
00015 #include <assert.h>
00016
00017
00018 static void urg_exit(urg_t *urg, const char *message)
00019 {
00020 printf("%s: %s\n", message, urg_error(urg));
00021 urg_disconnect(urg);
00022
00023 #ifdef MSC
00024 getchar();
00025 #endif
00026 exit(1);
00027 }
00028
00029
00030 static void printData(urg_t *urg, urg_parameter_t *parameter,
00031 long data[], int data_size, long intensity[])
00032 {
00033 #if 1
00034 int timestamp = urg_recentTimestamp(urg);
00035
00036
00037
00038 printf("%d: %ld [mm] (%ld) %d [msec]\n", parameter->area_front_,
00039 data[parameter->area_front_],
00040 intensity[parameter->area_front_],
00041 timestamp);
00042 #else
00043
00044 int i;
00045
00046 for (i = 0; i < data_size; ++i) {
00047 printf("%d: %ld [mm] (%ld)\n", i, data[i], intensity[i]);
00048 }
00049 #endif
00050 }
00051
00052
00054 int main(int argc, char *argv[])
00055 {
00056 enum {
00057 CaptureTimes = 1,
00058 };
00059
00060 #ifdef WINDOWS_OS
00061 const char device[] = "COM3";
00062 #else
00063 const char device[] = "/dev/ttyACM0";
00064 #endif
00065
00066 int data_max;
00067 long* data;
00068 long* intensity;
00069
00070 urg_parameter_t parameter;
00071 int ret;
00072 int n;
00073 int i;
00074 urg_t urg;
00075
00076
00077 urg_initialize(&urg);
00078 ret = urg_connect(&urg, device, 115200);
00079 if (ret < 0) {
00080 urg_exit(&urg, "urg_connect()");
00081 }
00082
00083
00084 data_max = urg_dataMax(&urg);
00085 data = (long*)malloc(sizeof(long) * data_max);
00086 if (data == NULL) {
00087 perror("data buffer");
00088 exit(1);
00089 }
00090 intensity = (long*)malloc(sizeof(long) * data_max);
00091 if (intensity == NULL) {
00092 perror("data buffer");
00093 exit(1);
00094 }
00095
00096 urg_parameters(&urg, ¶meter);
00097
00098
00099 if (strcmp("UTM-30LX", urg_model(&urg))) {
00100
00101
00102
00103 printf("GD capture\n");
00104 for (i = 0; i < CaptureTimes; ++i) {
00105
00106 ret = urg_requestData(&urg, URG_GD_INTENSITY, URG_FIRST, URG_LAST);
00107 if (ret < 0) {
00108 urg_exit(&urg, "urg_requestData()");
00109 }
00110
00111
00112 n = urg_receiveDataWithIntensity(&urg, data, data_max, intensity);
00113 if (n < 0) {
00114 urg_exit(&urg, "urg_receiveData()");
00115 }
00116 printData(&urg, ¶meter, data, n, intensity);
00117 }
00118 printf("\n");
00119 }
00120
00121
00122 printf("MD(ME) capture\n");
00123
00124
00125
00126
00127 assert(CaptureTimes < 100);
00128 urg_setCaptureTimes(&urg, CaptureTimes);
00129
00130
00131 ret = urg_requestData(&urg, URG_MD_INTENSITY, URG_FIRST, URG_LAST);
00132 if (ret < 0) {
00133 urg_exit(&urg, "urg_requestData()");
00134 }
00135
00136 for (i = 0; i < CaptureTimes; ++i) {
00137
00138 n = urg_receiveDataWithIntensity(&urg, data, data_max, intensity);
00139 if (n < 0) {
00140 urg_exit(&urg, "urg_receiveData()");
00141 }
00142 printData(&urg, ¶meter, data, n, intensity);
00143 }
00144
00145 urg_disconnect(&urg);
00146 free(data);
00147 free(intensity);
00148
00149 #ifdef MSC
00150 getchar();
00151 #endif
00152
00153 return 0;
00154 }