oscwidget.cpp 3.2 KB

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