]> sigrok.org Git - libsigrok.git/commitdiff
scpi_serial: Add support for (broken) devices sending NL+CR terminator.
authorTimo Kokkonen <redacted>
Tue, 2 Jun 2020 06:56:03 +0000 (23:56 -0700)
committerGerhard Sittig <redacted>
Mon, 17 Aug 2020 16:35:17 +0000 (18:35 +0200)
This allows SCPI code to work with devices that terminate their responses
with NL+CR (instead of usual NL) like some GW-Instek DMMs.

src/scpi/scpi_serial.c

index 6158f089ed6fd55810357ab671e15ad6edd5d7cc..6f642211f264609eb3bf3cdcc79779af1cae8432 100644 (file)
@@ -187,7 +187,12 @@ static int scpi_serial_read_data(void *priv, char *buf, int maxlen)
        if (ret > 0) {
                if (buf[ret - 1] == '\n') {
                        sscpi->got_newline = TRUE;
-                       sr_spew("Received terminator");
+                       sr_spew("Received NL terminator");
+               } else if (ret > 1 &&
+                          buf[ret - 2] == '\n' && buf[ret - 1] == '\r') {
+                       sscpi->got_newline = TRUE;
+                       sr_spew("Received NL+CR terminator");
+                       ret--;
                } else {
                        sscpi->got_newline = FALSE;
                }