kopia lustrzana https://gitlab.com/Teuniz/DSRemote
Work in progress.
rodzic
5a5efcad1f
commit
0b09566ec2
|
@ -341,51 +341,52 @@ void SignalCurve::drawWidget(QPainter *painter, int curve_w, int curve_h)
|
||||||
|
|
||||||
/////////////////////////////////// draw the curve ///////////////////////////////////////////
|
/////////////////////////////////// draw the curve ///////////////////////////////////////////
|
||||||
|
|
||||||
if(bufsize < 2) return;
|
if(bufsize > 32)
|
||||||
|
|
||||||
painter->setClipping(true);
|
|
||||||
painter->setClipRegion(QRegion(0, 0, curve_w, curve_h), Qt::ReplaceClip);
|
|
||||||
|
|
||||||
h_step = (double)curve_w / (double)bufsize;
|
|
||||||
|
|
||||||
for(chn=0; chn<devparms->channel_cnt; chn++)
|
|
||||||
{
|
{
|
||||||
if(!devparms->chandisplay[chn])
|
painter->setClipping(true);
|
||||||
{
|
painter->setClipRegion(QRegion(0, 0, curve_w, curve_h), Qt::ReplaceClip);
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
painter->setPen(QPen(QBrush(SignalColor[chn], Qt::SolidPattern), tracewidth, Qt::SolidLine, Qt::SquareCap, Qt::BevelJoin));
|
h_step = (double)curve_w / (double)bufsize;
|
||||||
|
|
||||||
for(i=0; i<bufsize; i++)
|
for(chn=0; chn<devparms->channel_cnt; chn++)
|
||||||
{
|
{
|
||||||
if(bufsize < (curve_w / 2))
|
if(!devparms->chandisplay[chn])
|
||||||
{
|
{
|
||||||
painter->drawLine(i * h_step, (devparms->wavebuf[chn][i] * v_sense) + (curve_h / 2), (i + 1) * h_step, (devparms->wavebuf[chn][i] * v_sense) + (curve_h / 2));
|
continue;
|
||||||
if(i)
|
|
||||||
{
|
|
||||||
painter->drawLine(i * h_step, (devparms->wavebuf[chn][i - 1] * v_sense) + (curve_h / 2), i * h_step, (devparms->wavebuf[chn][i] * v_sense) + (curve_h / 2));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else
|
|
||||||
|
painter->setPen(QPen(QBrush(SignalColor[chn], Qt::SolidPattern), tracewidth, Qt::SolidLine, Qt::SquareCap, Qt::BevelJoin));
|
||||||
|
|
||||||
|
for(i=0; i<bufsize; i++)
|
||||||
{
|
{
|
||||||
if(i < (bufsize - 1))
|
if(bufsize < (curve_w / 2))
|
||||||
{
|
{
|
||||||
if(devparms->displaytype)
|
painter->drawLine(i * h_step, (devparms->wavebuf[chn][i] * v_sense) + (curve_h / 2), (i + 1) * h_step, (devparms->wavebuf[chn][i] * v_sense) + (curve_h / 2));
|
||||||
|
if(i)
|
||||||
{
|
{
|
||||||
painter->drawPoint(i * h_step, (devparms->wavebuf[chn][i] * v_sense) + (curve_h / 2));
|
painter->drawLine(i * h_step, (devparms->wavebuf[chn][i - 1] * v_sense) + (curve_h / 2), i * h_step, (devparms->wavebuf[chn][i] * v_sense) + (curve_h / 2));
|
||||||
}
|
}
|
||||||
else
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if(i < (bufsize - 1))
|
||||||
{
|
{
|
||||||
painter->drawLine(i * h_step, (devparms->wavebuf[chn][i] * v_sense) + (curve_h / 2), (i + 1) * h_step, (devparms->wavebuf[chn][i + 1] * v_sense) + (curve_h / 2));
|
if(devparms->displaytype)
|
||||||
|
{
|
||||||
|
painter->drawPoint(i * h_step, (devparms->wavebuf[chn][i] * v_sense) + (curve_h / 2));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
painter->drawLine(i * h_step, (devparms->wavebuf[chn][i] * v_sense) + (curve_h / 2), (i + 1) * h_step, (devparms->wavebuf[chn][i + 1] * v_sense) + (curve_h / 2));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
painter->setClipping(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
painter->setClipping(false);
|
|
||||||
|
|
||||||
/////////////////////////////////// draw the trigger arrows ///////////////////////////////////////////
|
/////////////////////////////////// draw the trigger arrows ///////////////////////////////////////////
|
||||||
|
|
||||||
if(trig_level_arrow_moving)
|
if(trig_level_arrow_moving)
|
||||||
|
|
|
@ -311,12 +311,14 @@ void UI_Mainwindow::scrn_timer_handler()
|
||||||
|
|
||||||
//struct waveform_preamble wfp;
|
//struct waveform_preamble wfp;
|
||||||
|
|
||||||
for(i=0; i<MAX_CHNS; i++)
|
if(devparms.triggerstatus != 1) // Don't download waveform data when triggerstatus is "wait"
|
||||||
{
|
{
|
||||||
if(!devparms.chandisplay[i]) // Download data only when channel is switched on
|
for(i=0; i<MAX_CHNS; i++)
|
||||||
{
|
{
|
||||||
continue;
|
if(!devparms.chandisplay[i]) // Download data only when channel is switched on
|
||||||
}
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
@ -359,38 +361,39 @@ void UI_Mainwindow::scrn_timer_handler()
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////
|
||||||
|
|
||||||
sprintf(str, ":WAV:SOUR CHAN%i", i + 1);
|
sprintf(str, ":WAV:SOUR CHAN%i", i + 1);
|
||||||
|
|
||||||
tmcdev_write(device, str);
|
tmcdev_write(device, str);
|
||||||
|
|
||||||
tmcdev_write(device, ":WAV:FORM BYTE");
|
tmcdev_write(device, ":WAV:FORM BYTE");
|
||||||
|
|
||||||
tmcdev_write(device, ":WAV:MODE NORM");
|
tmcdev_write(device, ":WAV:MODE NORM");
|
||||||
|
|
||||||
tmcdev_write(device, ":WAV:DATA?");
|
tmcdev_write(device, ":WAV:DATA?");
|
||||||
|
|
||||||
n = tmcdev_read(device);
|
n = tmcdev_read(device);
|
||||||
|
|
||||||
if(n < 0)
|
if(n < 0)
|
||||||
{
|
{
|
||||||
printf("Can not read from device.\n");
|
printf("Can not read from device.\n");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(n > WAVFRM_MAX_BUFSZ)
|
if(n > WAVFRM_MAX_BUFSZ)
|
||||||
{
|
{
|
||||||
strcpy(str, "Datablock too big for buffer.");
|
strcpy(str, "Datablock too big for buffer.");
|
||||||
goto OUT_ERROR;
|
goto OUT_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(n < 16)
|
if(n < 32)
|
||||||
{
|
{
|
||||||
return;
|
n = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
for(j=0; j<n; j++)
|
for(j=0; j<n; j++)
|
||||||
{
|
{
|
||||||
devparms.wavebuf[i][j] = (int)(((unsigned char *)device->buf)[j]) - 127;
|
devparms.wavebuf[i][j] = (int)(((unsigned char *)device->buf)[j]) - 127;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Ładowanie…
Reference in New Issue