Question

J'utilise un exemple de programme de ce code http://sicktoolbox.sourceforge.net/ > http://sourceforge.net/projects/sicktoolbox/files/ .Il s'agit essentiellement d'un pilote de scanner à distance.Le programme que j'essaie d'exécuter se trouve dans maladetoolbox-1.0.1/c++/examples/lms/lms_plot_values ​​au cas où vous voudriez voir le code dont je parle.

Quoi qu'il en soit, le dossier du projet lms_plot_values ​​contient gnuplot_i.cc, gnuplot_i.hpp, main.cc, Makefile, Makefile.am, Makefile.in.J'ai donc mis les trois premiers fichiers dans mon Eclipse Indigo CDT, compilé (pas d'erreur de compilation, tout est déjà correctement lié dans Eclipse et toutes les bibliothèques nécessaires sont ajoutées), mais cet exemple de programme est écrit pour prendre en compte les arguments de ligne de commande.Voici le code.

/*!
 * \file main.cc
 * \brief Illustrates how to acquire a measurements from the Sick
 *        LMS 2xx using the configured measuring mode.
 *
 * Note: This example should work for all Sick LMS 2xx models.
 *
 * Code by Jason C. Derenick and Thomas H. Miller.
 * Contact derenick(at)lehigh(dot)edu
 *
 * The Sick LIDAR Matlab/C++ Toolbox
 * Copyright (c) 2008, Jason C. Derenick and Thomas H. Miller
 * All rights reserved.
 *
 * This software is released under a BSD Open-Source License.
 * See http://sicktoolbox.sourceforge.net
 */

/* Implementation dependencies */
#include <stdlib.h>
#include <string>
#include <vector>
#include <signal.h>
#include <iostream>
#include <sicklms-1.0/SickLMS.hh>
#include "gnuplot_i.hpp"

using namespace std;
using namespace SickToolbox;

bool running = true;
void sigintHandler(int signal);

int main(int argc, char * argv[]) {

  string device_str; // Device path of the Sick LMS 2xx
  SickLMS::sick_lms_baud_t desired_baud = SickLMS::SICK_BAUD_38400;

  /* Check for a device path.  If it's not present, print a usage statement. */
  if ((argc != 2 && argc != 3) || (argc == 2 && strcasecmp(argv[1],"--help") == 0)) {
    cout << "Usage: lms_plot_values PATH [BAUD RATE]" << endl
     << "Ex: lms_plot_values /dev/ttyUSB0 9600" << endl;
    return -1;
  }

Comme il le dit, il génère une erreur et tue le programme, disant qu'il veut que je tape "lms_plot_values ​​/dev/ttyUSB0 9600" à partir de la ligne de commande pour exécuter le programme, mais je ne peux pas le faire et je veux le faire. je fais tout dans Eclipse donc je ne veux pas faire ça.J'ai essayé d'ajouter :

argv[1] = "/dev/ttyUSB0";
argv[2] = "9600";

Mais cela n'a pas fonctionné à cause des vérifications argc.Savez-vous s'il dit de transmettre "lms_plot_values ​​/dev/ttyUSB0 9600", pourquoi il s'attendrait ou d'où il obtiendrait les valeurs argc ?Ou comment puis-je faire croire que ces paramètres ont été transmis ?Je ne connais pas très bien le fonctionnement du C++, je n'ai utilisé que Java.

Merci pour toute aide

Était-ce utile?

La solution

Vous pouvez également transmettre des arguments dans Eclipse.Une fois que vous avez construit votre projet, essayez de créer une configuration d'exécution et vous pourrez y transmettre les arguments.Voici la capture d'écran :

enter image description here

enter image description here

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top