On Thu, 2 Jun 2005, Henning Meier-Geinitz wrote:
> > Having spent some time with ethereal I have a working proof-of-concept
> > driver for network scanning, written as a little perl script
> Could you upload this script to a website so we can link to it?
It's still very much experimental so probably not ready for "release" yet.
Currently single page JPEG and TIFF documents should work ok.
> > - driver locates scanner by listening for multicast messages (In Windows
> > this is a "one off" when you set up your Dell 1600n)
> So the scanner sends multicast messages continously?
Yes - every 30 seconds or so.
> > - person walks up to scanner, presses "scan" button and selects named
> > driver from a list of available ones (those which have registered)
> > - scanner sends driver UDP message asking for a TCP connection
> The user must press the scan button of xsane before walking to
> the scanner. He has to select the scanmode/resolution anyway.
> Then the backend waits for the UDP message.
Note that the user may override any/all preferences for scan mode and
resolution on the Dell 1600n front panel so the software cannot assume
that its preferences will be honoured.
> I guess it's possible to use a SANE backend to do this but it's most
> probably not elegant.
I'm also not sure that a SANE backend would be pretty for the following
1. The scanner sends sends (semi-)formatted data (JPEG/TIFF/PDF) rather
than raw raster. It would be somewhat perverse to uncompress the
data in order to pass it through the SANE API when the client app
would most likely have to recompress it on save.
2. There appears to be no way to tell the scanner to start scanning other
than by physically pressing the buttons on the front panel.
3. Scanned documents may consist of multiple pages. The client code has
no way of knowing this information in advance.
So maybe SANE is not the way to go, which is a shame.
My plans for this script (when I have the time) are to add PDF and
multi-page document support (ie: the same functionality as the windows
driver provides) plus some user documentation.
Since this works ok as a perl script I don't see any advantage in
rewriting it in C although I may remove some of the module dependencies
(eg: Data::HexDump). As it is it should be cross-platform although there
may be endian issues on non-Intel. I'm happy to assist anyone who feels
the urge to port it though.