Shell-Aufruf mit Ausgabe-Umleitung funzt nicht

  1. 6 weeks ago

    Ich muss Barcodes (Code39) in gescannten Dokumenten finden, um diese Dokumente dann damit umzubenennen. Zunächst habe ich den Barcode-Reader von MBS (XZing) ausprobiert, aber dessen Erkennungsrate ist zu schlecht (sorry, Christian). Also habe ich nach Alternativen gesucht und bin beim kostenlosen "zbarimg" als CLI-Programm (Win/Mac) hängengeblieben. Der findet z.B. mühelos in einer technischen Zeichnung im Format A2 mit 200 dpi den Barcode-Aufkleber in 1.3s! Auch kopfstehend oder schräg ... (Christian: wäre sicher eine Plugin-Idee ... :-)

    Also habe ich den CLI-String (Pfade, Parameter usw.) in Xojo zusammengesetzt und lasse sie auf ein Shell-Objekt mit execute los. Die erste Merkwürdigkeit ist, dass s.result bzw. s.readall immer leer bleiben. Also habe ich die Ausgabe mit " > result.text" in eine Datei umgeleitet ...
    Nun gibt es das Problem. dass zwar das Textfile erstellt wird, aber ebenfalls immer leer ist.

    ABER:

    Führe ich exakt (!) die gleiche Befehlszeile direkt im Terminal aus (habe mir den Code extra per clipboard.text aus Xojo kopiert), funktioniert es genau so, wie es sein soll, die result.txt enthält das Ergebnis.

    Wo ist das Problem? Danke für Tips.

    Nachtrag: Habe auch eine Windows-Version erstellt. Unter Windows funktioniert es per Shell aus Xojo heraus, da enthält die erzeugte Textdatei das Ergebnis. Shell.result oder Shell.readall bleiben aber auch hier leer.

  2. Beatrix W

    Apr 17 Testers, Third Party Store Europe (Germany)

    Code? Gibt es einen Fehler? Ist der Pfad zu zbarimg wirklich richtig?

  3. Ich glaube, ich habe das Problem gelöst. Die Shell in Xojo ist einfach 'n Ticken dümmer als das Terminal. Während im Terminal der Aufruf des Namens "zbarimg ..." genügt (vermutlich kann das Terminal die Umgebungsvariablen lesen), bedarf es in der Shell des kompletten Pfades. Den habe ich mit "mdfind zbarimg" herausbekommen, bei mir lautet er: "/usr/local/Cellar/zbar/0.10_10/bin/zbarimg". Wenn ich also den Pfad mit aufrufe, funktioniert es ...

  4. Jürg O

    Apr 17 Testers, Xojo Pro

    @frank e Die Shell in Xojo ist einfach 'n Ticken dümmer als das Terminal.

    Das steht so auch in der Dokumentation: Shell .

    The Shell is not equivalent to the Terminal or Command app for your OS. Paths and other default settings will likely not be the same.

    Es hat nicht die gleichen Umgebungsvariablen wie im "normalen" Terminal. Es ist es ja auch nicht - somit eigentlich auch logisch.
    Vor allem die Such-Pfad-Umgebung ist anders. Da hast du ja schon herausgefunden wie's dennoch funktioniert. Entweder den ganzen Pfad angeben. Oder beim Öffnen des Shell-Objekts zuerst die Umgebung für die nachfolgenden Befehle selber definieren/konfigurieren.

  5. @Jürg: Kannst du mir ein paar Sitchworte geben, wie man die Umgebungsvariablen an einem Shell-Objekt konfiguriert?

  6. Markus R

    Apr 18 Testers, Xojo Pro Europe / Germany / Lower Saxon...

    vielleicht geht es besser über eine Batch Datei die dann ausgeführt wird.

  7. Jürg O

    Apr 18 Testers, Xojo Pro

    Es ist (meines Wissens) nicht möglich, globale Umgebungsvariablen für Xojo's Shell zu setzen.
    Aber in jeder (neuen) Shell Instanz kann man die gängigen Möglichkeiten nutzen.
    z.B.: https://linuxize.com/post/how-to-set-and-list-environment-variables-in-linux/

  8. Ah ... ok, also mit Kommandos innerhalb der existenten Instanz, nicht durch Properties des Shell-Objektes ... ?

  9. @Markus R vielleicht geht es besser über eine Batch Datei die dann ausgeführt wird.

    Im Notfall ja, aber ich hätte doch gerne eine "schöne kompakte Klasse" ohne viel externe "Vorbereitung" (abgesehen von der Installation von ZBarImg), die unter OSX und Win identisch genutzt werden kann. Die ist ja nun auch fast fertig. Wenn Interesse besteht, kann ich sie ja hier reinstellen ...

  10. Markus R

    Apr 18 Testers, Xojo Pro Europe / Germany / Lower Saxon...

    Eine Code 39 Klasse zum Barcode lesen habe ich mal selber gemacht, war eine Woche Aufwand und sehr lehrreich.

    in gescannten Dokumenten finden, um diese Dokumente dann damit umzubenennen.

    Sag mal von wie vielen Dokumenten redest Du und ist das evtl. nur eine einmal Umwandlung?
    Machst Du diese Umwandlung oder ein Benutzer oder soll das ganz automatisiert laufen?

  11. Es ist Bestandteil eines größeren Digitalisierungs-Projektes, dabei geht es um die Nachbereitung der Inhalte tausender digitalisierter Leitz-Ordner. Im Vorbereitungsprozess werden die Ordner manuell durchgesehen und alles was nicht A4 ist, entnommen. Dabei bekommt die A4-Seite vorher und das entnommene Dokument (meist techn. Zeichnung, A3 und größer) je einen gleichen Barcode-Aufkleber (on demand aus Zebra-Drucker, gesteuert von einer Filemaker-Datenbank), um sie später wieder zusammenzuführen. Die A4-Dokumente gehen als Block durch einen vollautomatischen HP-Dokumentenscanner, der wird manuell benannt. Die A3-Dokumente gehen durch einen Xerox-Einzugsscanner und heissen zunächst alle "scan_20200415_22:53:16" o.ä. Die größeren Dokumente werden manuell durch einen Großformatscanner geschoben und dabei fragt die Scansoftware jedesmal nach einem Dateinamen. Der wird durch einen Barcode-Handscanner geliefert, der das Etikett liest.

    Also müssen am Schluß die A3-Dateien nach den mitgescannten Barcodes durchsucht werden, um sie umzubenennen und die A4-Seiten, um die Stelle zu finden, wo das A3 eingefügt werden muss. Die größeren Zeichnungen werden nicht wieder in den A4-Block eingefügt, die kommen in den Anhang, dann muss der Barcode im A4 zu einem Link werden. Endformat ist PDF, die Scans davor erfolgen alle nach PNG ...

    Die Software zbarimg kann übrigens ziemlich viele 1D und 2D-Codes lesen, sie wird aber schenller, wenn man nur die aktiviert, die man tatsächlich sucht. Ich habe zunächst mit Code39 angefangen, weil der sich bequem in Filemaker als Javascript einbinden ließ, und die Dateinamen, die ich brauche sind nicht sehr lang. Inzwischen habe ich auch den QR-Code als Javascript, werde wohl demnächst darauf umstellen ...

  12. Markus R

    Apr 18 Testers, Xojo Pro Europe / Germany / Lower Saxon...

    Ich denke mal die A3 Seiten sollen ganz bleiben, ansonsten wenn man die durch schneidet hat man 2x A4.

    Wenn ich das jetzt richtig verstanden habe ist dieser automatische Dateiname blöd oder
    das die gescannten A4 und A3 nicht in einem Datei Ordner landen.

  13. Edited 6 weeks ago

    Die A3-Seiten sollen unbedingt ganz bleiben. :-)

    Also im Moment sehe ich eigentlich kein wirkliches Problem mehr, das System funtioniert so, wie geplant. Bedenke, es geht um mehrere tausend Dokumente, die auf verschiedenen Scannern verarbeitet und am Ende automatisch wieder zusammengefügt werden sollen.

    Ich hatte im Vorfeld Tests mit dem Barcodereader aus dem MBS-Plugin gemacht, die eigentlich ganz hoffungsvoll verliefen. Leider zeigte sich, dass dann im "harten Einsatz" die Erkennungsrate einfach zu schlecht ist, deshalb meine hektische Suche nach anderen Lösungen. Mit zbarimg habe ich aber ein super geeignetes Tool gefunden, nur die Einbindung per Shell war zunächst etwas holprig. Läuft aber jetzt gut.

  14. Markus R

    Apr 18 Testers, Xojo Pro Europe / Germany / Lower Saxon...

    on demand aus Zebra-Drucker

    Hoffentlich ein Modell was nicht rum zickt oder mind. zwei von denen.

    Und noch was lustiges, vielleicht kennst Du das noch nicht.
    Youtube David Kriesel: Traue keinem Scan, den du nicht selbst gefälscht hast

  15. Jepp, danke, die Xerox-Story kenn ich. Wir haben den Modus abgeschaltet.

  16. Tomas J

    Apr 19 Testers, Xojo Pro Europe (Germany)

    @frank e Ich muss Barcodes (Code39) in gescannten Dokumenten finden, ...

    Für ein vergleichbares Projekte habe ich gute Erfahrungswerte was EInhugurs' BarcodePlugin Klassen betrifft. Schon damit probiert? zumindest für mein Projekt war die Erkennungsrate vollkommen okay.

    Ansonsten für Dein Terminal Problem betrifft, wurde der entscheidente Hinweis gegeben, Scripte als Bash Script oder Windows Batchfiles erstellen und ausführen lassen.

or Sign Up to reply!