2011-12-05 35 views
11

Tôi đang sử dụng chương trình mẫu từ mã này http://sicktoolbox.sourceforge.net/>http://sourceforge.net/projects/sicktoolbox/files/. Về cơ bản nó là một trình điều khiển máy quét khoảng cách. Chương trình mà tôi đang cố gắng chạy nằm trong thư mục robotstoolbox-1.0.1/C++/examples/lms/lms_plot_values ​​trong trường hợp bạn muốn xem mã tôi đang nói đến.Đối số dòng lệnh C++ Eclipse CDT?

Dù sao, thư mục dự án lms_plot_values ​​chứa gnuplot_i.cc, gnuplot_i.hpp, main.cc, Makefile, Makefile.am, Makefile.in. Vì vậy, tôi đặt ba tệp đầu tiên trong Eclipse Indigo CDT, biên dịch (không có lỗi trình biên dịch, mọi thứ được liên kết chính xác trong Eclipse và tất cả các thư viện cần thiết được thêm vào), nhưng chương trình mẫu này được viết để lấy các đối số dòng lệnh. Đây là như xa như mã được.

/*! 
* \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; 
    } 

Như nó nói, nó ném một lỗi và giết chết chương trình, nói rằng nó muốn tôi gõ "lms_plot_values ​​/ dev/ttyUSB0 9600" từ dòng lệnh để chạy chương trình, nhưng tôi không thể làm điều đó và tôi muốn làm mọi thứ trong nhật thực nên tôi không muốn làm điều đó. Tôi đã thử thêm:

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

Nhưng điều đó không hiệu quả do kiểm tra của argc. Bạn có biết nếu nó nói để vượt qua trong "lms_plot_values ​​/ dev/ttyUSB0 9600", tại sao nó sẽ được mong đợi hoặc nơi nó sẽ nhận được các giá trị argc từ? Hoặc làm thế nào tôi có thể làm cho nó nghĩ rằng các thông số này đã được thông qua? Tôi không phải là rất quen thuộc với cách C + + hoạt động như thế này, tôi đã chỉ được sử dụng Java.

Cảm ơn bạn đã giúp đỡ

Trả lời

18

Bạn cũng có thể chuyển đối số trong nhật thực. Một khi bạn xây dựng dự án của bạn, hãy thử tạo một cấu hình chạy và ở đó bạn có thể vượt qua các đối số. Dưới đây là ảnh chụp màn hình:

enter image description here

enter image description here

+0

Đó cố định nó. Wow, cảm ơn bạn rất nhiều! Mọi thứ đều hoạt động tốt. – user1028641

Các vấn đề liên quan