Ejemplo n.º 1
0
int main(int argc, char *argv[])
{
  if (!init_test_image()) { return -1; }
  if (!init_server_code()) { return -1; }
  if (!init_client_code()) { return -1; }

  while (!client_done) {
    mainloop_server_code();
    mainloop_client_code();
  }

  if (clt) { delete clt; }
  if (svr) { delete svr; }

  return 0;
}
Ejemplo n.º 2
0
int main(int argc, char *argv[])
{
	int	i, realparams;		  // How many non-flag command-line arguments
	char	*devicename = "directx";  // Name of the device to open
	int	devicenum = 1;		  // Which, if there are more than one, to open
	char	*logfilename = NULL;	  // Outgoing log file name.

	realparams = 0;
	for (i = 1; i < argc; i++) {
		if (!strncmp(argv[i], "-bin", strlen("-bin"))) {
			if (++i > argc) { Usage(argv[0]); }
			g_bincount = atoi(argv[i]);
			if ( (g_bincount < 1) || (g_bincount > 16) ) {
				fprintf(stderr,"Invalid bincount (1-16 allowed, %d entered)\n", g_bincount);
				exit(-1);
			}
		} else if (!strncmp(argv[i], "-every_nth_frame", strlen("-every_nth_frame"))) {
			if (++i > argc) { Usage(argv[0]); }
			g_every_nth_frame = atoi(argv[i]);
			printf("Only sending one frame in %d\n", g_every_nth_frame);
			if ( (g_every_nth_frame < 1) || (g_every_nth_frame > 4000) ) {
				fprintf(stderr,"Invalid frame skip (1-4000 allowed, %d entered)\n", g_every_nth_frame);
				exit(-1);
			}
		} else if (!strncmp(argv[i], "-expose", strlen("-expose"))) {
			if (++i > argc) { Usage(argv[0]); }
			g_exposure = atof(argv[i]);
			if ( (g_exposure < 1) || (g_exposure > 4000) ) {
				fprintf(stderr,"Invalid exposure (1-4000 allowed, %f entered)\n", g_exposure);
				exit(-1);
			}
		} else if (!strncmp(argv[i], "-buffers", strlen("-buffers"))) {
			if (++i > argc) { Usage(argv[0]); }
			g_camera_buffers = atoi(argv[i]);
			if ( (g_camera_buffers < 1) || (g_camera_buffers > 1000) ) {
				fprintf(stderr,"Invalid number of buffers (1-1000 allowed, %d entered)\n", g_camera_buffers);
				exit(-1);
			}
		} else if (!strncmp(argv[i], "-res", strlen("-res"))) {
			if (++i > argc) { Usage(argv[0]); }
			g_width = atoi(argv[i]);
			if ( (g_width < 1) || (g_width > 1600) ) {
				fprintf(stderr,"Invalid width (1-1600 allowed, %d entered)\n", g_width);
				exit(-1);
			}
			if (++i > argc) { Usage(argv[0]); }
			g_height = atoi(argv[i]);
			if ( (g_height < 1) || (g_height > 1200) ) {
				fprintf(stderr,"Invalid height (1-1200 allowed, %d entered)\n", g_height);
				exit(-1);
			}
		} else if (!strncmp(argv[i], "-listen_port", strlen("-listen_port"))) {
			if (++i > argc) { Usage(argv[0]); }
			g_strPORT = atoi(argv[i]);
		} else if (!strncmp(argv[i], "-log_port", strlen("-log_port"))) {
			if (++i > argc) { Usage(argv[0]); }
			g_svrPORT = atoi(argv[i]);
		} else if (!strncmp(argv[i], "-swap_edt", strlen("-swap_edt"))) {
			g_swap_edt = true;
		} else if (!strncmp(argv[i], "-trigger", strlen("-trigger"))) { // enable external triggering
			g_trigger = true;
		} else if (!strncmp(argv[i], "-framerate", strlen("-framerate"))) {
			if (++i > argc) { Usage(argv[0]); }
			g_framerate = atof(argv[i]);
			if ( (g_framerate < 1) || (g_framerate > 1000) ) {
				fprintf(stderr,"Invalid framerate (1-1000 allowed, %lf entered)\n", g_framerate);
				exit(-1);
			}
		} else if (!strncmp(argv[i], "-gain", strlen("-gain"))) {
			if (++i > argc) { Usage(argv[0]); }
			g_gain = static_cast<float>(atof(argv[i]));
			fprintf(stderr,"The current gain setting is %f)\n", g_gain);
			
		} else {
			switch (++realparams) {
	  case 1:
		  devicename = argv[i];
		  break;
	  case 2:
		  devicenum = atoi(argv[i]);
		  break;
	  case 3:
		  logfilename = argv[i];
		  break;
	  default:
		  Usage(argv[0]);
			}
		}
	}

	// Set up handler for all these signals to set done
	signal(SIGINT, handle_cntl_c);

	printf("video_vrpnImager_server version %02d.%02d\n", MAJOR_VERSION, MINOR_VERSION);

	if (!init_camera_code(devicename, devicenum)) { return -1; }
	printf("Opened camera\n");
	if (!init_server_code(logfilename, (g_numchannels > 1) )) { return -1; }

	while (!g_camera_done) {
		str->mainloop();
		strcon->mainloop();

		// Sleep to avoid eating the whole processor.  The camera-watching thread
		// does not sleep, so that it gets frames as fast as it can.
		vrpn_SleepMsecs(1);
	}

	printf("Deleting camera and connection objects\n");
	teardown_server_code();
	return 0;
}