#pragma once #include #include #include #include #include #include #include #include #include #include #include // #include // #include // #include #include // #include "zqthread.hpp" #include "idatachannel.hpp" #define SDK_VERSION 1 namespace iflytop { using namespace std; // QT_CHARTS_USE_NAMESPACE typedef function device_state_cb_t; class QTDataChannel : public IDataChannel { function m_rxcb; QSerialPort::DataBits m_dataBits; QSerialPort::Parity m_parity; QSerialPort::StopBits m_stopBits; QSerialPort::FlowControl m_flowControl; string m_name; unique_ptr m_thread; uint32_t m_baudRate; HANDLE m_CommHandler; bool m_isOpen = false; public: void init(); virtual bool isOpen() override; virtual bool send(const uint8_t *data, size_t len) override; virtual void regRxListener(function cb) override; bool open(); void close(); void setBaudRate(qint32 baudRate) { m_baudRate = baudRate; } qint32 baudRate() const { return m_baudRate; } void setPortName(string name) { m_name = name; } void setDataBits(QSerialPort::DataBits dataBits) { m_dataBits = dataBits; } void setParity(QSerialPort::Parity parity) { m_parity = parity; } void setStopBits(QSerialPort::StopBits stopBits) { m_stopBits = stopBits; } void setFlowControl(QSerialPort::FlowControl flowControl) { m_flowControl = flowControl; } QSerialPort::DataBits dataBits() const { return m_dataBits; } QSerialPort::Parity parity() const { return m_parity; } QSerialPort::StopBits stopBits() const { return m_stopBits; } QSerialPort::FlowControl flowControl() const { return m_flowControl; } private: int com_receive(uint8_t *rxbuf, int rxbufsize); }; } // namespace iflytop