X-Git-Url: http://git.zerfleddert.de/cgi-bin/gitweb.cgi/rigol/blobdiff_plain/616d54b715cbfdd3547724e19fff416046fdc44d..b131d433f9b984b50266298be6f0cf7f9a13b6fb:/commands.c diff --git a/commands.c b/commands.c index 646d3de..f3dc86c 100644 --- a/commands.c +++ b/commands.c @@ -106,20 +106,22 @@ void do_get_buf (struct usb_dev_handle *sc) usbtmc_sendscpi (sc, ":TIM:OFFSET 0", NULL, 0); } -static unsigned char* get_lcd(struct usb_dev_handle *sc, int *imglen) +unsigned char* get_lcd(struct usb_dev_handle *sc, int *imglen, int keylock) { unsigned char screen[320*234]; unsigned char *png; int l; - /* Hide "RMT" from screen */ - l = usbtmc_sendscpi(sc, ":KEY:LOCK DISABLE", NULL, 0); - usleep(20000); + if (keylock) { + /* Hide "RMT" from screen */ + l = usbtmc_sendscpi(sc, ":KEY:LOCK DISABLE", NULL, 0); + usleep(30000); + } l = usbtmc_sendscpi(sc, ":LCD:DATA?", screen, sizeof(screen)); if (l != sizeof(screen)) { - printf ("hmm. didnt' get %d bytes, but %d\n\n", sizeof(screen), l); + printf ("hmm. didnt' get %d bytes, but %d\n\n", (int)sizeof(screen), l); } png = lcd2png(screen, imglen); @@ -137,7 +139,7 @@ void do_get_screen(struct usb_dev_handle *sc) int fd; pid_t display; - png = get_lcd(sc, &imglen); + png = get_lcd(sc, &imglen, 1); if (png == NULL) { perror("get_lcd"); return; @@ -186,7 +188,7 @@ void do_display_screen(struct usb_dev_handle *sc) int pipefd[2]; pid_t display; - png = get_lcd(sc, &imglen); + png = get_lcd(sc, &imglen, 1); if (png == NULL) { perror("get_lcd"); return; @@ -220,7 +222,7 @@ void do_display_screen(struct usb_dev_handle *sc) imglen -= ret; } close(pipefd[1]); + free(png); break; } } -