oscwidget.cpp 3.4 KB

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