2011-12-05 29 views
11

मैं इस कोड http://sicktoolbox.sourceforge.net/>http://sourceforge.net/projects/sicktoolbox/files/ से एक उदाहरण प्रोग्राम का उपयोग कर रहा हूं। यह मूल रूप से एक दूरी स्कैनर ड्राइवर है। यदि मैं जिस कोड के बारे में बात कर रहा हूं, उसे देखने के लिए मैं जिस प्रोग्राम को चलाने की कोशिश कर रहा हूं वह बीमार टोलबॉक्स-1.0.1/सी ++/उदाहरण/एलएमएस/lms_plot_values ​​में है।सी ++ कमांड लाइन तर्क ग्रहण सीडीटी?

वैसे भी, lms_plot_values ​​प्रोजेक्ट फ़ोल्डर में gnuplot_i.cc, gnuplot_i.hpp, main.cc, Makefile, Makefile.am, Makefile.in शामिल है। तो मैंने अपनी ग्रहण इंडिगो सीडीटी में पहली तीन फाइलें रखीं, संकलित करें (कोई कंपाइलर त्रुटियां नहीं, सबकुछ पहले से ग्रहण में सही ढंग से जुड़ा हुआ है और सभी आवश्यक पुस्तकालय जोड़े गए हैं), लेकिन यह नमूना प्रोग्राम कमांड लाइन तर्क लेने के लिए लिखा गया है। यहां तक ​​कि कोड प्राप्त होने तक है।

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

यह कहते हैं, यह एक त्रुटि फेंकता है और कार्यक्रम को मारता है और कहा कि यह मुझे "lms_plot_values ​​/ dev/ttyUSB0 9600" कमांड लाइन से टाइप करने के लिए कार्यक्रम चलाने के लिए चाहता है, है, लेकिन मैं ऐसा नहीं कर सकते कि , और मैं ग्रहण में सबकुछ करना चाहता हूं इसलिए मैं ऐसा नहीं करना चाहता हूं। मैंने जोड़ने की कोशिश की:

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

लेकिन यह argc चेक के कारण काम नहीं किया। क्या आपको पता है कि यह "lms_plot_values ​​/ dev/ttyUSB0 9600" में गुज़रने के लिए कहता है, तो यह क्यों उम्मीद करेगा या यह कहां से argc मान प्राप्त करेगा? या मैं इसे कैसे सोच सकता हूं कि ये पैरामीटर पारित किए गए थे? मैं इस बारे में बहुत परिचित नहीं हूं कि सी ++ इस तरह कैसे काम करता है, मैंने केवल जावा का उपयोग किया है।

किसी भी मदद

उत्तर

18

तुम भी ग्रहण में तर्क पारित कर सकते हैं के लिए धन्यवाद। एक बार जब आप अपनी परियोजना बनाते हैं, तो रन कॉन्फ़िगरेशन बनाने का प्रयास करें और वहां आप तर्क पारित कर सकते हैं। यहाँ स्क्रीन शॉट है:

enter image description here

enter image description here

+0

कि यह तय हो गई। वाह, बहुत बहुत धन्यवाद! सब कुछ महान काम कर रहा है। – user1028641

संबंधित मुद्दे