From 9142382a610aaca5cf3d563c8f77a990232d7270 Mon Sep 17 00:00:00 2001 From: Teuniz Date: Wed, 3 Jun 2015 20:16:59 +0200 Subject: [PATCH] Work in progress. --- global.h | 3 ++ interface.cpp | 67 +++++++++++++++++++++++++ mainwindow.cpp | 47 ++++++++++++++++++ mainwindow.h | 13 ++++- signalcurve.cpp | 119 +++++++++++++++++++++++++++++---------------- timer_handlers.cpp | 17 +++++++ 6 files changed, 221 insertions(+), 45 deletions(-) diff --git a/global.h b/global.h index a8e709e..0402bf8 100644 --- a/global.h +++ b/global.h @@ -121,6 +121,9 @@ struct device_settings int displaygrid; // 0=none, 1=half, 2=full + int countersrc; // 0=off, 1=ch1, 2=ch2, 3=ch3, 4=ch4 + double counterfreq; // Value of frequency counter + char *screenshot_buf; char *wavebuf[MAX_CHNS]; diff --git a/interface.cpp b/interface.cpp index f9fac96..a871a26 100644 --- a/interface.cpp +++ b/interface.cpp @@ -1609,6 +1609,73 @@ void UI_Mainwindow::horScaleDialClicked(QPoint) } +void UI_Mainwindow::measureButtonClicked() +{ + QMenu menu, + submenucounter; + + submenucounter.setTitle("Counter"); + submenucounter.addAction("OFF", this, SLOT(counter_off())); + submenucounter.addAction("CH1", this, SLOT(counter_ch1())); + if(devparms.channel_cnt > 1) + { + submenucounter.addAction("CH2", this, SLOT(counter_ch2())); + } + if(devparms.channel_cnt > 2) + { + submenucounter.addAction("CH3", this, SLOT(counter_ch3())); + } + if(devparms.channel_cnt > 3) + { + submenucounter.addAction("CH4", this, SLOT(counter_ch4())); + } + + menu.addMenu(&submenucounter); + + menu.exec(measureButton->mapToGlobal(QPoint(0,0))); +} + + +void UI_Mainwindow::counter_off() +{ + devparms.countersrc = 0; + + tmcdev_write(device, ":MEAS:COUN:SOUR OFF"); +} + + +void UI_Mainwindow::counter_ch1() +{ + devparms.countersrc = 1; + + tmcdev_write(device, ":MEAS:COUN:SOUR CHAN1"); +} + + +void UI_Mainwindow::counter_ch2() +{ + devparms.countersrc = 2; + + tmcdev_write(device, ":MEAS:COUN:SOUR CHAN2"); +} + + +void UI_Mainwindow::counter_ch3() +{ + devparms.countersrc = 3; + + tmcdev_write(device, ":MEAS:COUN:SOUR CHAN3"); +} + + +void UI_Mainwindow::counter_ch4() +{ + devparms.countersrc = 4; + + tmcdev_write(device, ":MEAS:COUN:SOUR CHAN4"); +} + + void UI_Mainwindow::trigModeButtonClicked() { devparms.triggersweep++; diff --git a/mainwindow.cpp b/mainwindow.cpp index 28452f1..f41a980 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -216,6 +216,13 @@ UI_Mainwindow::UI_Mainwindow() horPosDial->setMinimum(0); horPosDial->setContextMenuPolicy(Qt::CustomContextMenu); + quickGrpBox = new QGroupBox("Quick", DPRwidget); + quickGrpBox->setGeometry(195, 190, 70, 90); + + measureButton = new QPushButton(quickGrpBox); + measureButton->setGeometry(15, 30, 40, 18); + measureButton->setText("MEAS"); + verticalGrpBox = new QGroupBox("Vertical", DPRwidget); verticalGrpBox->setGeometry(5, 290, 140, 255); @@ -621,6 +628,7 @@ void UI_Mainwindow::open_connection() connect(dispButton, SIGNAL(clicked()), this, SLOT(dispButtonClicked())); connect(utilButton, SIGNAL(clicked()), this, SLOT(utilButtonClicked())); connect(helpButton, SIGNAL(clicked()), this, SLOT(helpButtonClicked())); + connect(measureButton, SIGNAL(clicked()), this, SLOT(measureButtonClicked())); connect(horPosDial, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(horPosDialClicked(QPoint))); connect(vertOffsetDial, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(vertOffsetDialClicked(QPoint))); @@ -707,6 +715,7 @@ void UI_Mainwindow::close_connection() disconnect(dispButton, SIGNAL(clicked()), this, SLOT(dispButtonClicked())); disconnect(utilButton, SIGNAL(clicked()), this, SLOT(utilButtonClicked())); disconnect(helpButton, SIGNAL(clicked()), this, SLOT(helpButtonClicked())); + disconnect(measureButton, SIGNAL(clicked()), this, SLOT(measureButtonClicked())); disconnect(horPosDial, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(horPosDialClicked(QPoint))); disconnect(vertOffsetDial, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(vertOffsetDialClicked(QPoint))); @@ -1648,6 +1657,44 @@ int UI_Mainwindow::get_device_settings() goto OUT_ERROR; } + if(tmcdev_write(device, ":MEAS:COUN:SOUR?") != 16) + { + line = __LINE__; + goto OUT_ERROR; + } + + if(tmcdev_read(device) < 1) + { + line = __LINE__; + goto OUT_ERROR; + } + + if(!strcmp(device->buf, "OFF")) + { + devparms.countersrc = 0; + } + else if(!strcmp(device->buf, "CHAN1")) + { + devparms.countersrc = 1; + } + else if(!strcmp(device->buf, "CHAN2")) + { + devparms.countersrc = 2; + } + else if(!strcmp(device->buf, "CHAN3")) + { + devparms.countersrc = 3; + } + else if(!strcmp(device->buf, "CHAN4")) + { + devparms.countersrc = 4; + } + else + { + line = __LINE__; + goto OUT_ERROR; + } + return 0; OUT_ERROR: diff --git a/mainwindow.h b/mainwindow.h index 4d2b26a..5bf10dd 100644 --- a/mainwindow.h +++ b/mainwindow.h @@ -142,7 +142,8 @@ private: QGroupBox *verticalGrpBox, *horizontalGrpBox, *triggerGrpBox, - *menuGrpBox; + *menuGrpBox, + *quickGrpBox; QPushButton *ch1Button, *ch2Button, @@ -166,7 +167,8 @@ private: *helpButton, *playpauseButton, *stopButton, - *recordButton; + *recordButton, + *measureButton; QDial *adjDial, *horScaleDial, @@ -238,9 +240,16 @@ private slots: void dispButtonClicked(); void utilButtonClicked(); void helpButtonClicked(); + void measureButtonClicked(); void horizontal_delayed(); + void counter_off(); + void counter_ch1(); + void counter_ch2(); + void counter_ch3(); + void counter_ch4(); + void trigger_source_ch1(); void trigger_source_ch2(); void trigger_source_ch3(); diff --git a/signalcurve.cpp b/signalcurve.cpp index 4c2fba6..35dd664 100644 --- a/signalcurve.cpp +++ b/signalcurve.cpp @@ -216,57 +216,57 @@ void SignalCurve::drawWidget(QPainter *painter, int curve_w, int curve_h) } } - painter->setPen(RasterColor); + painter->setPen(RasterColor); - step = curve_w / 70.0; + step = curve_w / 70.0; - for(i=1; i<70; i++) + for(i=1; i<70; i++) + { + step2 = step * i; + + if(devparms->displaygrid) { - step2 = step * i; - - if(devparms->displaygrid) - { - painter->drawLine(step2, curve_h / 2 + 2, step2, curve_h / 2 - 2); - } - - if(i % 5) - { - painter->drawLine(step2, curve_h - 1, step2, curve_h - 5); - - painter->drawLine(step2, 0, step2, 4); - } - else - { - painter->drawLine(step2, curve_h - 1, step2, curve_h - 9); - - painter->drawLine(step2, 0, step2, 8); - } + painter->drawLine(step2, curve_h / 2 + 2, step2, curve_h / 2 - 2); } - step = curve_h / 40.0; - - for(i=1; i<40; i++) + if(i % 5) { - step2 = step * i; + painter->drawLine(step2, curve_h - 1, step2, curve_h - 5); - if(devparms->displaygrid) - { - painter->drawLine(curve_w / 2 + 2, step2, curve_w / 2 - 2, step2); - } - - if(i % 5) - { - painter->drawLine(curve_w - 1, step2, curve_w - 5, step2); - - painter->drawLine(0, step2, 4, step2); - } - else - { - painter->drawLine(curve_w - 1, step2, curve_w - 9, step2); - - painter->drawLine(0, step2, 8, step2); - } + painter->drawLine(step2, 0, step2, 4); } + else + { + painter->drawLine(step2, curve_h - 1, step2, curve_h - 9); + + painter->drawLine(step2, 0, step2, 8); + } + } + + step = curve_h / 40.0; + + for(i=1; i<40; i++) + { + step2 = step * i; + + if(devparms->displaygrid) + { + painter->drawLine(curve_w / 2 + 2, step2, curve_w / 2 - 2, step2); + } + + if(i % 5) + { + painter->drawLine(curve_w - 1, step2, curve_w - 5, step2); + + painter->drawLine(0, step2, 4, step2); + } + else + { + painter->drawLine(curve_w - 1, step2, curve_w - 9, step2); + + painter->drawLine(0, step2, 8, step2); + } + } if(devparms == NULL) { @@ -427,6 +427,39 @@ void SignalCurve::drawWidget(QPainter *painter, int curve_w, int curve_h) } } + if(devparms->countersrc) + { + char str[128]; + + QPainterPath path; + + path.addRoundedRect(600, 20, 122, 20, 3, 3); + + painter->fillPath(path, Qt::black); + + painter->setPen(Qt::darkGray); + + painter->drawRoundedRect(600, 20, 122, 20, 3, 3); + + path = QPainterPath(); + + path.addRoundedRect(604, 23, 14, 14, 3, 3); + + painter->fillPath(path, SignalColor[devparms->countersrc - 1]); + + painter->setPen(Qt::black); + + painter->drawLine(607, 26, 615, 26); + + painter->drawLine(611, 26, 611, 34); + + painter->setPen(Qt::white); + + sprintf(str, "%.3f Hz", devparms->counterfreq); + + painter->drawText(622, 20, 100, 20, Qt::AlignCenter, str); + } + // clk_end = clock(); // // cpu_time_used += ((double) (clk_end - clk_start)) / CLOCKS_PER_SEC; diff --git a/timer_handlers.cpp b/timer_handlers.cpp index bc5fc66..96958bc 100644 --- a/timer_handlers.cpp +++ b/timer_handlers.cpp @@ -219,6 +219,23 @@ void UI_Mainwindow::stat_timer_handler() devparms.memdepth = atoi(device->buf); + if(devparms.countersrc) + { + if(tmcdev_write(device, ":MEAS:COUN:VAL?") != 15) + { + line = __LINE__; + goto OUT_ERROR; + } + + if(tmcdev_read(device) < 1) + { + line = __LINE__; + goto OUT_ERROR; + } + + devparms.counterfreq = atof(device->buf); + } + // if(old_stat != devparms.triggerstatus) // { // printf("Status change: %i\n", devparms.triggerstatus);