我正在尝试编写一个库来读取串行设备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),理论上它与代码中设置的选项相同。
提前致谢。