123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111 |
- #ifndef _OscilloscopeData_H_
- #define _OscilloscopeData_H_
- #include <QObject>
- #include <QMap>
- #include "USBInterFace.h"
- #include "spdlog/spdlog.h"
- #include "GlobalInfo.h"
- #include "RingQueue/RingQueue.hpp"
- #define OscData OscilloscopeData::getInstance()
- class OscilloscopeData : public QObject
- {
- Q_OBJECT
- const uint32_t BUFFER_SIZE = 1024 * 128 ;
- private:
- OscilloscopeData();
- OscilloscopeData(const OscilloscopeData&) = delete;
- OscilloscopeData& operator=(const OscilloscopeData&) = delete;
- public:
- ~OscilloscopeData();
- static OscilloscopeData& getInstance()
- {
- static OscilloscopeData instance;
- return instance;
- }
-
- void initOsc();
-
- bool openOSC();
-
- void closeOSC();
-
- bool isOpen() { return m_isOpen; }
-
- bool startCapture();
-
- void stopCapture();
-
-
- void setSampleRate(OscSampleRate rate);
-
- void setChannelMerge(bool merge);
-
- void setChannelARange(OscChannelRange range);
-
- void setChannelBRange(OscChannelRange range);
-
- void setChannelCoupling(OscChannel channel, OscChannelCoupling coupling);
-
- void setChannelATrigger(bool enable);
-
- void setExternalTrigger(bool enable);
-
- void setTriggerMode(OscTriggerMode mode);
-
- void setTriggerLevel(unsigned char level);
-
- void setTriggerSensitivity(OscTriggerSensitivity sensitivity);
-
- void setTriggerPosition(unsigned char lowByte, unsigned char highByte);
-
- void getZeroVoltage();
-
- void printZeroVoltage(OscChannel channel);
-
- void getVoltageCalibration();
-
- void printVoltageCalibration(OscChannel channel);
- private:
-
- void threadCaptureData();
-
- void threadProcessData();
- private:
- std::shared_ptr<spdlog::logger> m_logger = nullptr;
- std::shared_ptr<USBInterface> m_usbInterface = nullptr;
- std::atomic_bool m_isOpen = false;
- std::atomic_bool m_runCapture = false;
- std::atomic_bool m_isRunCapture = false;
- std::atomic_bool m_isCaptureData = false;
- std::mutex m_mutexCaptureData;
- unsigned char* m_devBuffer = nullptr;
- unsigned char* m_buffer = nullptr;
- unsigned char* m_bufferChnA = nullptr;
- unsigned char* m_bufferChnB = nullptr;
- RingQueue<unsigned char*> m_ringQueue;
- unsigned char m_ctrlByte0 = 0;
- unsigned char m_ctrlByte1 = 0;
- QMap<OscChannelRange, unsigned char> m_mapChAZeroVoltage;
- QMap<OscChannelRange, unsigned char> m_mapChBZeroVoltage;
- QMap<OscChannelRange, unsigned char> m_mapChAVoltageCalibration;
- QMap<OscChannelRange, unsigned char> m_mapChBVoltageCalibration;
- };
- #endif
|