Scanprozess wird nicht ausgeführt

Alles rund um die Programmierung mit Qt
Antworten
ralli
Beiträge: 45
Registriert: 28. September 2004 06:05

Scanprozess wird nicht ausgeführt

Beitrag von ralli »

Ich habe ein kleines Programm geschrieben, was die Klasse QProcess benutzt und scanimage zum einscannen eine Argumentenliste übergibt:

Code: Alles auswählen

QString programm = "scanimage";

QString device = "-d hpaio:/usb/Photosmart_C4100_series?serial=MY6A9G11T204J7";
QString bildformat = "--format=tiff";
QString scanart = "--mode lineart";
QString aufloesung = "--resolution 300";
QString DINA4 = "-x 210 -y 295";
QString ausgabedatei = ">/home/ralph/ocrarbeit/eingabe.tif";

QStringList arguments;

arguments << device << bildformat << scanart << aufloesung << DINA4 << ausgabedatei;

QProcess *Scan_Prozess = new QProcess(this);

Scan_Prozess->start(programm, arguments);
Leider tut sich überhaupt nichts.

In der Konsole sieht das so aus und funktioniert auch:

scanimage -d hpaio:/usb/Photosmart_C4100_series?serial=MY6A9G11T204J7 --format=tiff --mode lineart --resolution 300 -x 210 -y 295 > /home/ralph/ocrarbeit/eingabe.tif

Ich habe mir die Dokumention angeschaut und mich mit der Klasse QProcess beschäftigt, sowie einige Threads hier im Forum durchgelesen, aber ich habe einen Denkfehler und komme hier leider nicht weiter.
Arch Linux - Openbox: CPU: P4 3,0 - RAM: 2048 MB - Graka: Nvidia Geforce 9500 GT 1024 MB mit aktuellem Nvidia Treiber - HDD: 250 GB und 1 TB - Qt 4.7.0 - QtCreator 2.01
RavenIV
Beiträge: 267
Registriert: 21. Januar 2009 14:24
Wohnort: Waldshut

Beitrag von RavenIV »

Könnte es villeicht daran liegen, dass Du zwischen die Argumente noch ein Leerzeichen eintragen musst?
Lass Dir mal den Argumentstring anzeigen.
Linux, das längste Text-Adventure aller Zeiten
ralli
Beiträge: 45
Registriert: 28. September 2004 06:05

Beitrag von ralli »

Das war es leider nicht. Ich habe jetzt system("..") benutzt, funktioniert, aber es gibt eine Warnung beim Compilieren:

Code: Alles auswählen

src/dialogimpl.cpp:47: warning: ignoring return value of ‘int system(const char*)’, declared with attribute warn_unused_result 
Ich glaube, ich muss QProces::startDetached nehmen, komme aber noch nicht ganz klar damit.
Arch Linux - Openbox: CPU: P4 3,0 - RAM: 2048 MB - Graka: Nvidia Geforce 9500 GT 1024 MB mit aktuellem Nvidia Treiber - HDD: 250 GB und 1 TB - Qt 4.7.0 - QtCreator 2.01
bst
Beiträge: 56
Registriert: 7. November 2006 13:16
Wohnort: Ilsfeld

Beitrag von bst »

Auch Hallo,
QString ausgabedatei = ">/home/ralph/ocrarbeit/eingabe.tif";
dazu brauchst Du i.A. eine Shell, oder handelt Dein scanimage E/A-Umleitung selber?

cu, Bernd
ralli
Beiträge: 45
Registriert: 28. September 2004 06:05

Beitrag von ralli »

Ich möchte den Umweg über xsane vermeiden, weil die übergebenen Argumente ja nie geändert werden. Anschliessend soll im zweiten Durchgang die Tiff Datei mit der Ocr Textengine tesseract bearbeitet und der erkannte Text zur Weiterbearbeitung in einem Textwidget angezeigt werden. Scanimage ist ein Konsolenprogramm und benötigt zur Ausführung eine Shell. Natürlich geht es mit der QProcess Klasse, aber mir fehlt die Erfahrung. Ich habe die Qt Doku bereits gequält, aber es funktioniert nicht, weil mir das Hintergrundwissen fehlt. Natürlich kenne ich den Unterschied zwischen synchronem und asynchronen Prozessen, aber es liegt wohl an der gepipten Ausgabedatei. Leider habe ich kein Beipiel für einen solchen Anwendungsfall gefunden, das ich durcharbeiten konnte, um mein Wissen zu festigen.
Arch Linux - Openbox: CPU: P4 3,0 - RAM: 2048 MB - Graka: Nvidia Geforce 9500 GT 1024 MB mit aktuellem Nvidia Treiber - HDD: 250 GB und 1 TB - Qt 4.7.0 - QtCreator 2.01
bst
Beiträge: 56
Registriert: 7. November 2006 13:16
Wohnort: Ilsfeld

Beitrag von bst »

Ich hatte das so gemeint:

Code: Alles auswählen

QString programm = "sh"; 
oder

Code: Alles auswählen

QString programm = "bash"; 
o.ä.

dann nimm zusätzlich "-c" und "scanimage" am Anfang der Arguments (!) hinzu.
ralli
Beiträge: 45
Registriert: 28. September 2004 06:05

Beitrag von ralli »

Aha, ich verstehe und werde es a ausprobieren, danke für Deine Hilfe.
Arch Linux - Openbox: CPU: P4 3,0 - RAM: 2048 MB - Graka: Nvidia Geforce 9500 GT 1024 MB mit aktuellem Nvidia Treiber - HDD: 250 GB und 1 TB - Qt 4.7.0 - QtCreator 2.01
Antworten