From c50fa83bfd137b6b5aa7f9c1e4c310ddde75e585 Mon Sep 17 00:00:00 2001 From: Timothy Pearson Date: Sat, 14 Jul 2012 17:13:49 -0500 Subject: [PATCH] Add profiling to scope trace grabber --- clients/tde/src/part/scope/part.cpp | 27 ++++++++------ clients/tde/src/widgets/tracewidget.cpp | 5 +-- clients/tde/src/widgets/tracewidget.h | 4 +-- .../gpib_server_lin/src/scope_functions.cpp | 36 +++++++++++++++++++ 4 files changed, 57 insertions(+), 15 deletions(-) diff --git a/clients/tde/src/part/scope/part.cpp b/clients/tde/src/part/scope/part.cpp index a3400c4..387c901 100644 --- a/clients/tde/src/part/scope/part.cpp +++ b/clients/tde/src/part/scope/part.cpp @@ -623,10 +623,10 @@ void ScopePart::mainEventLoop() { if (result == "ACK") { // Update display widget(s) - m_traceWidget->setSamples(m_currentOpChannel, trace); - m_base->traceZoomWidget->setSamples(m_currentOpChannel, trace); - m_traceWidget->setPositions(m_currentOpChannel, positions); - m_base->traceZoomWidget->setPositions(m_currentOpChannel, positions); + m_traceWidget->setSamples(m_currentOpChannel-1, trace); + m_base->traceZoomWidget->setSamples(m_currentOpChannel-1, trace); + m_traceWidget->setPositions(m_currentOpChannel-1, positions); + m_base->traceZoomWidget->setPositions(m_currentOpChannel-1, positions); postProcessTrace(); m_traceWidget->repaint(true); m_base->traceZoomWidget->repaint(true); @@ -733,16 +733,21 @@ void ScopePart::updateGraticule() { m_base->traceZoomWidget->setNumberOfHorizontalDivisions(m_hdivs); m_base->traceZoomWidget->setNumberOfVerticalDivisions(m_vdivs); + m_traceWidget->setTraceColor(0, TQColor(255, 255, 255)); + m_traceWidget->setTraceColor(1, TQColor(0, 255, 0)); + m_traceWidget->setTraceColor(2, TQColor(255, 255, 0)); + m_traceWidget->setTraceColor(3, TQColor(64, 64, 255)); + for (int traceno=1; traceno<=m_maxNumberOfTraces; traceno++) { - m_traceWidget->setTraceEnabled(traceno, m_channelActive[traceno]); - m_traceWidget->setTraceName(traceno, TQString("Channel %1").arg(traceno)); - m_traceWidget->setTraceHorizontalUnits(traceno, "s"); - m_traceWidget->setTraceVerticalUnits(traceno, "V"); + m_traceWidget->setTraceEnabled(traceno-1, m_channelActive[traceno]); + m_traceWidget->setTraceName(traceno-1, TQString("Channel %1").arg(traceno)); + m_traceWidget->setTraceHorizontalUnits(traceno-1, "s"); + m_traceWidget->setTraceVerticalUnits(traceno-1, "V"); - m_traceWidget->setNumberOfSamples(traceno, m_samplesInTrace[traceno]); - m_base->traceZoomWidget->setNumberOfSamples(traceno, m_samplesInTrace[traceno]); + m_traceWidget->setNumberOfSamples(traceno-1, m_samplesInTrace[traceno]); + m_base->traceZoomWidget->setNumberOfSamples(traceno-1, m_samplesInTrace[traceno]); - m_traceWidget->setDisplayLimits(traceno, TQRectF(0.0, (m_voltsDiv[traceno]*m_vdivs)/2.0, (m_secsDiv[traceno]*m_hdivs), (m_voltsDiv[traceno]*m_vdivs)/-2.0)); + m_traceWidget->setDisplayLimits(traceno-1, TQRectF(0.0, (m_voltsDiv[traceno]*m_vdivs)/2.0, (m_secsDiv[traceno]*m_hdivs), (m_voltsDiv[traceno]*m_vdivs)/-2.0)); printf("[RAJA DEBUG 700.0] m_voltsDiv[%d]: %f m_vdivs: %d m_secsDiv[%d]: %f m_hdivs: %d\n\r", traceno, m_voltsDiv[traceno], m_vdivs, traceno, m_secsDiv[traceno], m_hdivs); fflush(stdout); } diff --git a/clients/tde/src/widgets/tracewidget.cpp b/clients/tde/src/widgets/tracewidget.cpp index 911bf70..b814e43 100644 --- a/clients/tde/src/widgets/tracewidget.cpp +++ b/clients/tde/src/widgets/tracewidget.cpp @@ -667,6 +667,7 @@ void TraceWidget::setDisplayLimits(uint traceNumber, TQRectF limits) { m_traceArray[traceNumber]->topEdge = limits.y(); m_traceArray[traceNumber]->bottomEdge = limits.height(); + m_graticuleWidget->updateGraticule(); m_graticuleWidget->repaint(true); updateTraceText(); updateCursorText(); @@ -761,13 +762,13 @@ void TraceWidget::setPositions(uint traceNumber, TQDoubleArray& tqda) { m_graticuleWidget->repaint(true); } -TQColor& TraceWidget::traceColor(uint traceNumber) { +TQColor TraceWidget::traceColor(uint traceNumber) { VERIFY_TRACE_ARRAY_SIZE return m_traceArray[traceNumber]->color; } -void TraceWidget::setTraceColor(uint traceNumber, TQColor& color) { +void TraceWidget::setTraceColor(uint traceNumber, TQColor color) { VERIFY_TRACE_ARRAY_SIZE m_traceArray[traceNumber]->color = color; diff --git a/clients/tde/src/widgets/tracewidget.h b/clients/tde/src/widgets/tracewidget.h index b569074..0536ee9 100644 --- a/clients/tde/src/widgets/tracewidget.h +++ b/clients/tde/src/widgets/tracewidget.h @@ -174,8 +174,8 @@ class TraceWidget : public TQWidget void setSamples(uint traceNumber, TQDoubleArray&); TQDoubleArray& positions(uint traceNumber); void setPositions(uint traceNumber, TQDoubleArray&); - TQColor& traceColor(uint traceNumber); - void setTraceColor(uint traceNumber, TQColor&); + TQColor traceColor(uint traceNumber); + void setTraceColor(uint traceNumber, TQColor); bool traceEnabled(uint traceNumber); void setTraceEnabled(uint traceNumber, bool enabled, bool showText=true); TQString traceName(uint traceNumber); diff --git a/servers/gpib_server_lin/src/scope_functions.cpp b/servers/gpib_server_lin/src/scope_functions.cpp index abfc9e4..b0571d6 100644 --- a/servers/gpib_server_lin/src/scope_functions.cpp +++ b/servers/gpib_server_lin/src/scope_functions.cpp @@ -32,6 +32,8 @@ #include "gpib_functions.h" #include "gpib/ib.h" +#include + #include extern char falpha[1024]; @@ -602,11 +604,21 @@ int scope_perform_initial_setup(const char * scopeType, int gpibDevice) { } } +#define ENABLE_PROFILING + int scope_get_channel_trace(int desired_channel, const char * scopeType, int gpibDevice) { char segarray[4194304]; long array_pointer; long ai; +#ifdef ENABLE_PROFILING +struct timespec tp1, tp2, tp3, tp4, tp5, tp6, tp7; +#endif + +#ifdef ENABLE_PROFILING +clock_gettime(CLOCK_REALTIME, &tp1); +#endif + // Send request printf("[INFO] Getting oscilloscope trace for channel %d [Stage 1]\n\r", desired_channel); if (strcmp("HP54600OS", scopeType) == 0) { @@ -621,11 +633,19 @@ int scope_get_channel_trace(int desired_channel, const char * scopeType, int gpi printf("[DEBG] Writing: %s\n\r", falpha); #endif if (gpib_write(gpibDevice, falpha) == 0) { +#ifdef ENABLE_PROFILING +clock_gettime(CLOCK_REALTIME, &tp2); +printf("[PROFILE] %f s\n\r", ((tp2.tv_nsec+(tp2.tv_sec*1e9))-(tp1.tv_nsec+(tp1.tv_sec*1e9)))/1e9); +#endif sprintf(falpha,"WFMPRE?"); #ifdef ENABLE_EXTRA_DEBUGGING printf("[DEBG] Writing: %s\n\r", falpha); #endif if (gpib_write(gpibDevice, falpha) == 0) { +#ifdef ENABLE_PROFILING +clock_gettime(CLOCK_REALTIME, &tp3); +printf("[PROFILE] %f s\n\r", ((tp3.tv_nsec+(tp3.tv_sec*1e9))-(tp2.tv_nsec+(tp2.tv_sec*1e9)))/1e9); +#endif // Read response #ifdef ENABLE_EXTRA_DEBUGGING printf("[DEBG] Trying to read %i bytes from GPIB device...\n", 65535); @@ -638,6 +658,10 @@ int scope_get_channel_trace(int desired_channel, const char * scopeType, int gpi #ifdef ENABLE_EXTRA_DEBUGGING printf("[DEBG] Read %li bytes from GPIB device\n", ai); #endif +#ifdef ENABLE_PROFILING +clock_gettime(CLOCK_REALTIME, &tp4); +printf("[PROFILE] %f s\n\r", ((tp4.tv_nsec+(tp4.tv_sec*1e9))-(tp3.tv_nsec+(tp3.tv_sec*1e9)))/1e9); +#endif TQString preamble(segarray); TQStringList resultPairs = TQStringList::split(";", preamble, FALSE); // Find/initialize critical data values @@ -663,6 +687,10 @@ int scope_get_channel_trace(int desired_channel, const char * scopeType, int gpi printf("[DEBG] Writing: %s\n\r", falpha); #endif if (gpib_write(gpibDevice, falpha) == 0) { +#ifdef ENABLE_PROFILING +clock_gettime(CLOCK_REALTIME, &tp5); +printf("[PROFILE] %f s\n\r", ((tp5.tv_nsec+(tp5.tv_sec*1e9))-(tp4.tv_nsec+(tp4.tv_sec*1e9)))/1e9); +#endif #ifdef ENABLE_EXTRA_DEBUGGING printf("[DEBG] Trying to read %i bytes from GPIB device...\n", 65535*2); #endif @@ -671,6 +699,10 @@ int scope_get_channel_trace(int desired_channel, const char * scopeType, int gpi return -1; } else { +#ifdef ENABLE_PROFILING +clock_gettime(CLOCK_REALTIME, &tp6); +printf("[PROFILE] %f s\n\r", ((tp6.tv_nsec+(tp6.tv_sec*1e9))-(tp5.tv_nsec+(tp5.tv_sec*1e9)))/1e9); +#endif #ifdef ENABLE_EXTRA_DEBUGGING printf("[DEBG] Read %li bytes from GPIB device\n", ai); #endif @@ -701,6 +733,10 @@ int scope_get_channel_trace(int desired_channel, const char * scopeType, int gpi return -2; } +#ifdef ENABLE_PROFILING +clock_gettime(CLOCK_REALTIME, &tp7); +printf("[PROFILE] %f s\n\r", ((tp7.tv_nsec+(tp7.tv_sec*1e9))-(tp6.tv_nsec+(tp6.tv_sec*1e9)))/1e9); +#endif return array_pointer; } else {