无法从串行设备读取

时间:2015-10-08 10:58:05

标签: c++ serial-port uart libserial

我正在尝试编写一个库来读取串行设备Mipex-02 gas sensor中的数据。不幸的是,我的代码似乎没有正确打开串行连接,我无法弄清楚原因。

github上提供了完整的源代码,具体来说,这是串行连接的配置:

    MipexSensor::MipexSensor(string devpath) {
        if (!check_dev_path(devpath))
            throw "Invalid devpath";
        this->path = devpath;
        this->debugout_ = false;
        this->sensor.SetBaudRate(SerialStreamBuf::BAUD_9600);
        this->sensor.SetCharSize(SerialStreamBuf::CHAR_SIZE_8);
        this->sensor.SetNumOfStopBits(1);
        this->sensor.SetParity(SerialStreamBuf::PARITY_NONE);
        this->sensor.SetFlowControl(SerialStreamBuf::FLOW_CONTROL_NONE);
        this->last_concentration = this->last_um = this->last_ur = this->last_status = 0;
        cout << "Connecting to "<< devpath << endl;
        this->sensor.Open(devpath);
    }

我认为这里的枚举含义非常明显。值来自说明手册:

  

UART特性:   汇率 - 9600波特,   8位消息,   1站点,   没有检查奇偶校验

所以起初我使用了拦截来测试它,它工作得非常好。但是当我试图直接连接到设备时,我无法读取任何内容。 RX LED在设备上闪烁,因此程序可以清楚地发送一些东西,但是不喜欢拦截 - TX LED永远不会闪烁。

所以我不知道它是否错误地发送数据,如果它没有发送所有数据,我甚至无法嗅探连接,因为它只会在拦截时发生不在中间。 Interceptty的命令行是interceptty -s 'ispeed 9600 ospeed 9600 -parenb -cstopb -ixon cs8' -l /dev/ttyUSB0(-s选项传递给stty),理论上它与代码中设置的选项相同。

提前致谢。

0 个答案:

没有答案