sane-project-website/old-archive/2001-02/0232.html

261 wiersze
9.8 KiB
HTML
Czysty Wina Historia

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"
"http://www.w3.org/TR/REC-html40/loose.dtd">
<HTML>
<HEAD>
<TITLE>sane-devel: Writing Fujitsu M3091 backend</TITLE>
<META NAME="Author" CONTENT="Frederik Ramm (frederik@remote.org)">
<META NAME="Subject" CONTENT="Writing Fujitsu M3091 backend">
</HEAD>
<BODY BGCOLOR="#FFFFFF" TEXT="#000000">
<H1>Writing Fujitsu M3091 backend</H1>
<!-- received="Tue Feb 27 05:25:02 2001" -->
<!-- isoreceived="20010227132502" -->
<!-- sent="Tue, 27 Feb 2001 13:42:17 +0000" -->
<!-- isosent="20010227134217" -->
<!-- name="Frederik Ramm" -->
<!-- email="frederik@remote.org" -->
<!-- subject="Writing Fujitsu M3091 backend" -->
<!-- id="20010227134217.A9112@aruba.remote.org" -->
<STRONG>From:</STRONG> Frederik Ramm (<A HREF="mailto:frederik@remote.org?Subject=Re:%20Writing%20Fujitsu%20M3091%20backend&In-Reply-To=&lt;20010227134217.A9112@aruba.remote.org&gt;"><EM>frederik@remote.org</EM></A>)<BR>
<STRONG>Date:</STRONG> Tue Feb 27 2001 - 05:42:17 PST
<P>
<!-- next="start" -->
<LI><STRONG>Next message:</STRONG> <A HREF="0233.html">Davis, Tom: "Fujitsu fi-4750C Backend Project"</A>
<UL>
<LI><STRONG>Previous message:</STRONG> <A HREF="0231.html">Marian Eichholz: "Poll:ScanMaker3600"</A>
<!-- nextthread="start" -->
<LI><STRONG>Next in thread:</STRONG> <A HREF="0234.html">Nick Lamb: "Re: Writing Fujitsu M3091 backend"</A>
<LI><STRONG>Reply:</STRONG> <A HREF="0234.html">Nick Lamb: "Re: Writing Fujitsu M3091 backend"</A>
<LI><STRONG>Reply:</STRONG> <A HREF="0237.html">Oliver Rauch: "Re: Writing Fujitsu M3091 backend"</A>
<LI><STRONG>Reply:</STRONG> <A HREF="0245.html">Mick Barry: "Re: Writing Fujitsu M3091 backend"</A>
<LI><STRONG>Reply:</STRONG> <A HREF="0247.html">Tom Martone: "Re: Writing Fujitsu M3091 backend"</A>
<!-- reply="end" -->
<LI><STRONG>Messages sorted by:</STRONG>
<A HREF="date.html#232">[ date ]</A>
<A HREF="index.html#232">[ thread ]</A>
<A HREF="subject.html#232">[ subject ]</A>
<A HREF="author.html#232">[ author ]</A>
</UL>
<HR NOSHADE><P>
<!-- body="start" -->
<P>
Hi,
<BR>
<P>&nbsp;&nbsp;&nbsp;if anybody has (or is writing) a driver for the Fujitsu M3091,
<BR>
please send me an eMail and disregard the remainder of this message.
<BR>
Otherwise, read on:
<BR>
<P>My background:
<BR>
&nbsp;&nbsp;&nbsp;Reasonable C programming experience but no SCSI drivers or SANE
<BR>
&nbsp;&nbsp;&nbsp;stuff yet.
<BR>
<P>My scanner:
<BR>
&nbsp;&nbsp;&nbsp;Fujitsu M3091DCd, a scanner that looks more like a fax machine and
<BR>
&nbsp;&nbsp;&nbsp;is ADF-only, supports 50-300 by 50-600 dpi in line art, grayscale
<BR>
&nbsp;&nbsp;&nbsp;and 24bit color, 128 kB cache and duplex (!). I am in possession of
<BR>
&nbsp;&nbsp;&nbsp;the full SCSI command documentation for that specific scanner.
<BR>
<P>My goal:
<BR>
&nbsp;&nbsp;&nbsp;To get as much as possible of that working with SANE. Below is a
<BR>
&nbsp;&nbsp;&nbsp;report of my current progress, and I would be very happy about any
<BR>
&nbsp;&nbsp;&nbsp;and all sort of hints, tips, tricks, pitfalls, spiritual guidance,
<BR>
&nbsp;&nbsp;&nbsp;links to documentation etc :-)
<BR>
<P>With minor changes, I got Randolph Bentson's M3096 driver to work with
<BR>
this scanner supporting the full resolution but neither color nor
<BR>
duplex. I was thinking about using that driver as a basis and make
<BR>
extensions as necessary, but I have some questions for the SANE
<BR>
experts here before I go on.
<BR>
<P>Question 1 - How to do duplex scanning.
<BR>
<P>To use the duplex mode, I have to send an extended SET WINDOW command
<BR>
to the scanner which should be no problem. The question is, how do I
<BR>
then feed the two images into SANE? As far as I can see from the
<BR>
existing driver, a subprocess gets started to read more-or-less raw
<BR>
binary data from the scanner, which is then passed via a pipe to the
<BR>
calling program; it seems to &quot;leave&quot; the backend via the sane_read
<BR>
function. Since the scanner has dual scan heads and only 128 kB of
<BR>
cache, in duplex mode it will send a data stream that contains two
<BR>
interspersed images. I would be able to separate them on reading, but
<BR>
what next? How do I tell the SANE middleware (or front-end for that
<BR>
matter) that I actually have TWO images? How would a front-end (like
<BR>
scanimage, the only one I've used so far) cope?
<BR>
<P>If SANE doesn't support that, I could introduce a new parameter that
<BR>
controls whether the front or rear side is to be scanned, and each
<BR>
page would have to be run through the scanner twice. A waste, but
<BR>
possible.
<BR>
<P>I've grepped for &quot;duplex&quot; in the existing backends (1.0.4) but found
<BR>
nothing.
<BR>
<P>Question 2 - How to do the color thing.
<BR>
<P>This is just a quick question in case somebody has noticed something
<BR>
similar with their scanners. When I read color data from the scanner,
<BR>
I get one row of &quot;R&quot; values, then one row of &quot;G&quot; values, then one row
<BR>
of &quot;B&quot; values, and so on. These are slightly offset, e.g. the first
<BR>
row of &quot;R&quot; values have to be paired with the fifth row of &quot;G&quot; and the
<BR>
ninth row of &quot;B&quot; values or so (the documentation is detailed but at
<BR>
the same time not very clear on that - <A HREF="http://www.fujitsu-europe.com/">http://www.fujitsu-europe.com/</A>
<BR>
home/support/scanner/manuals/M3091dc.scsi.en.pdf, pp. 75-77). So far,
<BR>
so good, but in reality it seems that after a certain number of these
<BR>
R row/G row/B row groups I suddenly get TWO R rows following each
<BR>
other, and then on like before, and the same phenomenon again every x
<BR>
blocks. I haven't fully investigated that and don't really know what
<BR>
to make of it yet.
<BR>
<P>I do understand that I'll have to get all the bytes into the right
<BR>
order before passing them on to the SANE middleware. Once I found out
<BR>
what the correct order is, that should be no problem. However I don't
<BR>
know how the scanner deals with the specified window size in relation
<BR>
to the sensor offset. If, as stated above, the R/G/B sensors are
<BR>
offset by 4 lines each, that means that there are 8 lines of
<BR>
incomplete data at the beginning and the end of the data stream. If I
<BR>
request an image of, say, 100 pixels in height, will the scanner then
<BR>
give me 100 of which only 84 are fully usable, or will it give me 116?
<BR>
<P>Randolph has suggested looking at the SP15C driver which contains
<BR>
color support, and I'll do that.
<BR>
<P>Question 3 - How to support the &quot;hot button(s)&quot;
<BR>
<P>This is probably beyond the scope of SANE but maybe somebody knows
<BR>
something. The scanner has the following controls: a &quot;scan&quot; button, a
<BR>
&quot;duplex&quot; button, a &quot;send to&quot; button, and a number dial that can select
<BR>
numbers 0-9. The scanner does nothing with these buttons; the obvious
<BR>
purpose (as supported by some Windows software that comes with it) is
<BR>
that you can insert a document and then, by pressing one of them, have
<BR>
your computer launch a program that does something. (My idea of use
<BR>
would be assigning categories to the numbers, i.e. 1=bills, 2=bank
<BR>
letters, 3=personal letters, etc., and then use the number dial and
<BR>
&quot;send&quot; button on the scanner to store documents away in the proper
<BR>
folders on my Linux box.)
<BR>
<P>The SCSI docs tell me that there are some extended fields in the
<BR>
scanner's response to the INQUIRY command that tell you if one of
<BR>
these buttons has been pressed. The respective fields are &quot;true&quot; for
<BR>
three seconds after button press. So I imagine I'd need some sort of
<BR>
&quot;inquiry daemon&quot; that sends the command to the scanner every 2 seconds
<BR>
or so and then launches whatever program has been defined when certain
<BR>
fields in the response data have certain values.
<BR>
<P>Does such a program already exist? If not, can somebody point me to a
<BR>
very very simple program that (outside of the SANE context) sends a
<BR>
simple SCSI command to a device and evaluates the response, so that I
<BR>
could work from there?
<BR>
<P>Bye
<BR>
Frederik
<BR>
<P><PRE>
--
Frederik Ramm ## eMail <A HREF="mailto:frederik@remote.org?Subject=Re:%20Writing%20Fujitsu%20M3091%20backend&In-Reply-To=&lt;20010227134217.A9112@aruba.remote.org&gt;">frederik@remote.org</A> ## N57<35>48.10' W005<30>40.32'
<P><P>--
Source code, list archive, and docs: <A HREF="http://www.mostang.com/sane/">http://www.mostang.com/sane/</A>
To unsubscribe: echo unsubscribe sane-devel | mail <A HREF="mailto:majordomo@mostang.com?Subject=Re:%20Writing%20Fujitsu%20M3091%20backend&In-Reply-To=&lt;20010227134217.A9112@aruba.remote.org&gt;">majordomo@mostang.com</A>
</PRE>
<P><!-- body="end" -->
<HR NOSHADE>
<UL>
<!-- next="start" -->
<LI><STRONG>Next message:</STRONG> <A HREF="0233.html">Davis, Tom: "Fujitsu fi-4750C Backend Project"</A>
<LI><STRONG>Previous message:</STRONG> <A HREF="0231.html">Marian Eichholz: "Poll:ScanMaker3600"</A>
<!-- nextthread="start" -->
<LI><STRONG>Next in thread:</STRONG> <A HREF="0234.html">Nick Lamb: "Re: Writing Fujitsu M3091 backend"</A>
<LI><STRONG>Reply:</STRONG> <A HREF="0234.html">Nick Lamb: "Re: Writing Fujitsu M3091 backend"</A>
<LI><STRONG>Reply:</STRONG> <A HREF="0237.html">Oliver Rauch: "Re: Writing Fujitsu M3091 backend"</A>
<LI><STRONG>Reply:</STRONG> <A HREF="0245.html">Mick Barry: "Re: Writing Fujitsu M3091 backend"</A>
<LI><STRONG>Reply:</STRONG> <A HREF="0247.html">Tom Martone: "Re: Writing Fujitsu M3091 backend"</A>
<!-- reply="end" -->
<LI><STRONG>Messages sorted by:</STRONG>
<A HREF="date.html#232">[ date ]</A>
<A HREF="index.html#232">[ thread ]</A>
<A HREF="subject.html#232">[ subject ]</A>
<A HREF="author.html#232">[ author ]</A>
</UL>
<!-- trailer="footer" -->
<HR NOSHADE>
<P>
<SMALL>
<EM>
This archive was generated by <A HREF="http://www.hypermail.org/">hypermail 2b29</A>
: <EM>Tue Feb 27 2001 - 05:27:08 PST</EM>
</EM>
</SMALL>
</BODY>
</HTML>