kopia lustrzana https://gitlab.com/sane-project/backends
Silenced non-fatal warnings/error messages. Several fixes for avoiding
freezes/timeouts after cancelling a scan. Several fixes for warming up of lamp. Decreased scan width of Plustek OpticPro 1248U.merge-requests/1/head
rodzic
c8fb998804
commit
7d332297b6
|
@ -4,6 +4,13 @@
|
|||
for (older) external backend for Brother MFC 4600 (USB version).
|
||||
* doc/descriptions/unsupported.desc: Added Lexmark X6170. Removed
|
||||
Brother MFC 4600 USB.
|
||||
* backend/gt68xx.c backend/gt68xx_devices.c backend/gt68xx_high.c
|
||||
backend/gt68xx_low.c doc/descriptions/gt68xx.desc
|
||||
doc/gt68xx/gt68xx.CHANGES doc/gt68xx/gt68xx.TODO: Silenced
|
||||
non-fatal warnings/error messages. Several fixes for avoiding
|
||||
freezes/timeouts after cancelling a scan. Several fixes for
|
||||
warming up of lamp. Decreased scan width of Plustek OpticPro
|
||||
1248U.
|
||||
|
||||
2005-12-08 Gerhard Jaeger <gerhard@gjaeger.de>
|
||||
|
||||
|
|
|
@ -48,10 +48,12 @@
|
|||
|
||||
#include "../include/sane/config.h"
|
||||
|
||||
#define BUILD 78
|
||||
#define BUILD 79
|
||||
#define MAX_DEBUG
|
||||
#define WARMUP_TIME 60
|
||||
#define CALIBRATION_HEIGHT 2.5
|
||||
#define SHORT_TIMEOUT (1 * 1000)
|
||||
#define LONG_TIMEOUT (30 * 1000)
|
||||
|
||||
/* Use a reader process if possible (usually faster) */
|
||||
#if defined (HAVE_SYS_SHM_H) && (!defined (USE_PTHREAD)) && (!defined (HAVE_OS2_H))
|
||||
|
@ -1641,6 +1643,7 @@ sane_control_option (SANE_Handle handle, SANE_Int option,
|
|||
}
|
||||
s->first_scan = SANE_TRUE;
|
||||
myinfo |= SANE_INFO_RELOAD_PARAMS | SANE_INFO_RELOAD_OPTIONS;
|
||||
gettimeofday (&s->lamp_on_time, 0);
|
||||
}
|
||||
break;
|
||||
case OPT_MODE:
|
||||
|
@ -2076,7 +2079,7 @@ sane_cancel (SANE_Handle handle)
|
|||
{
|
||||
s->scanning = SANE_FALSE;
|
||||
if (s->total_bytes != (s->params.bytes_per_line * s->params.lines))
|
||||
DBG (0, "sane_cancel: warning: scanned %d bytes, expected %d "
|
||||
DBG (1, "sane_cancel: warning: scanned %d bytes, expected %d "
|
||||
"bytes\n", s->total_bytes,
|
||||
s->params.bytes_per_line * s->params.lines);
|
||||
else
|
||||
|
@ -2097,7 +2100,11 @@ sane_cancel (SANE_Handle handle)
|
|||
#endif
|
||||
|
||||
}
|
||||
/* some scanners don't like this command when cancelling a scan */
|
||||
sanei_usb_set_timeout (SHORT_TIMEOUT);
|
||||
gt68xx_device_fix_descriptor (s->dev);
|
||||
gt68xx_scanner_stop_scan (s);
|
||||
sanei_usb_set_timeout (LONG_TIMEOUT);
|
||||
|
||||
if (s->dev->model->flags & GT68XX_FLAG_SHEET_FED)
|
||||
{
|
||||
|
@ -2105,7 +2112,9 @@ sane_cancel (SANE_Handle handle)
|
|||
}
|
||||
else
|
||||
{
|
||||
sanei_usb_set_timeout (SHORT_TIMEOUT);
|
||||
gt68xx_scanner_wait_for_positioning (s);
|
||||
sanei_usb_set_timeout (LONG_TIMEOUT);
|
||||
gt68xx_device_carriage_home (s->dev);
|
||||
}
|
||||
if (s->gamma_table)
|
||||
|
|
|
@ -1021,7 +1021,7 @@ static GT68xx_Model plustek_op1248u_model = {
|
|||
|
||||
SANE_FIX (3.5), /* Start of scan area in mm (x) */
|
||||
SANE_FIX (7.5), /* Start of scan area in mm (y) */
|
||||
SANE_FIX (218.0), /* Size of scan area in mm (x) */
|
||||
SANE_FIX (216.0), /* Size of scan area in mm (x) */
|
||||
SANE_FIX (299.0), /* Size of scan area in mm (y) */
|
||||
|
||||
SANE_FIX (0.0), /* Start of white strip in mm (y) */
|
||||
|
|
|
@ -400,13 +400,27 @@ gt68xx_scanner_wait_for_positioning (GT68xx_Scanner * scanner)
|
|||
{
|
||||
SANE_Status status;
|
||||
SANE_Bool moving;
|
||||
SANE_Int status_count = 0;
|
||||
|
||||
usleep (100000); /* needed by the BP 2400 CU Plus? */
|
||||
while (SANE_TRUE)
|
||||
{
|
||||
RIE (gt68xx_device_is_moving (scanner->dev, &moving));
|
||||
if (!moving)
|
||||
break;
|
||||
status = gt68xx_device_is_moving (scanner->dev, &moving);
|
||||
if (status == SANE_STATUS_GOOD)
|
||||
{
|
||||
if (!moving)
|
||||
break;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (status_count > 9)
|
||||
{
|
||||
DBG (1, "gt68xx_scanner_wait_for_positioning: error count too high!\n");
|
||||
return status;
|
||||
}
|
||||
status_count++;
|
||||
DBG(3, "gt68xx_scanner_wait_for_positioning: ignored error\n");
|
||||
}
|
||||
usleep (100000);
|
||||
}
|
||||
|
||||
|
@ -1146,16 +1160,17 @@ gt68xx_wait_lamp_stable (GT68xx_Scanner * scanner,
|
|||
GT68xx_Afe_Values *values,
|
||||
SANE_Bool dont_move)
|
||||
{
|
||||
int i;
|
||||
SANE_Status status = SANE_STATUS_GOOD;
|
||||
SANE_Int last_white = 0;
|
||||
SANE_Int first = SANE_TRUE;
|
||||
SANE_Bool first = SANE_TRUE;
|
||||
SANE_Bool message_printed = SANE_FALSE;
|
||||
struct timeval now;
|
||||
int secs;
|
||||
int increase = -5;
|
||||
|
||||
for (i = 0; i < 80; i++)
|
||||
do
|
||||
{
|
||||
usleep (200000);
|
||||
if (i == 10)
|
||||
DBG (0, "Please wait for lamp warm-up\n");
|
||||
|
||||
if (!first && dont_move)
|
||||
{
|
||||
|
@ -1190,18 +1205,24 @@ gt68xx_wait_lamp_stable (GT68xx_Scanner * scanner,
|
|||
"gt68xx_wait_lamp_stable: this white = %d, last white = %d\n",
|
||||
values->total_white, last_white);
|
||||
|
||||
gettimeofday (&now, 0);
|
||||
secs = now.tv_sec - scanner->lamp_on_time.tv_sec;
|
||||
|
||||
if (!message_printed && secs > 5 && secs <= WARMUP_TIME)
|
||||
{
|
||||
DBG (0, "Please wait for lamp warm-up\n");
|
||||
message_printed = SANE_TRUE;
|
||||
}
|
||||
|
||||
if (scanner->val[OPT_AUTO_WARMUP].w == SANE_TRUE)
|
||||
{
|
||||
if (scanner->dev->model->flags & GT68XX_FLAG_CIS_LAMP)
|
||||
{
|
||||
/* insist on at least 10 seconds */
|
||||
struct timeval now;
|
||||
int secs;
|
||||
|
||||
gettimeofday (&now, 0);
|
||||
secs = now.tv_sec - scanner->lamp_on_time.tv_sec;
|
||||
if (secs >= 10 && (values->total_white <= (last_white + 20))
|
||||
if (values->total_white <= (last_white - 20))
|
||||
increase--;
|
||||
if (values->total_white >= last_white)
|
||||
increase++;
|
||||
if (increase > 0 && (values->total_white <= (last_white + 20))
|
||||
&& values->total_white != 0)
|
||||
break;
|
||||
}
|
||||
|
@ -1212,19 +1233,12 @@ gt68xx_wait_lamp_stable (GT68xx_Scanner * scanner,
|
|||
break; /* lamp is warmed up */
|
||||
}
|
||||
}
|
||||
else
|
||||
{ /* insist on 60 seconds */
|
||||
struct timeval now;
|
||||
int secs;
|
||||
|
||||
gettimeofday (&now, 0);
|
||||
secs = now.tv_sec - scanner->lamp_on_time.tv_sec;
|
||||
if (secs >= WARMUP_TIME)
|
||||
break;
|
||||
}
|
||||
last_white = values->total_white;
|
||||
}
|
||||
DBG (3, "gt68xx_wait_lamp_stable: Lamp is stable\n");
|
||||
while (secs <= WARMUP_TIME);
|
||||
|
||||
DBG (3, "gt68xx_wait_lamp_stable: Lamp is stable after %d seconds\n",
|
||||
secs);
|
||||
return status;
|
||||
}
|
||||
|
||||
|
|
|
@ -1001,7 +1001,7 @@ gt68xx_device_check_result (GT68xx_Packet res, SANE_Byte command)
|
|||
{
|
||||
if (res[0] != 0)
|
||||
{
|
||||
DBG (0, "gt68xx_device_check_result: result was %2X %2X "
|
||||
DBG (1, "gt68xx_device_check_result: result was %2X %2X "
|
||||
"(expected: %2X %2X)\n", res[0], res[1], 0, command);
|
||||
return SANE_STATUS_IO_ERROR;
|
||||
}
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
:backend "gt68xx"
|
||||
:version "1.0-78"
|
||||
:version "1.0-79"
|
||||
:manpage "sane-gt68xx"
|
||||
:url "http://www.meier-geinitz.de/sane/gt68xx-backend/"
|
||||
:comment "Only the USB scanners mentioned below are supported. For other Mustek BearPaws, look at the Plustek and the MA-1509 backend."
|
||||
|
|
|
@ -1,5 +1,24 @@
|
|||
gt68xx.CHANGES -*-text-*-
|
||||
|
||||
V 1.0.79 (2005-12-??)
|
||||
|
||||
* Silenced warning when scan is cancelled.
|
||||
* Silenced often non-fatal check_result error messages.
|
||||
* Reduced timeout for cancelling a scan. Some scanners freeze for 30 seconds
|
||||
otherwise. Repeat is_moving test even if an error was received.
|
||||
* Run fix_descriptors before cancelling the scan. Without that, some gt6816
|
||||
scanners are not detected anymore after closing the device.
|
||||
* Fixed wait_lamp_stable. Wait for a maximum time of 60 seconds. Print
|
||||
warming up message after 5 seconds. Print how long warming up took.
|
||||
* For Mustek ScanExpress A3 USB, use more intelligent warm-up mechanism. The
|
||||
brightness for this scanner first decreases and then increases again. With the
|
||||
previous logic the scanner always warmed up for at least 10 seconds even if it
|
||||
wasn't necessary.
|
||||
* Warm up lamp also when changing from flatbed to transparency. Without this the
|
||||
lamp may be too dark directly after changing the source.
|
||||
* Decreased scan width of Plustek OpticPro 1248U. This fixes some strange color
|
||||
artifacts and results in less backtracking in some modes.
|
||||
|
||||
V 1.0.78 (2005-10-16)
|
||||
|
||||
* Minor modifications to sheet-fed scanner support.
|
||||
|
|
|
@ -5,25 +5,20 @@ General:
|
|||
|
||||
- some sort of fixed lookup-table may be necessary to compensate for the
|
||||
non-linear CCD/CIS behaviour. A gamma value is not good enough. Or maybe line
|
||||
calibration can be used for that?
|
||||
- Check autobandwidth
|
||||
- check several get scanner info functions
|
||||
- check exposure (start + stop)?
|
||||
calibration can be used for that?
|
||||
- Some Plustek scanners are advertised with e.g. 1200x2400 but the maximum
|
||||
vertical resolution seems to be limited to the horizontal one. Check if
|
||||
that's really the case.
|
||||
- The first scan (or preview) sometimes seem to start at a wrong x-position
|
||||
(plustek 1248, calibration disabled).
|
||||
|
||||
- Keep a log of all gain/offset combinations already tested and break if
|
||||
one is repeated to avoid endless loops.
|
||||
- Print commands that are send to the scanner in clear text.
|
||||
- Try to implement non-blocking USB bulk reads, check libusb CVS.
|
||||
- Lamp warmup info message should only be printed when loop takes more then 5
|
||||
seconds, not 5 seconds after start.
|
||||
|
||||
CCD:
|
||||
----
|
||||
|
||||
- check if CCD calib has stripes now (white limit too high?)
|
||||
*** coarse + fine calib gray in gray mode
|
||||
fine calib is ok
|
||||
coarse calib has an extremely high gain
|
||||
|
||||
Mustek BearPaw 2400 TA Plus:
|
||||
- some lines at the beginning of each image have wrong colors (linedistance?)
|
||||
This seems to happen with other scanners, too.
|
||||
|
@ -35,28 +30,39 @@ Mustek BearPaw 1200 TA:
|
|||
- similar color problem as 2400 TA Plus, doesn't always happen?
|
||||
|
||||
Mustek BearPaw 2448 TA Plus:
|
||||
- all modes are slow (massive backtracking)
|
||||
- all modes are slow (massive backtracking). If connected to a USB2 port, the
|
||||
backtracking ich much less despite this scanner can't do USB2. Strange.
|
||||
- Sometimes there is a USB protocol error when cancelling the scan?
|
||||
- top borders move with resolution (happened in the early days with 2400 TA!)
|
||||
- gray scans have different brightness
|
||||
- scan motor is bumpy and freezes sometimes
|
||||
- scan motor is bumpy and freezes sometimes, looks like accelaration is too big
|
||||
(firmware problem?)
|
||||
- vertical stripes
|
||||
- TA settings are wrong
|
||||
- no backtrack >= 600 dpi (also gray!)
|
||||
- don't move before and after scan
|
||||
- check jpeg output
|
||||
- check jpeg output, maybe this can be used for faster scans
|
||||
|
||||
Plustek 1248U:
|
||||
- Linedistance seems to have problems in the first few and the last lines
|
||||
- Linedistance seems to have problems in the first few and the last lines.
|
||||
- Gain and offset values are quite high. Optimum values are not reached. Problem
|
||||
with coarse calib? Better algorithm needed.
|
||||
- Images in color mode sometimes look too redish (result of above problem).
|
||||
- quite slow when full width is selected. Lots of backtracking.
|
||||
- Check if pixel mode is possible.
|
||||
- Check again 600x1200 dpi.
|
||||
|
||||
Plustek U16B:
|
||||
- 600 dpi 16 bit is limited to about half the size of the scan area because
|
||||
only pixel mode works and 16k is the maximum buffer size.
|
||||
- After scanning, a run of sane-find-scanner leads to a protocol error and
|
||||
scanning does no longer work.
|
||||
|
||||
Genius ColorPage Vivid 1200XE
|
||||
- 16 bit per color is advertized but this mode doesn't seem to work
|
||||
(only 36 bit)?
|
||||
(only 12 bit)?
|
||||
- 1200x1200 and 1200x2400 dpi doesn't seem to work despite being advertized
|
||||
- Y-positining varies slightly with resolution (some mm)
|
||||
- Y-positioning varies slightly with resolution (some mm)
|
||||
|
||||
CIS:
|
||||
----
|
||||
|
|
Ładowanie…
Reference in New Issue