Artikelformat

Barcodes unter Linux verwenden

1 Kommentar

Ich habe mir ein kleines Skript geschrieben, welches zbar zum Scannen eines Barcodes aufruft und das Resultat direkt im aktuellen Fenster an Curserposition einfügt.

#! /bin/bash
# Abhängigkeiten:
#   zbar (enthält zbarcam)
#   xautomation (enthält xte)
trap ctrl_c INT
endScan=0;
function ctrl_c() {
 endScan=1;
}
tmp=/tmp/barcode.$$
zbarcam --raw --nodisplay > $tmp &
pid=$!
# Schlafen bis Datei Inhalt hat
while [[ ! -s $tmp ]] ; do
 sleep 1
 if [ $endScan == 1 ]; then
 break
 fi
done
kill $pid
CODE=$(cat $tmp)
rm $tmp
# Code über die "Tastatur" ausgeben.
xte "str $CODE"

Welchen Sinn hat´s? Ich wollte einen Barcode über die Webcam einlesen und direkt in einem beliebigen Fenster verwenden (z.b. Textfeld im Browser, Adressleiste etc.). Am besten legt man sich eine systemweite Tastenkombination an, die das Skript aufruft und kann so im offenen Fenster einen Barcode einlesen. Wer Verbesserungsvorschläge oder Ideen hat, nur her damit.

Update: Dank Stefan kann es jetzt auch per Ctrl+C beendet werden

1 Kommentar An der Unterhaltung teilnehmen

  1. Du kannst auch direkt den output von zbarcam in eine while-schleife pipen und dann verwenden. Ganz ohne Temp-Datei. Aus irgendeinem Grund hats bei mir auch nicht gleich funktioniert (ich kann das leider nicht mehr reproduzieren). Siehe auch hier:

    http://unix.stackexchange.com/questions/49019/reading-from-stdin-and-using-data-immediatly-while-still-reading-or-opening-a

    So öffest du zB. einen Firefox-URL jedesmal wenn du einen Code davor hältst:
    zbarcam –raw| while read URL; do firefox $URL; done

    Antworten

Schreibe eine Antwort

Pflichtfelder sind mit * markiert.