OscData.h 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. #ifndef _OSCDATA_H_
  2. #define _OSCDATA_H_
  3. #include <QObject>
  4. #include "USBInterFace.h"
  5. #include "spdlog/spdlog.h"
  6. #include "GlobalInfo.h"
  7. class OscData : public QObject
  8. {
  9. Q_OBJECT
  10. const uint32_t BUFFER_SIZE = 1024 * 128; /* 缓冲区大小,OSCA02的缓冲区应该是128KB的SRAM */
  11. public:
  12. OscData();
  13. ~OscData();
  14. /* 打开示波器 */
  15. bool openOSC();
  16. /* 关闭示波器 */
  17. void closeOSC();
  18. /* 开始采集数据 */
  19. bool startCapture();
  20. /* 停止采集数据 */
  21. void stopCapture();
  22. /***** 设置示波器的功能命令 *****/
  23. /* 设置示波器的采样率 */
  24. void setSampleRate(OscSampleRate rate);
  25. /* 将示波器两个通道合并为一个通道 */
  26. void setChannelMerge(bool merge);
  27. /* 设置通道A输入量程 */
  28. void setChannelARange(unsigned char range);
  29. private:
  30. /* 采集数据,这个是子线程 */
  31. void threadCaptureData();
  32. private:
  33. std::shared_ptr<spdlog::logger> m_logger = nullptr;
  34. std::shared_ptr<USBInterface> m_usbInterface = nullptr;
  35. bool m_runCapture = false; /* 采集数据的线程标志 */
  36. bool m_isRunCapture = false; /* 采集数据的线程运行标志,这个标志位作为线程运行的标志 */
  37. unsigned char* m_devBuffer = nullptr; /* 设备缓冲区指针,拷贝数据用的 */
  38. unsigned char* m_buffer = nullptr; /* 缓冲区指针,用于存储拷贝出来的数据 */
  39. unsigned char m_ctrlByte0 = 0; /* 控制字节0 */
  40. unsigned char m_ctrlByte1 = 0; /* 控制字节1 */
  41. };
  42. #endif /* _OSCDATA_H_ */