#ifndef _OSCDATA_H_ #define _OSCDATA_H_ #include #include "USBInterFace.h" #include "spdlog/spdlog.h" #include "GlobalInfo.h" class OscData : public QObject { Q_OBJECT const uint32_t BUFFER_SIZE = 1024 * 128; /* 缓冲区大小,OSCA02的缓冲区应该是128KB的SRAM */ public: OscData(); ~OscData(); /* 打开示波器 */ bool openOSC(); /* 关闭示波器 */ void closeOSC(); /* 开始采集数据 */ bool startCapture(); /* 停止采集数据 */ void stopCapture(); /***** 设置示波器的功能命令 *****/ /* 设置示波器的采样率 */ void setSampleRate(OscSampleRate rate); /* 将示波器两个通道合并为一个通道 */ void setChannelMerge(bool merge); /* 设置通道A输入量程 */ void setChannelARange(unsigned char range); private: /* 采集数据,这个是子线程 */ void threadCaptureData(); private: std::shared_ptr m_logger = nullptr; std::shared_ptr m_usbInterface = nullptr; bool m_runCapture = false; /* 采集数据的线程标志 */ bool m_isRunCapture = false; /* 采集数据的线程运行标志,这个标志位作为线程运行的标志 */ unsigned char* m_devBuffer = nullptr; /* 设备缓冲区指针,拷贝数据用的 */ unsigned char* m_buffer = nullptr; /* 缓冲区指针,用于存储拷贝出来的数据 */ unsigned char m_ctrlByte0 = 0; /* 控制字节0 */ unsigned char m_ctrlByte1 = 0; /* 控制字节1 */ }; #endif /* _OSCDATA_H_ */