kopia lustrzana https://gitlab.com/sane-project/backends
108 wiersze
2.9 KiB
Plaintext
108 wiersze
2.9 KiB
Plaintext
![]() |
Scanner overview
|
||
|
- One pass scanner
|
||
|
- 36 DPI minimum. Max X=600 dpi, max Y=1200 dpi.
|
||
|
- A4 size
|
||
|
|
||
|
/*--------------------------------------------------------------------------*/
|
||
|
|
||
|
Components:
|
||
|
- Weltrend WT8616
|
||
|
- TEMIC TSC 80C31 (CMOS 0 to 44 MHz Single-Chip 8 Bit Microcontroller)
|
||
|
|
||
|
/*--------------------------------------------------------------------------*/
|
||
|
|
||
|
SCSI overview
|
||
|
- the SCSI implementation in this scanner is non-standard but simple.
|
||
|
- there is no REQUEST SENSE command.
|
||
|
- since there is no sense, it is impossible to know if a command has succeeded.
|
||
|
|
||
|
/*--------------------------------------------------------------------------*/
|
||
|
|
||
|
SCSI commands:
|
||
|
|
||
|
TEST UNIT READY
|
||
|
00 00 00 00 01 00
|
||
|
Returns 1 byte of data:
|
||
|
00 = scanner ready
|
||
|
ff = scanner not ready
|
||
|
|
||
|
Vendor Spec
|
||
|
02 00 00 00 04 00
|
||
|
Get 4 bytes of status. Used to check the button.
|
||
|
Default result when the button is not pressed
|
||
|
06 00 00 00
|
||
|
|
||
|
INQUIRY
|
||
|
result:
|
||
|
06 00 02 02 30 00 00 10 4b 49 4e 50 4f 20 20 20 ....0...KINPO
|
||
|
56 69 76 69 64 73 63 61 6e 20 53 31 32 30 20 20 Vividscan S120
|
||
|
53 31 33 20 20 20 20 20 02 01 00 00 4a 45 46 46 S13 ....JEFF
|
||
|
...
|
||
|
|
||
|
MODE SEL
|
||
|
15 10 00 00 18 00
|
||
|
|
||
|
SCAN
|
||
|
1B 00 00 00 00 00
|
||
|
|
||
|
RECEIVE DIAG
|
||
|
1C 00 00 00 03 00
|
||
|
|
||
|
SEND DIAG
|
||
|
1D 00 80 00 00 00
|
||
|
|
||
|
SET WINDOW
|
||
|
24 00 00 00 00 00 00 00 52 00
|
||
|
The window size is always 0x52 bytes. The parameters look standard:
|
||
|
- X/Y resolution |
|
||
|
- Upper left X,Y |- all three coded in 600 dpi units
|
||
|
- Width, Length |
|
||
|
|
||
|
The supported scan modes are:
|
||
|
- lineart image comp=0, halftone=0, depth=1
|
||
|
- halftone image comp=0, haltone=1 to 4, depth=1
|
||
|
- grayscale image comp=2, halftone=0, depth=8
|
||
|
- color image comp=5, halftone=0, depth=24
|
||
|
|
||
|
Y resolution is not used (X is also used for Y)
|
||
|
X resolution is limited to 600 (if above, scanner defaults to 600)
|
||
|
Y resolution is limited to 1200 (if above, scanner defaults to 1200)
|
||
|
Image composition is byte 33, halftone is byte 36, depth is byte 34
|
||
|
|
||
|
READ (10)
|
||
|
28 00 00 00 00 00 00 FE 9A 00
|
||
|
|
||
|
SEND (10)
|
||
|
2A 00 03 00 00 02 00 03 00 00
|
||
|
Sends 300h bytes of gamma. 100h bytes per color. What is the color order?
|
||
|
|
||
|
GET DATA BUFFER STATUS
|
||
|
34 01 00 00 00 00 00 00 10 00
|
||
|
Returns:
|
||
|
- byte 0 to 7: ? (these bytes looks rather standard)
|
||
|
- byte 8 to 11: total size left to read
|
||
|
- byte 12 to 13: number of lines (constant diuring a scan)
|
||
|
- byte 14 to 15: pixels per line (constant diuring a scan)
|
||
|
|
||
|
/*--------------------------------------------------------------------------*/
|
||
|
|
||
|
Color shifts
|
||
|
|
||
|
Color order returned by the scanner is Blue, then Green then Red. There is a color shift, meaning the lines for the Red is not on the same line than the Green.
|
||
|
The shifts are:
|
||
|
dpi lines per color
|
||
|
1200 16
|
||
|
1125 15
|
||
|
1050 14
|
||
|
900 12
|
||
|
750 10
|
||
|
600 8
|
||
|
450 6
|
||
|
300 4
|
||
|
150 2
|
||
|
90 1
|
||
|
75 1
|
||
|
50 0
|
||
|
|
||
|
Some resolution give garbage. However that table might not be complete.
|