+void do_get_screen(struct usb_dev_handle *sc)
+{
+ unsigned char screen[320*234];
+ time_t lt;
+ char filename[256];
+ unsigned char *png;
+ int imglen;
+ int l;
+ int fd;
+ pid_t display;
+
+ /* Hide "RMT" from screen */
+ l = sendscpi(sc, ":KEY:LOCK DISABLE", NULL, 0);
+ usleep(20000);
+
+ l = sendscpi(sc, ":LCD:DATA?", screen, sizeof(screen));
+
+ if (l != sizeof(screen)) {
+ printf ("hmm. didnt' get %d bytes, but %d\n\n", sizeof(screen), l);
+ }
+
+ strftime(filename, sizeof(filename), "screen_%Y%m%d-%H%M%S.png", localtime(<));
+ fd=open(filename, O_CREAT|O_WRONLY, 0644);
+ png = lcd2png(screen, &imglen);
+ write(fd, png, imglen);
+ close(fd);
+
+ printf("Waveform saved as %s\n", filename);
+
+ display = fork();
+ switch(display) {
+ case 0:
+ execlp("display", "display", filename, NULL);
+ exit(0);
+ break;
+ case -1:
+ perror("fork");
+ break;
+ default:
+ break;
+ }
+}
+
+void child_reaper(int sig)
+{
+ pid_t child;