kopia lustrzana https://gitlab.com/Teuniz/DSRemote
Work in progress.
rodzic
94d4f89574
commit
9dce938f39
4
global.h
4
global.h
|
@ -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];
|
||||
|
|
163
interface.cpp
163
interface.cpp
|
@ -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);
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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();
|
||||
|
||||
|
|
|
@ -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));
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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)
|
||||
{
|
||||
|
|
Ładowanie…
Reference in New Issue