Moin, für den Fall, das das jemand brauchen kann: ich hab vor geraumer Zeit mal nen Konverter von ESC/P nach PNG und Co geschrieben. Nutze ich für mein HP54645D um Screenprints als PNG zu erhalten. Sollte faktisch für alle Oszis und Gerätschaften geeignet sein, die ESC/P (=EPSON-kompatibler Nadeldrucker) ausspucken können. Man muss die Datei halt erstmal aufm PC empfangen und kann sie dann in PNG umwandeln. Getestet nur unter Linux, sollte aber auch auf anderen Systemen übersetzbar sein. Braucht die imlib2. Aktuelle Version ist unter http://git.al84.de/?p=escp2img.git;a=snapshot;h=HEAD;sf=tgz Gruß Andreas Lang
Der Link auf's Git funktioniert leider nicht. Gruß Michael
Michael schrieb: > Der Link auf's Git funktioniert leider nicht. Ist ja auch schon 5 Jahre alt (Das Oszi ist noch viel älter). Georg
Stimmt, das git ist nicht mehr online (das wollte ich eigentlich mal behoben haben...) Den letzten Stand hab ich mal in einem .zip beigefügt. Als Build-System kommt inzwischen qmake zum Einsatz (wodurch man einfach den qtcreator dafür nutzen kann, das Programm zu bauen) Grüße Andreas
Wenn jemand escp2img.zip compiliert kriegen will, bei mir funktioniert dieses Kommando (Arch Linux):
gcc -O3 -Wall -Wextra -Wpedantic -o escp2img main.cpp escp.cpp $(pkg-config --cflags --libs imlib2)
imlib2 Paket muss installiert sein.
Wenn jemand escp2img.zip compiliert kriegen will, bei mir funktioniert dieses Kommando (Arch Linux):
gcc -O3 -Wall -Wextra -Wpedantic -o escp2img main.cpp escp.cpp $(pkg-config --cflags --libs imlib2)imlib2 Paket muss installiert sein.
Danke fuer den codierten Hinweis. Und wie tippe ich das korrekt ein. Copy and paste geht nicht, trotz Arch aktuell.
Der Code scheint etwas ... äh, schlunzig zu sein, aber das, was in Deinem Screenshot (warum nur? Das ist Text!) zu sehen sind, sind lediglich Warnungen.
Wie willst Du was korrekt eintippen?
Du hast ja was eingetippt, und es offensichtlich geschafft, gcc aufzurufen.
Die Warnungen liegen halt am ... schlunzigen Code.
Hier jetzt mal die drei aus escp.cpp:
1 |
|
Ersetze diesen Unfug durch
1 |
|
und Du bist schon mal eine Warnung los.
Und das hier
1 |
|
durch
1 |
|
1 |
|
Offenkundig hat Dein /char/ ein Vorzeichen, deswegen ist in der Zeile davor der Vergleich > 127 sinnlos.
Ersetze den Kram durch "isprint":
1 |
|
:-( Gibt ganz neue Fehler. Fragt sich nur ich wie die jetzt wegbekomme.
Fragt sich nur ich wie die jetzt wegbekomme.
Tja, indem Du Dir jede Fehlermeldung bzw. jede Warnung ansiehst und in Deinem C++-Lehrbuch nachsiehst, was sie bedeuten.
Und fang' vorne, mit der ersten Fehlermeldung bzw. Warnung an.
Wie bereits an den paar Beispielen zu sehen, ist das schlunzig hingerotzter Code.
Allerdings: alles, was Du bislang gezeigt hast, waren keine Fehlermeldungen, sondern Warnungen. Das ist nicht das gleiche. Eine Warnung bedeutet, daß die entsprechende Stelle /potentiell/ fehlerhaft ist, aber sich durchaus übersetzen lässt.
Ein Fehler ist etwas, was den Compiler dazu bringt, das Handtuch zu werfen und kein ausführbares Ergebnis zu produzieren.
Derjenige, der den Code hingerotzt hat, wird wohl Warnungen einfach ignoriert haben, nach dem Motto "wird schon nicht so schlimm sein".
Gibt denn der Compiler auch eine richtige Fehlermeldung aus, oder erzeugt er am Ende eine ausführbare Datei?
:-( Gibt ganz neue Fehler. Fragt sich nur ich wie die jetzt wegbekomme.
isprint() braucht ein #include <ctype.h> am Anfang der Datei escp.cpp, also z.B.
1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
9 |
|
10 |
|
11 |
|
12 |
|
;-)
Zu meiner Verteidigung, das Semikolon stammt nicht von mir... aber du hast ja recht!
Also nochmal:
1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
9 |
|
10 |
|
11 |
|
12 |
|
Ganze Arbeit, jetzt sind es jede Menge Fehler. Spielen wir hier Schnitzeljagd?
gcc -O3 -Wall -Wextra -Wpedantic -o escp2img main.cpp escp.cpp $(pkg-config --cflags --libs imlib2) main.cpp: In function ‘int main(int, char**)’: main.cpp:91:14: warning: variable ‘input_set’ set but not used [-Wunused-but-set-variable] 91 | bool input_set=false; | ^~~~~~~~~ escp.cpp: In function ‘int copy_line()’: escp.cpp:47:23: error: ‘cc’ was not declared in this scope 47 | int copy_line() {if ((cc<32)||(cc>127)) { | ^~ escp.cpp:63:12: warning: empty parentheses were disambiguated as a function declaration [-Wvexing-parse] 63 | int newline() { | ^~ escp.cpp:63:12: note: remove parentheses to default-initialize a variable 63 | int newline() { | ^~ | -- escp.cpp:63:12: note: or replace parentheses with braces to value-initialize a variable escp.cpp:63:15: error: a function-definition is not allowed here before ‘{’ token 63 | int newline() { | ^ escp.cpp:75:78: error: a function-definition is not allowed here before ‘{’ token 75 | ite_line_data(int length, unsigned char * data, bool flip_data=false) { | ^
escp.cpp:89:34: error: a function-definition is not allowed here before ‘{’ token 89 | void write_char(unsigned char c) { | ^ escp.cpp💯34: error: a function-definition is not allowed here before ‘{’ token 100 | void fixme(const char * reason ) { | ^ escp.cpp:235:2: error: expected ‘}’ at end of input 235 | } | ^ escp.cpp:47:17: note: to match this ‘{’ 47 | int copy_line() {if ((cc<32)||(cc>127)) { | ^ escp.cpp:235:2: warning: control reaches end of non-void function [-Wreturn-type] 235 | }
Lasst es ganz einfach, ich versuche es lieber selbst.
Ganze Arbeit, jetzt sind es jede Menge Fehler. Spielen wir hier Schnitzeljagd?
Keine Ahnung, was du hier spielst.
escp.cpp: In function ‘int copy_line()’: escp.cpp:47:23: error: ‘cc’ was not declared in this scope
Im weiter oben angehängten zip-File steht da in Zeile 47 was ganz anders.
Welche Version des Sourcecode versuchts du denn zu compilieren, und wo hast du die her?
Oliver
escp.cpp: In function ‘int copy_line()’: escp.cpp:47:23: error: ‘cc’ was not declared in this scope 47 | int copy_line() {if ((cc<32)||(cc>127)) { | ^~
Der Vergleich von "cc" erfolgt in einer Funktion nmanes "fixme", die Variable wird direkt in der Zeile über dem Vergleich definiert und initialisiert.
Was auch immmer Du da Deinem Compiler vorgesetzt hast, hat nichts mehr mit dem Quelltext von 2016 zu tun.
Was ist eigentlich Deine Erwartungshaltung?
Anbei der Quelltext + Executable (Linux Amd64). Kompiliert bis auch eine Warnung. Die Warnung bekommt man raus, wenn man die Variable "input_set" komplett eliminiert. Sie wird nur 2x zugewiesen, aber nie geprüft.
1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.


