oscwidget.cpp 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. #include "oscwidget.h"
  2. #include "ui_oscwidget.h"
  3. #include "OscData.h"
  4. #include <QPainter>
  5. OscWidget::OscWidget(QWidget *parent) :
  6. QWidget(parent),
  7. ui(new Ui::OscWidget)
  8. {
  9. ui->setupUi(this);
  10. m_logger = spdlog::get("OSC");
  11. if(m_logger == nullptr)
  12. {
  13. SPDLOG_ERROR("获取 OSC logger 失败");
  14. return;
  15. }
  16. /* 自定义大小 */
  17. // setFixedSize(1920, 1080);
  18. /* 设置眼图窗口 */
  19. m_eyeMap = new EyeMap(ui->widget_display);
  20. /* 添加下拉框的选项 */
  21. ui->comboBox_time->addItem("0.05us");
  22. ui->comboBox_time->addItem("0.1us");
  23. ui->comboBox_time->addItem("0.2us");
  24. ui->comboBox_time->addItem("0.5us");
  25. ui->comboBox_time->addItem("1us");
  26. ui->comboBox_time->addItem("2us");
  27. ui->comboBox_time->addItem("5us");
  28. ui->comboBox_time->addItem("10us");
  29. ui->comboBox_time->addItem("20us");
  30. m_mapTime.insert("0.05us", 50);
  31. m_mapTime.insert("0.1us", 100);
  32. m_mapTime.insert("0.2us", 200);
  33. m_mapTime.insert("0.5us", 500);
  34. m_mapTime.insert("1us", 1000);
  35. m_mapTime.insert("2us", 2000);
  36. m_mapTime.insert("5us", 5000);
  37. m_mapTime.insert("10us", 10000);
  38. m_mapTime.insert("20us", 20000);
  39. SPDLOG_LOGGER_INFO(m_logger, "EyeMap 初始化成功");
  40. OscData.initOsc();
  41. if(OscData.openOSC())
  42. {
  43. SPDLOG_LOGGER_INFO(m_logger, "打开示波器成功");
  44. } else {
  45. SPDLOG_LOGGER_ERROR(m_logger, "打开示波器失败");
  46. return;
  47. }
  48. /* 获取零电压值 */
  49. OscData.printZeroVoltage(OscChannel::CH_A);
  50. OscData.printZeroVoltage(OscChannel::CH_B);
  51. /* 获取电压校准系数 */
  52. OscData.printVoltageCalibration(OscChannel::CH_A);
  53. OscData.printVoltageCalibration(OscChannel::CH_B);
  54. /* 设置示波器参数 */
  55. // OscData.setExternalTrigger(false);
  56. // OscData.setTriggerPosition(0, 0); /* 在中间位置触发 */
  57. OscData.setSampleRate(OscSampleRate::SR_100MHZ);
  58. OscData.setChannelARange(OscChannelRange::CR_5V);
  59. // OscData.setChannelATrigger(true);
  60. // OscData.setChannelCoupling(OscChannel::CH_A, OscChannelCoupling::DC);
  61. // OscData.setChannelCoupling(OscChannel::CH_B, OscChannelCoupling::DC);
  62. // OscData.setTriggerMode(OscTriggerMode::TM_RISE);
  63. // OscData.setTriggerLevel(150);
  64. // OscData.setTriggerSensitivity(OscTriggerSensitivity::TS_HIGH);
  65. // OscData.startCapture();
  66. }
  67. OscWidget::~OscWidget()
  68. {
  69. if(OscData.isOpen())
  70. {
  71. OscData.closeOSC();
  72. }
  73. delete ui;
  74. }
  75. void OscWidget::on_pBtn_startCap_clicked()
  76. {
  77. SPDLOG_LOGGER_INFO(m_logger, "开始采集数据");
  78. OscParams.oneGridTime = m_mapTime[ui->comboBox_time->currentText()];
  79. OscData.startCapture();
  80. }
  81. void OscWidget::on_pBtn_resetCap_clicked()
  82. {
  83. SPDLOG_LOGGER_INFO(m_logger, "重新采集数据");
  84. OscData.stopCapture();
  85. g_eyeMapMatrix.initEyeMapData(ui->widget_display->width(), ui->widget_display->height());
  86. g_eyeDataMatrix.initEyeData();
  87. update();
  88. OscParams.oneGridTime = m_mapTime[ui->comboBox_time->currentText()];
  89. OscData.startCapture();
  90. }
  91. void OscWidget::on_pBtn_stopCap_clicked()
  92. {
  93. SPDLOG_LOGGER_INFO(m_logger, "停止采集");
  94. OscData.stopCapture();
  95. update();
  96. }
  97. /**
  98. * @brief 绘制刻度
  99. *
  100. */
  101. void OscWidget::paintEvent(QPaintEvent *event)
  102. {
  103. QPainter painter(this);
  104. }