]> cvs.zerfleddert.de Git - rigol/blobdiff - scope.c
add measurements to web if
[rigol] / scope.c
diff --git a/scope.c b/scope.c
index 30f175a7de8f9a7ceea01f28b4d0f8b1082f932e..6013893107b34b609c2d3a87351a1fd3096bc197 100644 (file)
--- a/scope.c
+++ b/scope.c
@@ -75,7 +75,7 @@ char *scope_get_string(struct scope *sc, char *cmd, int maxlen)
        unsigned char *buf;
        int res;
 
-       buf = malloc(maxlen);
+       buf = malloc(maxlen+1);
        if (buf == NULL) {
                perror("malloc(scope_get_strings)");
                exit(EXIT_FAILURE);
@@ -149,6 +149,55 @@ double scope_get_double(struct scope *sc, char*cmd)
        return ret;
 }
 
+void update_scope_measurements(struct scope *sc)
+{
+       sc->status.measure.ch1.vpp = scope_get_double(sc, ":MEAS:VPP? CHAN1");
+       sc->status.measure.ch1.vmax = scope_get_double(sc, ":MEAS:VMAX? CHAN1");
+       sc->status.measure.ch1.vmin = scope_get_double(sc, ":MEAS:VMIN? CHAN1");
+       sc->status.measure.ch1.vamplitude = scope_get_double(sc, ":MEAS:VAMP? CHAN1");
+       sc->status.measure.ch1.vtop = scope_get_double(sc, ":MEAS:VTOP? CHAN1");
+       sc->status.measure.ch1.vbase = scope_get_double(sc, ":MEAS:VBAS? CHAN1");
+       sc->status.measure.ch1.vaverage = scope_get_double(sc, ":MEAS:VAV? CHAN1");
+       sc->status.measure.ch1.vrms = scope_get_double(sc, ":MEAS:VRMS? CHAN1");
+       sc->status.measure.ch1.overshoot = scope_get_double(sc, ":MEAS:OVER? CHAN1");
+       sc->status.measure.ch1.preshoot = scope_get_double(sc, ":MEAS:PRES? CHAN1");
+       sc->status.measure.ch1.frequency = scope_get_double(sc, ":MEAS:FREQ? CHAN1");
+       sc->status.measure.ch1.risetime = scope_get_double(sc, ":MEAS:RIS? CHAN1");
+       sc->status.measure.ch1.falltime = scope_get_double(sc, ":MEAS:FALL? CHAN1");
+       sc->status.measure.ch1.period = scope_get_double(sc, ":MEAS:PER? CHAN1");
+       sc->status.measure.ch1.pwidth = scope_get_double(sc, ":MEAS:PWID? CHAN1");
+       sc->status.measure.ch1.nwidth = scope_get_double(sc, ":MEAS:NWID? CHAN1");
+       sc->status.measure.ch1.pdutycycle = scope_get_double(sc, ":MEAS:PDUT? CHAN1");
+       sc->status.measure.ch1.ndutycycle = scope_get_double(sc, ":MEAS:NDUT? CHAN1");
+       sc->status.measure.ch1.pdelay = scope_get_double(sc, ":MEAS:PDEL? CHAN1");
+       sc->status.measure.ch1.ndelay = scope_get_double(sc, ":MEAS:NDEL? CHAN1");
+
+       sc->status.measure.ch2.vpp = scope_get_double(sc, ":MEAS:VPP? CHAN2");
+       sc->status.measure.ch2.vmax = scope_get_double(sc, ":MEAS:VMAX? CHAN2");
+       sc->status.measure.ch2.vmin = scope_get_double(sc, ":MEAS:VMIN? CHAN2");
+       sc->status.measure.ch2.vamplitude = scope_get_double(sc, ":MEAS:VAMP? CHAN2");
+       sc->status.measure.ch2.vtop = scope_get_double(sc, ":MEAS:VTOP? CHAN2");
+       sc->status.measure.ch2.vbase = scope_get_double(sc, ":MEAS:VBAS? CHAN2");
+       sc->status.measure.ch2.vaverage = scope_get_double(sc, ":MEAS:VAV? CHAN2");
+       sc->status.measure.ch2.vrms = scope_get_double(sc, ":MEAS:VRMS? CHAN2");
+       sc->status.measure.ch2.overshoot = scope_get_double(sc, ":MEAS:OVER? CHAN2");
+       sc->status.measure.ch2.preshoot = scope_get_double(sc, ":MEAS:PRES? CHAN2");
+       sc->status.measure.ch2.frequency = scope_get_double(sc, ":MEAS:FREQ? CHAN2");
+       sc->status.measure.ch2.risetime = scope_get_double(sc, ":MEAS:RIS? CHAN2");
+       sc->status.measure.ch2.falltime = scope_get_double(sc, ":MEAS:FALL? CHAN2");
+       sc->status.measure.ch2.period = scope_get_double(sc, ":MEAS:PER? CHAN2");
+       sc->status.measure.ch2.pwidth = scope_get_double(sc, ":MEAS:PWID? CHAN2");
+       sc->status.measure.ch2.nwidth = scope_get_double(sc, ":MEAS:NWID? CHAN2");
+       sc->status.measure.ch2.pdutycycle = scope_get_double(sc, ":MEAS:PDUT? CHAN2");
+       sc->status.measure.ch2.ndutycycle = scope_get_double(sc, ":MEAS:NDUT? CHAN2");
+       sc->status.measure.ch2.pdelay = scope_get_double(sc, ":MEAS:PDEL? CHAN2");
+       sc->status.measure.ch2.ndelay = scope_get_double(sc, ":MEAS:NDEL? CHAN2");
+
+       sc->status.measure.total = scope_get_truth_value(sc, ":MEAS:TOT?");
+       COPY_SCOPE_STRING(sc, ":MEAS:SOUR?", sc->status.measure.source);
+
+}
+
 int update_scope_status(struct scope *sc)
 {
        bzero(&(sc->status), sizeof(sc->status));
@@ -160,12 +209,23 @@ int update_scope_status(struct scope *sc)
 
        sc->status.keyboard.key_lock = scope_get_truth_value(sc, ":KEY:LOCK?");
 
+       update_scope_measurements(sc);
+
+       COPY_SCOPE_STRING(sc, ":DISP:TYPE?", sc->status.display.type);
+       COPY_SCOPE_STRING(sc, ":DISP:GRID?", sc->status.display.grid);
+       sc->status.display.persist = scope_get_truth_value(sc, ":DISP:PERS?");
+       COPY_SCOPE_STRING(sc, ":DISP:MNUD?", sc->status.display.mnudisplay);
+       sc->status.display.mnustatus = scope_get_truth_value(sc, ":DISP:MNUS?");
+       COPY_SCOPE_STRING(sc, ":DISP:SCR?", sc->status.display.screen);
+       sc->status.display.brightness = scope_get_int(sc, ":DISP:BRIG?");
+       sc->status.display.intensity = scope_get_int(sc, ":DISP:INT?");
+
        COPY_SCOPE_STRING(sc, ":ACQ:TYPE?", sc->status.acquire.type);
        COPY_SCOPE_STRING(sc, ":ACQ:MODE?", sc->status.acquire.mode);
 
        sc->status.acquire.averages = scope_get_int(sc, ":ACQ:AVER?");
-       sc->status.acquire.srate_chan1 = scope_get_double(sc, ":ACQ:SAMP? CHAN1");
-       sc->status.acquire.srate_chan2 = scope_get_double(sc, ":ACQ:SAMP? CHAN2");
+       sc->status.acquire.srate_ch1 = scope_get_double(sc, ":ACQ:SAMP? CHAN1");
+       sc->status.acquire.srate_ch2 = scope_get_double(sc, ":ACQ:SAMP? CHAN2");
        sc->status.acquire.srate_digital = scope_get_double(sc, ":ACQ:SAMP? DIGITAL");
 
        COPY_SCOPE_STRING(sc, ":TIM:MODE?", sc->status.timebase.mode);
Impressum, Datenschutz