Implement reading sensor values

This commit is contained in:
BlackMark 2020-07-05 00:36:53 +02:00
parent 6244f6f8ae
commit 728cb50a1e
2 changed files with 23 additions and 1 deletions

View File

@ -33,7 +33,14 @@ std::pair<int, int> SensorDriver::Sensor::readRange() const
std::vector<int> SensorDriver::Sensor::readValues() const std::vector<int> SensorDriver::Sensor::readValues() const
{ {
return {520, 1233, 4233}; qDebug(ltr("Reading values of sensor on port %1").arg(m_serialPortName));
const auto readCmd = QByteArray(READ_CMD.data(), static_cast<int>(READ_CMD.size()));
QByteArray response;
if(!getSensorCommandResponse(m_serialPortName, readCmd, response))
return {};
return parseReadResponse(response);
} }
std::pair<int, int> SensorDriver::Sensor::parseRangeResponse(const QByteArray& response) const std::pair<int, int> SensorDriver::Sensor::parseRangeResponse(const QByteArray& response) const
@ -50,6 +57,20 @@ std::pair<int, int> SensorDriver::Sensor::parseRangeResponse(const QByteArray& r
return {-1, -1}; return {-1, -1};
} }
std::vector<int> SensorDriver::Sensor::parseReadResponse(const QByteArray& response) const
{
const auto readRegex = std::regex("([0-9]+),([0-9]+),([0-9]+)");
const auto strResponse = response.toStdString();
std::smatch readMatch;
if(std::regex_search(strResponse, readMatch, readRegex)) {
qDebug(ltr("Found read response: '%1'").arg(QString().fromStdString(readMatch[0].str())));
return {std::stoi(readMatch[1]), std::stoi(readMatch[2]), std::stoi(readMatch[3])};
}
return {};
}
SensorDriver::SensorDriver() SensorDriver::SensorDriver()
{ {
qDebug("Initializing sensor driver"); qDebug("Initializing sensor driver");

View File

@ -20,6 +20,7 @@ class SensorDriver {
QString m_serialPortName; QString m_serialPortName;
std::pair<int, int> parseRangeResponse(const QByteArray& response) const; std::pair<int, int> parseRangeResponse(const QByteArray& response) const;
std::vector<int> parseReadResponse(const QByteArray& response) const;
}; };
public: public: