Work in progress.

merge-requests/1/head
Teuniz 2016-12-31 17:17:22 +01:00
rodzic 94d4f89574
commit 9dce938f39
8 zmienionych plików z 219 dodań i 19 usunięć

Wyświetl plik

@ -35,7 +35,7 @@
#define PROGRAM_NAME "DSRemote"
#define PROGRAM_VERSION "0.34_1612311057"
#define PROGRAM_VERSION "0.34_1612311710"
#define MAX_PATHLEN 4096
@ -134,6 +134,8 @@ struct device_settings
int chandisplay[MAX_CHNS]; // 0=off, 1=on
int chanimpedance[MAX_CHNS]; // 0=1MOhm, 1=50Ohm
int chaninvert[MAX_CHNS]; // 0=normal, 1=inverted
int chanunit[MAX_CHNS]; // 0=V, 1=W, 2=A, 3=U
char chanunitstr[4][2];
double chanoffset[MAX_CHNS]; // expressed in volts
double chanprobe[MAX_CHNS]; // Probe attenuation ratio e.g. 10:1
double chanscale[MAX_CHNS];

Wyświetl plik

@ -423,7 +423,7 @@ void UI_Mainwindow::trigAdjustDialChanged(int new_pos)
convert_to_metric_suffix(str + strlen(str), devparms.triggeredgelevel[chn], 2);
strcat(str, "V");
strcat(str, devparms.chanunitstr[devparms.chanunit[chn]]);
statusLabel->setText(str);
@ -866,7 +866,7 @@ void UI_Mainwindow::vertOffsetDialChanged(int new_pos)
convert_to_metric_suffix(str + strlen(str), devparms.chanoffset[chn], 2);
strcat(str, "V");
strcat(str, devparms.chanunitstr[devparms.chanunit[chn]]);
statusLabel->setText(str);
@ -994,7 +994,7 @@ void UI_Mainwindow::vertScaleDialChanged(int new_pos)
convert_to_metric_suffix(str + strlen(str), devparms.chanscale[chn], 2);
strcat(str, "V");
strcat(str, devparms.chanunitstr[devparms.chanunit[chn]]);
statusLabel->setText(str);
@ -2129,7 +2129,8 @@ void UI_Mainwindow::chan_menu()
submenubwl,
submenucoupling,
submenuinvert,
submenuprobe;
submenuprobe,
submenuunit;
QList<QAction *> actionList;
@ -2209,6 +2210,82 @@ void UI_Mainwindow::chan_menu()
}
submenuprobe.addAction("100X", this, SLOT(chan_probe_100()));
actionList = submenuprobe.actions();
if(devparms.modelserie != 6)
{
if(!dblcmp(devparms.chanprobe[devparms.activechannel], 0.1))
{
actionList[0]->setCheckable(true);
actionList[0]->setChecked(true);
}
else if(!dblcmp(devparms.chanprobe[devparms.activechannel], 0.2))
{
actionList[1]->setCheckable(true);
actionList[1]->setChecked(true);
}
else if(!dblcmp(devparms.chanprobe[devparms.activechannel], 0.5))
{
actionList[2]->setCheckable(true);
actionList[2]->setChecked(true);
}
else if(!dblcmp(devparms.chanprobe[devparms.activechannel], 1))
{
actionList[3]->setCheckable(true);
actionList[3]->setChecked(true);
}
else if(!dblcmp(devparms.chanprobe[devparms.activechannel], 2))
{
actionList[4]->setCheckable(true);
actionList[4]->setChecked(true);
}
else if(!dblcmp(devparms.chanprobe[devparms.activechannel], 5))
{
actionList[5]->setCheckable(true);
actionList[5]->setChecked(true);
}
else if(!dblcmp(devparms.chanprobe[devparms.activechannel], 10))
{
actionList[6]->setCheckable(true);
actionList[6]->setChecked(true);
}
else if(!dblcmp(devparms.chanprobe[devparms.activechannel], 20))
{
actionList[7]->setCheckable(true);
actionList[7]->setChecked(true);
}
else if(!dblcmp(devparms.chanprobe[devparms.activechannel], 50))
{
actionList[8]->setCheckable(true);
actionList[8]->setChecked(true);
}
else if(!dblcmp(devparms.chanprobe[devparms.activechannel], 100))
{
actionList[9]->setCheckable(true);
actionList[9]->setChecked(true);
}
}
else
{
if(!dblcmp(devparms.chanprobe[devparms.activechannel], 0.1))
{
actionList[0]->setCheckable(true);
actionList[0]->setChecked(true);
}
else if(!dblcmp(devparms.chanprobe[devparms.activechannel], 1))
{
actionList[1]->setCheckable(true);
actionList[1]->setChecked(true);
}
else if(!dblcmp(devparms.chanprobe[devparms.activechannel], 10))
{
actionList[2]->setCheckable(true);
actionList[2]->setChecked(true);
}
else if(!dblcmp(devparms.chanprobe[devparms.activechannel], 100))
{
actionList[3]->setCheckable(true);
actionList[3]->setChecked(true);
}
}
menu.addMenu(&submenuprobe);
submenuinvert.setTitle("Invert");
@ -2227,6 +2304,16 @@ void UI_Mainwindow::chan_menu()
}
menu.addMenu(&submenuinvert);
submenuunit.setTitle("Unit");
submenuunit.addAction("Volt", this, SLOT(chan_unit_v()));
submenuunit.addAction("Watt", this, SLOT(chan_unit_w()));
submenuunit.addAction("Ampere", this, SLOT(chan_unit_a()));
submenuunit.addAction("Unknown", this, SLOT(chan_unit_u()));
actionList = submenuunit.actions();
actionList[devparms.chanunit[devparms.activechannel]]->setCheckable(true);
actionList[devparms.chanunit[devparms.activechannel]]->setChecked(true);
menu.addMenu(&submenuunit);
menu.exec(chanMenuButton->mapToGlobal(QPoint(0,0)));
}
@ -2534,6 +2621,70 @@ void UI_Mainwindow::chan_coupling_gnd()
}
void UI_Mainwindow::chan_unit_v()
{
char str[128];
devparms.chanunit[devparms.activechannel] = 0;
sprintf(str, "Channel %i units: Volt", devparms.activechannel + 1);
statusLabel->setText(str);
sprintf(str, ":CHAN%i:UNIT VOLT", devparms.activechannel + 1);
set_cue_cmd(str);
}
void UI_Mainwindow::chan_unit_w()
{
char str[128];
devparms.chanunit[devparms.activechannel] = 1;
sprintf(str, "Channel %i units: Watt", devparms.activechannel + 1);
statusLabel->setText(str);
sprintf(str, ":CHAN%i:UNIT WATT", devparms.activechannel + 1);
set_cue_cmd(str);
}
void UI_Mainwindow::chan_unit_a()
{
char str[128];
devparms.chanunit[devparms.activechannel] = 2;
sprintf(str, "Channel %i units: Ampere", devparms.activechannel + 1);
statusLabel->setText(str);
sprintf(str, ":CHAN%i:UNIT AMP", devparms.activechannel + 1);
set_cue_cmd(str);
}
void UI_Mainwindow::chan_unit_u()
{
char str[128];
devparms.chanunit[devparms.activechannel] = 3;
sprintf(str, "Channel %i units: Unknown", devparms.activechannel + 1);
statusLabel->setText(str);
sprintf(str, ":CHAN%i:UNIT UNKN", devparms.activechannel + 1);
set_cue_cmd(str);
}
void UI_Mainwindow::chan_probe_01()
{
char str[128];
@ -2894,7 +3045,7 @@ void UI_Mainwindow::vertOffsetDialClicked(QPoint)
convert_to_metric_suffix(str + strlen(str), devparms.chanoffset[chn], 2);
strcat(str, "V");
strcat(str, devparms.chanunitstr[devparms.chanunit[chn]]);
statusLabel->setText(str);
@ -3535,7 +3686,7 @@ void UI_Mainwindow::trigAdjustDialClicked(QPoint)
convert_to_metric_suffix(str + strlen(str), devparms.triggeredgelevel[devparms.triggeredgesource], 2);
strcat(str, "V");
strcat(str, devparms.chanunitstr[devparms.chanunit[devparms.triggeredgesource]]);
statusLabel->setText(str);

Wyświetl plik

@ -2238,7 +2238,7 @@ void UI_Mainwindow::shift_trace_up()
convert_to_metric_suffix(str + strlen(str), devparms.chanoffset[chn], 2);
strcat(str, "V");
strcat(str, devparms.chanunitstr[devparms.chanunit[chn]]);
statusLabel->setText(str);
@ -2346,7 +2346,7 @@ void UI_Mainwindow::shift_trace_down()
convert_to_metric_suffix(str + strlen(str), devparms.chanoffset[chn], 2);
strcat(str, "V");
strcat(str, devparms.chanunitstr[devparms.chanunit[chn]]);
statusLabel->setText(str);

Wyświetl plik

@ -372,6 +372,11 @@ private slots:
void chan_probe_50();
void chan_probe_100();
void chan_unit_v();
void chan_unit_w();
void chan_unit_a();
void chan_unit_u();
void chan_menu();
void math_menu();

Wyświetl plik

@ -71,6 +71,11 @@ UI_Mainwindow::UI_Mainwindow()
devparms.chanscale[i] = 1;
}
strcpy(devparms.chanunitstr[0], "V");
strcpy(devparms.chanunitstr[1], "W");
strcpy(devparms.chanunitstr[2], "A");
strcpy(devparms.chanunitstr[3], "U");
devparms.fftbuf_in = (double *)malloc(FFT_MAX_BUFSZ * sizeof(double));
devparms.fftbuf_out = (double *)malloc(FFT_MAX_BUFSZ * sizeof(double));

Wyświetl plik

@ -283,6 +283,43 @@ void read_settings_thread::run()
devparms->chanprobe[chn] = atof(device->buf);
sprintf(str, ":CHAN%i:UNIT?", chn + 1);
usleep(TMC_GDS_DELAY);
if(tmc_write(str) != 12)
{
line = __LINE__;
goto GDS_OUT_ERROR;
}
if(tmc_read() < 1)
{
line = __LINE__;
goto GDS_OUT_ERROR;
}
if(!strcmp(device->buf, "VOLT"))
{
devparms->chanunit[chn] = 0;
}
else if(!strcmp(device->buf, "WATT"))
{
devparms->chanunit[chn] = 1;
}
else if(!strcmp(device->buf, "AMP"))
{
devparms->chanunit[chn] = 2;
}
else if(!strcmp(device->buf, "UNKN"))
{
devparms->chanunit[chn] = 3;
}
else
{
devparms->chanunit[chn] = 0;
}
sprintf(str, ":CHAN%i:SCAL?", chn + 1);
usleep(TMC_GDS_DELAY);

Wyświetl plik

@ -563,7 +563,7 @@ void SignalCurve::drawWidget(QPainter *painter, int curve_w, int curve_h)
{
convert_to_metric_suffix(str, devparms->triggeredgelevel[devparms->triggeredgesource], 2);
strcat(str, "V");
strcat(str, devparms->chanunitstr[devparms->chanunit[devparms->triggeredgesource]]);
paintLabel(painter, curve_w - 120, curve_h - 50, 100, 20, str, QColor(255, 128, 0));
}
@ -571,7 +571,7 @@ void SignalCurve::drawWidget(QPainter *painter, int curve_w, int curve_h)
{
convert_to_metric_suffix(str, devparms->chanoffset[0], 2);
strcat(str, "V");
strcat(str, devparms->chanunitstr[devparms->chanunit[0]]);
paintLabel(painter, 20, curve_h - 50, 100, 20, str, SignalColor[0]);
}
@ -579,7 +579,7 @@ void SignalCurve::drawWidget(QPainter *painter, int curve_w, int curve_h)
{
convert_to_metric_suffix(str, devparms->chanoffset[1], 2);
strcat(str, "V");
strcat(str, devparms->chanunitstr[devparms->chanunit[1]]);
paintLabel(painter, 20, curve_h - 50, 100, 20, str, SignalColor[1]);
}
@ -587,7 +587,7 @@ void SignalCurve::drawWidget(QPainter *painter, int curve_w, int curve_h)
{
convert_to_metric_suffix(str, devparms->chanoffset[2], 2);
strcat(str, "V");
strcat(str, devparms->chanunitstr[devparms->chanunit[2]]);
paintLabel(painter, 20, curve_h - 50, 100, 20, str, SignalColor[2]);
}
@ -595,7 +595,7 @@ void SignalCurve::drawWidget(QPainter *painter, int curve_w, int curve_h)
{
convert_to_metric_suffix(str, devparms->chanoffset[3], 2);
strcat(str, "V");
strcat(str, devparms->chanunitstr[devparms->chanunit[3]]);
paintLabel(painter, 20, curve_h - 50, 100, 20, str, SignalColor[3]);
}
@ -1133,7 +1133,7 @@ void SignalCurve::drawTopLabels(QPainter *painter)
convert_to_metric_suffix(str, devparms->triggeredgelevel[devparms->triggeredgesource], 2);
strcat(str, "V");
strcat(str, devparms->chanunitstr[devparms->chanunit[devparms->triggeredgesource]]);
if(devparms->triggeredgesource < 4)
{
@ -1256,7 +1256,7 @@ void SignalCurve::drawChanLabel(QPainter *painter, int xpos, int ypos, int chn)
convert_to_metric_suffix(str2, devparms->chanscale[chn], 2);
strcat(str2, "V");
strcat(str2, devparms->chanunitstr[devparms->chanunit[chn]]);
if(devparms->chanbwlimit[chn])
{
@ -1924,7 +1924,7 @@ void SignalCurve::mouseReleaseEvent(QMouseEvent *release_event)
convert_to_metric_suffix(str + strlen(str), devparms->triggeredgelevel[devparms->triggeredgesource], 2);
strcat(str, "V");
strcat(str, devparms->chanunitstr[devparms->chanunit[devparms->triggeredgesource]]);
mainwindow->statusLabel->setText(str);
@ -1970,7 +1970,7 @@ void SignalCurve::mouseReleaseEvent(QMouseEvent *release_event)
convert_to_metric_suffix(str + strlen(str), devparms->chanoffset[chn], 3);
strcat(str, "V");
strcat(str, devparms->chanunitstr[devparms->chanunit[chn]]);
mainwindow->statusLabel->setText(str);

Wyświetl plik

@ -572,7 +572,7 @@ void WaveCurve::drawTopLabels(QPainter *painter)
convert_to_metric_suffix(str, devparms->triggeredgelevel[devparms->triggeredgesource], 2);
strcat(str, "V");
strcat(str, devparms->chanunitstr[devparms->chanunit[devparms->triggeredgesource]]);
if(devparms->triggeredgesource < 4)
{