Add profiling to scope trace grabber

master
Timothy Pearson 13 years ago
parent fe06492794
commit c50fa83bfd

@ -623,10 +623,10 @@ void ScopePart::mainEventLoop() {
if (result == "ACK") { if (result == "ACK") {
// Update display widget(s) // Update display widget(s)
m_traceWidget->setSamples(m_currentOpChannel, trace); m_traceWidget->setSamples(m_currentOpChannel-1, trace);
m_base->traceZoomWidget->setSamples(m_currentOpChannel, trace); m_base->traceZoomWidget->setSamples(m_currentOpChannel-1, trace);
m_traceWidget->setPositions(m_currentOpChannel, positions); m_traceWidget->setPositions(m_currentOpChannel-1, positions);
m_base->traceZoomWidget->setPositions(m_currentOpChannel, positions); m_base->traceZoomWidget->setPositions(m_currentOpChannel-1, positions);
postProcessTrace(); postProcessTrace();
m_traceWidget->repaint(true); m_traceWidget->repaint(true);
m_base->traceZoomWidget->repaint(true); m_base->traceZoomWidget->repaint(true);
@ -733,16 +733,21 @@ void ScopePart::updateGraticule() {
m_base->traceZoomWidget->setNumberOfHorizontalDivisions(m_hdivs); m_base->traceZoomWidget->setNumberOfHorizontalDivisions(m_hdivs);
m_base->traceZoomWidget->setNumberOfVerticalDivisions(m_vdivs); 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++) { for (int traceno=1; traceno<=m_maxNumberOfTraces; traceno++) {
m_traceWidget->setTraceEnabled(traceno, m_channelActive[traceno]); m_traceWidget->setTraceEnabled(traceno-1, m_channelActive[traceno]);
m_traceWidget->setTraceName(traceno, TQString("Channel %1").arg(traceno)); m_traceWidget->setTraceName(traceno-1, TQString("Channel %1").arg(traceno));
m_traceWidget->setTraceHorizontalUnits(traceno, "s"); m_traceWidget->setTraceHorizontalUnits(traceno-1, "s");
m_traceWidget->setTraceVerticalUnits(traceno, "V"); m_traceWidget->setTraceVerticalUnits(traceno-1, "V");
m_traceWidget->setNumberOfSamples(traceno, m_samplesInTrace[traceno]); m_traceWidget->setNumberOfSamples(traceno-1, m_samplesInTrace[traceno]);
m_base->traceZoomWidget->setNumberOfSamples(traceno, 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); 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);
} }

@ -667,6 +667,7 @@ void TraceWidget::setDisplayLimits(uint traceNumber, TQRectF limits) {
m_traceArray[traceNumber]->topEdge = limits.y(); m_traceArray[traceNumber]->topEdge = limits.y();
m_traceArray[traceNumber]->bottomEdge = limits.height(); m_traceArray[traceNumber]->bottomEdge = limits.height();
m_graticuleWidget->updateGraticule();
m_graticuleWidget->repaint(true); m_graticuleWidget->repaint(true);
updateTraceText(); updateTraceText();
updateCursorText(); updateCursorText();
@ -761,13 +762,13 @@ void TraceWidget::setPositions(uint traceNumber, TQDoubleArray& tqda) {
m_graticuleWidget->repaint(true); m_graticuleWidget->repaint(true);
} }
TQColor& TraceWidget::traceColor(uint traceNumber) { TQColor TraceWidget::traceColor(uint traceNumber) {
VERIFY_TRACE_ARRAY_SIZE VERIFY_TRACE_ARRAY_SIZE
return m_traceArray[traceNumber]->color; return m_traceArray[traceNumber]->color;
} }
void TraceWidget::setTraceColor(uint traceNumber, TQColor& color) { void TraceWidget::setTraceColor(uint traceNumber, TQColor color) {
VERIFY_TRACE_ARRAY_SIZE VERIFY_TRACE_ARRAY_SIZE
m_traceArray[traceNumber]->color = color; m_traceArray[traceNumber]->color = color;

@ -174,8 +174,8 @@ class TraceWidget : public TQWidget
void setSamples(uint traceNumber, TQDoubleArray&); void setSamples(uint traceNumber, TQDoubleArray&);
TQDoubleArray& positions(uint traceNumber); TQDoubleArray& positions(uint traceNumber);
void setPositions(uint traceNumber, TQDoubleArray&); void setPositions(uint traceNumber, TQDoubleArray&);
TQColor& traceColor(uint traceNumber); TQColor traceColor(uint traceNumber);
void setTraceColor(uint traceNumber, TQColor&); void setTraceColor(uint traceNumber, TQColor);
bool traceEnabled(uint traceNumber); bool traceEnabled(uint traceNumber);
void setTraceEnabled(uint traceNumber, bool enabled, bool showText=true); void setTraceEnabled(uint traceNumber, bool enabled, bool showText=true);
TQString traceName(uint traceNumber); TQString traceName(uint traceNumber);

@ -32,6 +32,8 @@
#include "gpib_functions.h" #include "gpib_functions.h"
#include "gpib/ib.h" #include "gpib/ib.h"
#include <time.h>
#include <tqimage.h> #include <tqimage.h>
extern char falpha[1024]; 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) { int scope_get_channel_trace(int desired_channel, const char * scopeType, int gpibDevice) {
char segarray[4194304]; char segarray[4194304];
long array_pointer; long array_pointer;
long ai; 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 // Send request
printf("[INFO] Getting oscilloscope trace for channel %d [Stage 1]\n\r", desired_channel); printf("[INFO] Getting oscilloscope trace for channel %d [Stage 1]\n\r", desired_channel);
if (strcmp("HP54600OS", scopeType) == 0) { 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); printf("[DEBG] Writing: %s\n\r", falpha);
#endif #endif
if (gpib_write(gpibDevice, falpha) == 0) { 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?"); sprintf(falpha,"WFMPRE?");
#ifdef ENABLE_EXTRA_DEBUGGING #ifdef ENABLE_EXTRA_DEBUGGING
printf("[DEBG] Writing: %s\n\r", falpha); printf("[DEBG] Writing: %s\n\r", falpha);
#endif #endif
if (gpib_write(gpibDevice, falpha) == 0) { 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 // Read response
#ifdef ENABLE_EXTRA_DEBUGGING #ifdef ENABLE_EXTRA_DEBUGGING
printf("[DEBG] Trying to read %i bytes from GPIB device...\n", 65535); 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 #ifdef ENABLE_EXTRA_DEBUGGING
printf("[DEBG] Read %li bytes from GPIB device\n", ai); printf("[DEBG] Read %li bytes from GPIB device\n", ai);
#endif #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); TQString preamble(segarray);
TQStringList resultPairs = TQStringList::split(";", preamble, FALSE); TQStringList resultPairs = TQStringList::split(";", preamble, FALSE);
// Find/initialize critical data values // 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); printf("[DEBG] Writing: %s\n\r", falpha);
#endif #endif
if (gpib_write(gpibDevice, falpha) == 0) { 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 #ifdef ENABLE_EXTRA_DEBUGGING
printf("[DEBG] Trying to read %i bytes from GPIB device...\n", 65535*2); printf("[DEBG] Trying to read %i bytes from GPIB device...\n", 65535*2);
#endif #endif
@ -671,6 +699,10 @@ int scope_get_channel_trace(int desired_channel, const char * scopeType, int gpi
return -1; return -1;
} }
else { 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 #ifdef ENABLE_EXTRA_DEBUGGING
printf("[DEBG] Read %li bytes from GPIB device\n", ai); printf("[DEBG] Read %li bytes from GPIB device\n", ai);
#endif #endif
@ -701,6 +733,10 @@ int scope_get_channel_trace(int desired_channel, const char * scopeType, int gpi
return -2; 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; return array_pointer;
} }
else { else {

Loading…
Cancel
Save