PIL -> Sane -> fileno() = Problem ;-)

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
XT@ngel
User
Beiträge: 255
Registriert: Dienstag 6. August 2002, 14:36
Kontaktdaten:

Hi,
Ich hab ein Problem mit dem Sane Interface bzw scheint da ein Bug drinnen zu sein.

Es geht um die Methode: SaneDev.fileno()
Der Doc string von fileno():
"Return the file descriptor for the scanning device"

Jedoch liefert mir die Methode nur:

Code: Alles auswählen

Traceback (most recent call last):
  File "quickS.py", line 13, in ?
    fd = Scanner.fileno()
_sane.error: Invalid argument
Egal ob über Sane oder _sane, kommt immer das selbe raus.
Kann mir das mal bitte jemand bestätigen? :)
Weil ich werd hier noch total wuschig :mrgreen:

MfG
Andreas
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Hi Andreas,

auch wenn ich mich damit lächerlich mache: Was ist "Sane" überhaupt? Mein PIL (v. 1.1.5c1 ) kennt gar kein "Sane", "SaneDev", "_sane", etc.

Und da das Problem ja schon in Zeile 13 auftritt: Vielleicht magst Du die ersten 12 oder so Zeilen auch noch posten - kann ja vielleicht helfen.

Gruß,
Christian
XT@ngel
User
Beiträge: 255
Registriert: Dienstag 6. August 2002, 14:36
Kontaktdaten:

Sane ist praktisch der Standard um einen Scanner unter Linux zu betreiben:
http://www.sane-project.org/docs.html

Das Scannen mit:

Code: Alles auswählen

import sane
from PIL import Image
sane.init()
DeviceList = sane.get_devices()
Scanner = sane.open(DeviceList[0][0]) #Erste scanner der gefunden wird
Scanner.resolution = 150
Scanner.depth = 16
Scanner.br_x = 203.0
Scanner.br_y = 295.0
Scanner.start()
im=Scanner.snap()
Scanner.lamp_switch = 0
Scanner.close()
im.save('tmp.jpeg')
funktioniert.

Aber sobald ein

Code: Alles auswählen

Scanner.fileno() 
dazu kommt, gibts einen Fehler,
Sane ist nur ein Warpper Modul für _sane, deshalb dacht ich zuerst das in sane der Fehler liegt.
Aber ein blick in den Code vom Modul sane zeigt schnell das der Fehler wohl in _sane stecken muss.

Bisher ist alles was an code da ist, nur Testcode um zu sehen wie das Modul arbeitet.
Da xsane, (GUI für Sane) meiner Schwester zu komplizier ist ;) wollt ich was einfacheres schreiben.

BTW: kann mir jemand sagen wie ich mit Python einen USB überwache, um zu wissen welche Taste am Gerät (Scanner) gedrückt wird?

Danke
Andreas
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Aha, dann tut es mir leid: Ich habe keine Ahnung, wo das Problem liegen könnte. Ich habe ein wenig gesucht und nichts gefunden, was weiterhelfen könnte.
"Sane" sagte mir nichts und nach Deiner Frage habe ich geblaubt es sei ein Teil von PIL - und war vollkommen verwirrt ;-).

Hoffe hier kann Dir noch jemand helfen. Sonst versuche halt noch die Mailingliste.

Viel Glück,
Christian
BlackJack

CM hat geschrieben:"Sane" sagte mir nichts und nach Deiner Frage habe ich geblaubt es sei ein Teil von PIL - und war vollkommen verwirrt ;-).
Das `sane` Modul ist Bestandteil von PIL.

Zur `fileno()` Problematik kann ich auch nichts sagen. Wo genau fügst Du den Aufruf denn ein? Irgendwo zwischen `open` und `close` müsste es eigentlich klappen.
XT@ngel
User
Beiträge: 255
Registriert: Dienstag 6. August 2002, 14:36
Kontaktdaten:

BlackJack hat geschrieben: zwischen `open` und `close` müsste es eigentlich klappen.
Ich habs, war auch fast richtig ;) fileno() funktioniert erst wenn der Scanner auch wirklich beim scannen ist. Also nach start().
Was ja auch irgendwie logisch ist *g*

Ein blick in die API Doc hätte auch geholfen
http://www.sane-project.org/html/doc013.html :roll:

Danke!!
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

In der Tat: sane ist Bestandteil von PIL. Ich hatte es allerdings nicht bei mir installiert, weil ich zu faul war PIL zu Fuß zu installieren, einen Installer nahm und sane auch nicht brauchte. (War eine Woche semi-offline und konnte erst jetzt herausfinden, woran es lag.)
Tut mir leid, wenn ich unnötig Verwirrung gestiftet habe und meine Beträge wenig produktiv waren.

Gruß,
Christian
Antworten