1

我正在尝试编写一个库来从串行设备Mipex-02 气体传感器读取数据。不幸的是,我的代码似乎没有正确打开串行连接,我不知道为什么。

完整的源代码在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 个停止位,无奇偶校验

所以一开始我用interceptty来测试它,它工作得非常好。但是当我尝试直接连接到设备时,我什么也看不到。设备上的 RX LED 闪烁如此清晰,程序设法发送了一些东西,但是 - 与拦截不同 - TX LED 从不闪烁。

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

提前致谢。

4

0 回答 0