首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >LibSerial C++代码在没有Cutecom的情况下无法运行

LibSerial C++代码在没有Cutecom的情况下无法运行
EN

Stack Overflow用户
提问于 2013-11-03 10:44:09
回答 1查看 539关注 0票数 0

我正在尝试通过串口从Ubuntu12.04到一个使用libserial的ATxmega板上进行通信。我遇到的问题是,除非我先运行cutecom,否则我的代码无法运行。除非我先运行cutecom,否则我的程序就会死机,不会输出任何东西。我已经尝试了几种方法,比如让我的sudo访问ttyUSB0,将我的用户添加到对话组中。以su身份运行它。我还尝试添加了VTime和VMin,但没有成功。neither.Here是我的代码,程序不会离开它,它似乎从来没有进入while(ros::ok())循环。我正在使用ros,但它在这里应该没有效果。我正试图以十分之一秒的速率与董事会进行来回交流。

代码语言:javascript
复制
#include "ros/ros.h"

#include <SerialStream.h>
#include <iostream>
#include <math.h>

using namespace LibSerial;

SerialStream mySerial;

void processSonar(char read[]);
char motor[] = {'s','3','6','0','0'};
unsigned int writeServo = 3600;

int main(int argc, char ** argv) 
{
    ros::init(argc, argv, "mySerial");
    ros::NodeHandle n;
    std::string serial = "/dev/ttyUSB0";
    mySerial.Open(serial);  
    mySerial.SetBaudRate( SerialStreamBuf::BAUD_57600 );
    mySerial.SetCharSize( SerialStreamBuf::CHAR_SIZE_8 );
    mySerial.SetNumOfStopBits( 1 );
    mySerial.SetParity( SerialStreamBuf::PARITY_NONE );
    mySerial.SetFlowControl( SerialStreamBuf::FLOW_CONTROL_NONE );
    mySerial.SetVTime( 1 );
    mySerial.SetVMin( 60 );

    while(!mySerial.IsOpen()){
        mySerial.Open(serial);  
        std::cout << "trying to open port" << std::endl;
        usleep(100000);
    }

//      if(!mySerial.good()){
//      std::cerr   << "Serial not Good"
//              << std::endl;
//      exit(1);
//      }

    char read[12];
    char* SerialP = read;
    char* motorP = motor;

    while(ros::ok())
    {
        mySerial.write(motorP, sizeof(motor));

        if(mySerial.rdbuf()->in_avail() > 0)
        {
            mySerial.read(SerialP, sizeof(read));
            std::cout << read << std::endl;
            processSonar(read);
            //std::cout << motor << writeServo << std::endl;
        }

        usleep(100000);
    }

    std::cout << "Communication Failure"<< std::endl;
    return 0;
}
EN

回答 1

Stack Overflow用户

发布于 2013-11-05 05:04:21

我想通了。这并不是我真正的代码。这是因为出于某种原因,modemmanager正在走向成功。我必须拨打sudo apt-get remove modemmanager,然后才能永久地允许我通过sudo usermod -a -G dialout $USER拨出群组。重新启动并像符咒一样工作。希望这对某些人有帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19749322

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档