Screenshots von TDS4XX automatisch abspeichern, mit Python

Gast #5772770
Hallo Zusammen,

Ich habe folgendes kleines Programm zum automatischen Abspeichern von 
TDS4XX Screenshots geschreiben.

Dabei wartet es auf den Empfang des Screenshots, speichert ihn nach dem 
Empfangen automatisch ab, zeigt ihn an und wartet auf den nächsten.

Die Sendeparameter sind dabei:
Bardrate=19200,
Bytesize=8
Parity='N'
Stopbits=1,
xonxoff=0,
rtscts=1

Beim abspeichern wird die BMP-Datei dabei zu PNG umgewandelt, dadurch 
werden aus 38KB nur noch ~5-8KB.

Zur Nutzung sind die Python-Libs Erweiterungen PIL und serial nötig.
1
from PIL import Image
2
import sys
3
import serial
4
import io
5
import os
6

7
flag = 0
8
cnt = 0
9
s = bytearray()
10
ser = serial.Serial('COM1', 19200, bytesize=8,parity='N', stopbits=1, timeout=1, xonxoff=0, rtscts=1)
11
durchl =0
12
Bytes1=0
13
Bytes2=0
14
fileformat = '.bmp'
15
while 1:
16
    while flag == 0:
17
        Bytes2=len(s)
18
        s = s + ser.read()     
19
        if Bytes2 == Bytes1 and Bytes2 > 0 :             #Wenn Inhalt drinn ist
20
            flag = 1
21
        Bytes1=Bytes2
22
    f = open('Screen' + str(cnt) + fileformat, 'w+b')
23
    binary_format = bytearray(s)
24
    f.write(binary_format)
25
    f.close()
26

27

28
    im=Image.open('Screen' + str(cnt) + fileformat)
29
    a=im.rotate(270,0,1)
30
    a.show()
31
    a.save('Screen' + str(cnt) + '.png')
32
    os.remove('Screen' + str(cnt) + fileformat) 
33
    flag=0
34
    Bytes1=0
35
    Bytes2=0
36
    s = bytearray()
37
    cnt=cnt+1

Nun möchte ich jedoch auch Farb-Plots im EPS-Format abspeichern können, 
so einen zeigt der EPS-Screen.

Dabei gibt es in Zeile 29 bei der Umwandlung/Drehen von EPS zu PNG ein 
problem.
1
"Unable to locate Ghostscript on paths"

Dabei habe ist Ghostscript 9.26 installiert und auch als 
PATH-Umgebungsvariable angegeben.

Wäre sehr schön wenn jemand wüsste wie man dass Problem löst?

Grüße und Vielen Dank,
Matthias
Angehängte Dateien:
#5772811
Matthias schrieb:
> Nun möchte ich jedoch auch Farb-Plots im EPS-Format abspeichern können

Schluß ins Blaue: Ich würde meinen Latex-Workflow von DVIPS mal langsam 
richtung PDFLatex umstellen. Es hat mittlerweile fast nur noch Vorteile.


Zu Deiner eigentlichen Frage: Funktioniert die Konvertierung mit 
Ghostscript denn in der normalen Kommandozeile?
Gast #5774266
Walter T. schrieb:
> Zu Deiner eigentlichen Frage: Funktioniert die Konvertierung mit
> Ghostscript denn in der normalen Kommandozeile?

Gute Frage, ich habe Ghostscript noch nie verwendet, wollte es auch nur 
in diesem Zusammenhang nutzen.

Aber nun hat sich dass Problem wohl von alleine gelöst, es funktioniert.
Warum?
Ich habe nun mindestens 2 mal neu Gestartet und als Path für den 
aktuellen benutzer ist:
C:\Program Files\gs\gs9.26\bin
eingetragen...

Nun spielt es auch keine Rolle ob das Oszi EPS oder BMP sendet, in 
beiden Fällen wird ein PNG erzeugt und abgespeichert.

Auch dass aus EPS erzeugte PNG ist somit nur ~7KB groß und ermöglicht 
eine bessere Unterscheidbarkeit von Kanälen und MATH-Funktionen.

Hier nochmal der endgültige Code:
1
from PIL import Image
2
import sys
3
import serial
4
import io
5
import os
6

7
flag = 0
8
cnt = 0
9
s = bytearray()
10
ser = serial.Serial('COM1', 19200, bytesize=8,parity='N', stopbits=1, timeout=3, xonxoff=0, rtscts=1)
11
durchl =0
12
Bytes1=0
13
Bytes2=0
14
fileformat = '.bmp'
15
while 1:
16
    while flag == 0:
17
        Bytes2=len(s)
18
        s = s + ser.read()     # read up to one hundred bytes
19
        if Bytes2 == Bytes1 and Bytes2 > 0 :             #Wenn Inhalt drinn ist
20
            flag = 1
21
        Bytes1=Bytes2
22
    f = open('Screen' + str(cnt) + fileformat, 'w+b')
23
    binary_format = bytearray(s)
24
    f.write(binary_format)
25
    f.close()
26

27

28
    im=Image.open('Screen' + str(cnt) + fileformat)
29
    a=im.rotate(270,0,1)
30
    a.show()
31
    a.save('Screen' + str(cnt) + '.png')
32
    im.close()
33
    os.remove('Screen' + str(cnt) + fileformat) 
34
    flag=0
35
    Bytes1=0
36
    Bytes2=0
37
    s = bytearray()
38
    cnt=cnt+1

Grüße, vielen Dank und manchem vielleicht noch einigen Spass damit :)
Matthias
Angehängte Dateien:

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 7 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.