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 ストップ ビット、パリティ チェックなし

そのため、最初は傍受を使用してテストしていましたが、完全に正常に機能しました。しかし、デバイスに直接接続しようとすると、何も読み取れませんでした。デバイスの RX LED が点滅するので、明らかにプログラムが何かを送信できますが、インターセプトとは異なり、TX LED は決して点滅しません。

したがって、データが正しく送信されていないかどうか、すべてが送信されていないかどうかはわかりません。傍受が途中ではない場合にのみ発生するため、接続を盗聴することさえできません。Interceptty のコマンドラインはinterceptty -s 'ispeed 9600 ospeed 9600 -parenb -cstopb -ixon cs8' -l /dev/ttyUSB0(-s オプションが stty に渡されます) であり、理論的にはコードで設定されているオプションと同じです。

前もって感謝します。

4

0 に答える 0