example / ui_capno / capnografo.h
capnografo.h
Raw
#ifndef CAPNOGRAFO_H
#define CAPNOGRAFO_H

#include <QObject>
#include <QThread>
#include <QVector>
#include <QSerialPort>
#include <QSerialPortInfo>
#include <QTimer>
#include <QVariantMap>
#include <QList>

class CapnographSerialThread : public QObject
{
    Q_OBJECT
    Q_PROPERTY(double xValue READ xValue NOTIFY xValueChanged)
    Q_PROPERTY(double yValue READ yValue NOTIFY yValueChanged)

public:
    explicit CapnographSerialThread(QObject *parent = nullptr);
    ~CapnographSerialThread();

    void openCapnographSerialPort();
    void closeCapnographSerialPort();
    void readCapnographThread();
    void inicializarSensor();
    void inicializarPaquete84(const QByteArray response);
    void processPacket(QByteArray packet);
    void interpolacionLineal(quint16 realTimeCO2);

    double xValue() const { return m_xValue; }
    double yValue() const { return m_yValue; }

    void startGenerating();
    //Q_INVOKABLE QVariant interpolatePoints(const QList<QVariantMap>& points, int numInterpolatedPoints);
    Q_INVOKABLE QVariantList interpolatePoints(const QList<QMap<QString, QVariant>>& points, int numInterpolatedPoints);

    Q_INVOKABLE QVariantList getCurrentPoints() const;

signals:
    void displayedData(QString co2, QString o2);
    void xValueChanged(double xValue);
    void yValueChanged(double yValue);
    void newDataAvailable(QByteArray data);
    void dataPacket83(quint16 realTimeCO2, quint16 realTimeO2);
    void dataPacket84(quint8 EtCO2, quint8 InsCO2, quint8 AwRR, quint8 EtO2, quint8 InsO2);
    void dataReady(float value);

private slots:
    void handleReadyRead();
    void generateValues();

private:
    QSerialPort *comCapnographController;
    QByteArray receivedData;
    void sendPacket(QByteArray packet);
    QByteArray powerOnHandshake(quint8 command, quint8 data1, quint8 data2, quint8 data3, quint8 data4, quint8 data5);
    void processHandshakeResponse(QByteArray response);
    QTimer m_timer;
    double m_xValue;
    double m_yValue;
    double m_iXval;
    double m_iYval;
    QList<QVariantMap> m_points;
    //QTimer *timer;
};

#endif // CAPNOGRAFO_H