/** * Sets Analog Pin value in volts * @param context SCPI context * @return success or failure */ scpi_result_t RP_AnalogPinValue(scpi_t * context) { int32_t choice; double value; /* Read first parameter - APIN */ if (!SCPI_ParamChoice(context, scpi_RpApin, &choice, true)) { RP_LOG(LOG_ERR, "*ANALOG:PIN is missing first parameter.\n"); return SCPI_RES_ERR; } /* Read second parameter - VALUE */ if (!SCPI_ParamDouble(context, &value, true)) { RP_LOG(LOG_ERR, "*ANALOG:PIN is missing second parameter.\n"); return SCPI_RES_ERR; } // Convert port into pin id rp_apin_t pin = choice; /* Set pin value */ int result = rp_ApinSetValue(pin, (float) value); if (RP_OK != result){ RP_LOG(LOG_ERR, "*ANALOG:PIN Failed to set pin value: %s\n", rp_GetError(result)); return SCPI_RES_ERR; } RP_LOG(LOG_INFO, "*ANALOG:PIN Successfully set port value.\n"); return SCPI_RES_OK; }
static scpi_result_t DMM_ConfigureVoltageDc(scpi_t * context) { double param1, param2; printf( "conf:volt:dc\r\n"); // debug command name // read first parameter if present if (!SCPI_ParamDouble(context, ¶m1, TRUE)) { return SCPI_RES_ERR; } // read second paraeter if present if (!SCPI_ParamDouble(context, ¶m2, FALSE)) { // do something, if parameter not present } printf( "\tP1=%lf\r\n", param1); printf( "\tP2=%lf\r\n", param2); return SCPI_RES_OK; }
scpi_result_t RP_APP_OscSetProbeAtt(rp_channel_t channel, scpi_t *context) { double value; if (!SCPI_ParamDouble(context, &value, true)) { syslog(LOG_ERR, "*OSC:CH<n>:PROBE is missing first parameter."); return SCPI_RES_ERR; } int result = rpApp_OscSetProbeAtt(channel, (float) value); if (RP_OK != result) { syslog(LOG_ERR, "*OSC:CH<n>:PROBE Failed: %s", rp_GetError(result)); return SCPI_RES_ERR; } syslog(LOG_INFO, "*OSC:CH<n>:PROBE set successfully."); return SCPI_RES_OK; }
scpi_result_t RP_APP_OscSetAmplitudeScale(rpApp_osc_source source, scpi_t *context) { double value; if (!SCPI_ParamDouble(context, &value, true)) { syslog(LOG_ERR, "*OSC:CH<n>:SCALE is missing first parameter."); return SCPI_RES_ERR; } int result = rpApp_OscSetAmplitudeScale(source, (float) value); if (RP_OK != result) { syslog(LOG_ERR, "*OSC:CH<n>:SCALE Failed to set amplitude scale: %s", rp_GetError(result)); return SCPI_RES_ERR; } syslog(LOG_INFO, "*OSC:CH<n>:SCALE set successfully."); return SCPI_RES_OK; }
scpi_result_t RP_APP_OscSetTriggerLevel(scpi_t *context) { double value; if (!SCPI_ParamDouble(context, &value, true)) { syslog(LOG_ERR, "*OSC:TRIG:LEVEL is missing first parameter."); return SCPI_RES_ERR; } int result = rpApp_OscSetTriggerLevel((float) (value / 1000.0)); if (RP_OK != result) { syslog(LOG_ERR, "*OSC:TRIG:LEVEL Failed to set trigger level: %s", rp_GetError(result)); return SCPI_RES_ERR; } syslog(LOG_INFO, "*OSC:TRIG:LEVEL set successfully."); return SCPI_RES_OK; }
scpi_result_t RP_APP_OscSetTimeScale(scpi_t *context) { double value; if (!SCPI_ParamDouble(context, &value, true)) { syslog(LOG_ERR, "*OSC:TIME:OFFSET is missing first parameter."); return SCPI_RES_ERR; } int result = rpApp_OscSetTimeScale((float) value); if (RP_OK != result) { syslog(LOG_ERR, "*OSC:TIME:OFFSET Failed to set time offset: %s", rp_GetError(result)); return SCPI_RES_ERR; } syslog(LOG_INFO, "*OSC:TIME:OFFSET set successfully."); return SCPI_RES_OK; }
scpi_result_t RP_APP_SpecSetFreqMax(scpi_t *context) { double freq; if (!SCPI_ParamDouble(context, &freq, true)) { syslog(LOG_ERR, "*SPEC:FREQ:MAX is missing first parameter."); return SCPI_RES_ERR; } int result = rpApp_SpecSetFreqMax(freq); if (RP_OK != result) { syslog(LOG_ERR, "*SPEC:FREQ:MAX Failed to get: %s", rp_GetError(result)); return SCPI_RES_ERR; } SCPI_ResultDouble(context, freq); syslog(LOG_INFO, "*SPEC:FREQ:MAX get successfully."); return SCPI_RES_OK; }