Scanner ansteuern – SANE visuell erklärt
SANE („Scanner Access Now Easy“) ist die Schnittstelle, über die unter Linux und anderen Unix-Systemen fast jedes Scanprogramm mit fast jedem Scanner spricht. Hier siehst du, was zwischen scanimage und dem Lichtbalken passiert – Aufruf für Aufruf, Byte für Byte.
test), alle Zahlen werden mit den echten Formeln berechnet.🏗️Wer redet mit wem?
Auf einen Kasten klicken: der Weg durch die Schichten wird hervorgehoben.
test – virtuelles Gerät
Simuliert Scanner ohne Hardware: Testbilder, Einzug (leer nach 10 Scans), Dreipass-Scanner, Handscanner, künstliche Fehler-Statuscodes. Standardmäßig in dll.conf auskommentiert – das Vorbild für den Simulator dieser App.
# /etc/sane.d/dll.conf test $ scanimage -L device `test:0' …
Gerätenamen sind Beispiele im typischen Format des jeweiligen Backends.
🧮Warum eine gemeinsame Schnittstelle?
Das Rechenbeispiel „3 Programme, 4 Geräte: 12 statt 7“ stammt aus der Einführung auf sane-project.org.
🧭Kapitel
Architektur
Frontend, libsane, dll-Meta-Backend, Backends, libusb – und welcher Gerätename wohin führt.
API-Debugger
sane_init bis sane_exit Schritt für Schritt – mit Parametern, Lese-Schleife, Bildaufbau und Fehlern.
Simulierter Scanner
Bereich aufziehen, dpi und Modus wählen: Pixel, Bytes pro Zeile und Dateigröße live – und als PNG speichern.
saned & Netzwerk
Port 6566, Datenverbindung, saned.conf, net.conf und das Protokoll auf Byte-Ebene.
eSCL · WSD · TWAIN · WIA
Treiberlos scannen per HTTP, und wie Windows und macOS Scanner ansprechen.
Befehle & Praxis
scanimage, sane-find-scanner, saned einrichten, Rechte, Debug-Ausgaben, OCR.
Geschichte & Lizenz
Seit 1996: Standard, Versionen, die GPL mit SANE-Ausnahme.
⚡Der ganze Scan in einer Zeile
# test in /etc/sane.d/dll.conf einkommentiert
$ scanimage -L
device `test:0' is a Noname frontend-tester virtual device
device `test:1' is a Noname frontend-tester virtual device
$ scanimage -d 'test:0' --mode Color --resolution 300 \
--format=png -o scan.pngscanimage libsane (dll) test-Backend
──────── ───────────── ────────────
sane_init() ─► lädt Backends aus dll.conf
sane_open("test:0") ─► "test" + "0" ─► sane_open("0")
sane_control_option(mode = "Color") ─► Option setzen
sane_start() ────────────────────────► Bild erzeugen
sane_read() … ◄──────────────────────── Datenblöcke
… bis SANE_STATUS_EOF
sane_cancel() · sane_close() · sane_exit()