X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=src%2Fscpi%2Fscpi.c;h=ce3cb99d2362be792549d8e1970a76ebb1b35f57;hb=3b95bd9152e6f54e259caf0909af86768c518e7a;hp=7604411384a9fcec385cffad37ec9b18673c37c7;hpb=91219afc75c9aa1d0c5e2da5c03343c1e43eb6df;p=libsigrok.git diff --git a/src/scpi/scpi.c b/src/scpi/scpi.c index 76044113..ce3cb99d 100644 --- a/src/scpi/scpi.c +++ b/src/scpi/scpi.c @@ -383,7 +383,7 @@ SR_PRIV int sr_scpi_get_string(struct sr_scpi_dev_inst *scpi, char buf[256]; int len; GString *response; - gint64 start; + gint64 laststart; unsigned int elapsed_ms; if (command) @@ -393,7 +393,7 @@ SR_PRIV int sr_scpi_get_string(struct sr_scpi_dev_inst *scpi, if (sr_scpi_read_begin(scpi) != SR_OK) return SR_ERR; - start = g_get_monotonic_time(); + laststart = g_get_monotonic_time(); response = g_string_new(""); @@ -402,13 +402,15 @@ SR_PRIV int sr_scpi_get_string(struct sr_scpi_dev_inst *scpi, while (!sr_scpi_read_complete(scpi)) { len = sr_scpi_read_data(scpi, buf, sizeof(buf)); if (len < 0) { + sr_err("Incompletely read SCPI response."); g_string_free(response, TRUE); return SR_ERR; + } else if (len > 0) { + laststart = g_get_monotonic_time(); } g_string_append_len(response, buf, len); - elapsed_ms = (g_get_monotonic_time() - start) / 1000; - if (elapsed_ms >= scpi->read_timeout_ms) - { + elapsed_ms = (g_get_monotonic_time() - laststart) / 1000; + if (elapsed_ms >= scpi->read_timeout_ms) { sr_err("Timed out waiting for SCPI response."); g_string_free(response, TRUE); return SR_ERR; @@ -426,7 +428,7 @@ SR_PRIV int sr_scpi_get_string(struct sr_scpi_dev_inst *scpi, *scpi_response = response->str; g_string_free(response, FALSE); - sr_spew("Got response: '%.70s'.", *scpi_response); + sr_spew("Got response: '%.70s', length %d.", *scpi_response, strlen(*scpi_response)); return SR_OK; }