🖨️ Visuelle Erklärung

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.

🧪
Simulation im Browser. Diese Seite steuert keinen echten Scanner an – der Server hat keinen, und ein öffentlich erreichbarer Scanner wäre ein Sicherheitsrisiko. Der simulierte Scanner bildet das Verhalten der SANE-API nach (Vorbild: das SANE-Test-Backend test), alle Zahlen werden mit den echten Formeln berechnet.

🏗️Wer redet mit wem?

Ein Frontend kennt keinen einzigen Scanner. Es ruft nur die SANE-Funktionen in libsane auf – das dll-Meta-Backend reicht jeden Aufruf an das richtige Backend weiter, und erst das Backend spricht die Sprache des Geräts.
FrontendslibsaneBackendsTransportGerätescanimageXSaneSimple ScanSkanliteNAPS2libsane (dll)genesyspixmaepson2hpaioesclairscannettestlibusb / KernelHTTP · mDNSTCP 6566 → saned(keine Hardware)USB-ScannerNetzwerk-MFPScan-ServerTestbild

Auf einen Kasten klicken: der Weg durch die Schichten wird hervorgehoben.

Backends

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?

ohne gemeinsame API
3 × 4 = 12
Treiber je Programm und Gerät
mit SANE
3 + 4 = 7
Programme + Backends

Das Rechenbeispiel „3 Programme, 4 Geräte: 12 statt 7“ stammt aus der Einführung auf sane-project.org.

SANE-API

🧭Kapitel

⚡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.png
scanimage          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()