Webusb to scan documents

后端 未结 3 1404
攒了一身酷
攒了一身酷 2021-01-13 17:20

Anybody had successfully configured webusb to scan a document ? I am able to connect to the usb scanner but wasn\'t able to find any documentation on commands to scan docume

相关标签:
3条回答
  • 2021-01-13 17:41

    I doubt that you managed to connect with the device. Reading the specification for security, you can see that the device should make some changes to be accessed via webusb, and your scanner doesn't have anything like that.

    My attempts to use WebUSB, led me to buy an arduino microcontroller for a simple test. For more information, you can read this article about WebUSB on the Google Developer website. The purpose of this microcontroller is to use it as a proxy/intermediate between the PC and the scanner, since I have full control over the microcontroller and can instrument it properly for use with WebUSB.

    0 讨论(0)
  • 2021-01-13 17:42

    I am trying to get scanning over WebUSB working with a CanoScan LiDE 25. It uses a plustek chip.

    // http://www.linux-usb.org/usb.ids
    // 04a9 Canon, Inc.
    // 2200  CanoScan LiDE 25
    navigator.usb.requestDevice({ filters: [{ vendorId: 0x04a9 }] })
    .then(device => {
        console.log(device.productName);      // "CanonScan"
        console.log(device.manufacturerName); // "Canon"
    })
    .catch(error => { console.log(error); });
    

    I currently try to reverse engineer the protocol with wireshark and USBMon. The guys from sane already did that (https://gitlab.com/sane-project/backends/blob/master/backend/plustek.c)

    In the picture above you can see a trace with Wireshark and the command:

    export SANE_DEBUG_DLL=255 # enabled debug logging for sane
    scanimage -p --resolution 150 --mode Gray -x 210 -y 297 > image.pnm
    

    This does not answer your question. Nevertheless it shows the way to go.

    I would expect that the most innovate thing would be to compile sane with emscripten (https://github.com/kripken/emscripten) into javascript and then directly use it.

    Here is some more debugging output, when enabling the debugging log of the plustek driver:

    $ export SANE_DEBUG_PLUSTEK=12
    $ scanimage -L
    [sanei_debug] Setting debug level of dll to 0.
    [sanei_debug] Setting debug level of plustek to 12.
    [plustek] Plustek backend V0.52-12, part of sane-backends 1.0.25git
    [plustek] Retrieving all supported and conntected devices
    [plustek] Available and supported devices:
    [plustek] Device: >libusb:001:008< - 0x04a9x0x2220
    [plustek] ># Plustek-SANE Backend configuration file<
    [plustek] ># For use with LM9831/2/3 based USB scanners<
    [plustek] >#<
    [plustek] ><
    [plustek] ># each device needs at least two lines:<
    [plustek] ># - [usb] vendor-ID and product-ID<
    [plustek] ># - device devicename<
    [plustek] ># i.e. for Plustek (0x07B3) UT12/16/24 (0x0017)<
    [plustek] ># [usb] 0x07B3 0x0017<
    [plustek] ># device /dev/usbscanner<
    [plustek] ># or<
    [plustek] ># device libusb:bbb:ffffd<
    [plustek] ># where bbb is the busnumber and ffffd the device number<
    [plustek] ># make sure that your user has access to /proc/bus/usb/bbb/ffffd<
    [plustek] >#<
    [plustek] ># additionally you can specify some options<
    [plustek] ># warmup, lOffOnEnd, lampOff<
    [plustek] >#<
    [plustek] ># For autodetection use<
    [plustek] ># [usb]<
    [plustek] ># device /dev/usbscanner<
    [plustek] >#<
    [plustek] ># or simply<
    [plustek] ># [usb]<
    [plustek] >#<
    [plustek] ># or if you want a specific device but you have no idea about the<
    [plustek] ># device node or you use libusb, simply set vendor- and product-ID<
    [plustek] ># [usb] 0x07B3 0x0017<
    [plustek] ># device auto<
    [plustek] >#<
    [plustek] ># NOTE: autodetection is safe, as it uses the info it got<
    [plustek] >#       from the USB subsystem. If you're not using the<
    [plustek] >#       autodetection, you MUST have attached that device<
    [plustek] >#       at your USB-port, that you have specified...<
    [plustek] >#<
    [plustek] ><
    [plustek] >[usb]<
    [plustek] next device uses autodetection
    [plustek] ... next device
    [plustek] ><
    [plustek] >#<
    [plustek] ># options for the previous USB entry<
    [plustek] >#<
    [plustek] ># switch lamp off after xxx secs, 0 disables the feature<
    [plustek] ># (can also be set via frontend)<
    [plustek] >option lampOff 300<
    [plustek] Decoding option >lampOff<
    [plustek] ><
    [plustek] ># warmup period in seconds, 0 means no warmup, -1 means auto-warmup<
    [plustek] ># (can also be set via frontend)<
    [plustek] >option warmup -1<
    [plustek] Decoding option >warmup<
    [plustek] ><
    [plustek] ># 0 means leave lamp-status untouched, not 0 means switch off<
    [plustek] ># on sane_close<
    [plustek] ># (can also be set via frontend)<
    [plustek] >option lOffOnEnd 1<
    [plustek] Decoding option >lOffOnEnd<
    [plustek] ><
    [plustek] >#<
    [plustek] ># options to tweak the image start-position<
    [plustek] ># (WARNING: there's no internal range check!!!)<
    [plustek] >#<
    [plustek] ># for the normal scan area<
    [plustek] >#<
    [plustek] >option posOffX 0<
    [plustek] Decoding option >posOffX<
    [plustek] >option posOffY 0<
    [plustek] Decoding option >posOffY<
    [plustek] ><
    [plustek] ># for transparencies<
    [plustek] >option tpaOffX 0<
    [plustek] Decoding option >tpaOffX<
    [plustek] >option tpaOffY 0<
    [plustek] Decoding option >tpaOffY<
    [plustek] ><
    [plustek] ># for negatives<
    [plustek] >option negOffX 0<
    [plustek] Decoding option >negOffX<
    [plustek] >option negOffY 0<
    [plustek] Decoding option >negOffY<
    [plustek] ><
    [plustek] >#<
    [plustek] ># for setting the calibration strip position<
    [plustek] ># (WARNING: there's no internal range check!!!)<
    [plustek] ># -1 means use built in<
    [plustek] ># (can also be set via frontend)<
    [plustek] >option posShadingY -1<
    [plustek] Decoding option >posShadingY<
    [plustek] >option tpaShadingY -1<
    [plustek] Decoding option >tpaShadingY<
    [plustek] >option negShadingY -1<
    [plustek] Decoding option >negShadingY<
    [plustek] ><
    [plustek] >#<
    [plustek] ># to invert the negatives, 0 disables the feature<
    [plustek] >#<
    [plustek] >option invertNegatives 0<
    [plustek] Decoding option >invertNegatives<
    [plustek] ><
    [plustek] >#<
    [plustek] ># to disable the internal sensor speedup function,<
    [plustek] ># 1 disables the feature<
    [plustek] >#<
    [plustek] >option disableSpeedup 0<
    [plustek] Decoding option >disableSpeedup<
    [plustek] ><
    [plustek] >#<
    [plustek] ># to save/restore coarse calibration data<
    [plustek] ># (can also be set via frontend)<
    [plustek] >option cacheCalData 0<
    [plustek] Decoding option >cacheCalData<
    [plustek] ><
    [plustek] >#<
    [plustek] ># use alternate calibration routines<
    [plustek] >#<
    [plustek] >option altCalibration 0<
    [plustek] Decoding option >altCalibration<
    [plustek] ><
    [plustek] >#<
    [plustek] ># for skipping whole calibration step<
    [plustek] >#<
    [plustek] >option skipCalibration 0<
    [plustek] Decoding option >skipCalibration<
    [plustek] ><
    [plustek] >#<
    [plustek] ># for skipping entire fine calibration step<
    [plustek] ># coarse calibration is done<
    [plustek] >#<
    [plustek] >option skipFine 0<
    [plustek] Decoding option >skipFine<
    [plustek] ><
    [plustek] >#<
    [plustek] ># discard the result of the fine white calibration<
    [plustek] >#<
    [plustek] >option skipFineWhite 0<
    [plustek] Decoding option >skipFineWhite<
    [plustek] ><
    [plustek] >#<
    [plustek] ># some scanners have a dark calibration strip, in<
    [plustek] ># general this one should be used for calibration.<
    [plustek] ># As this could cause some trouble, this option<
    [plustek] ># overrides that and the dark calibration will be<
    [plustek] ># done by switching the lamp off<
    [plustek] >#<
    [plustek] >option skipDarkStrip 0<
    [plustek] Decoding option >skipDarkStrip<
    [plustek] ><
    [plustek] ># for replacing the gain values found during coarse<
    [plustek] ># calibration<
    [plustek] ># (can also be set via frontend)<
    [plustek] >option red_gain   -1<
    [plustek] Decoding option >red_gain<
    [plustek] >option green_gain -1<
    [plustek] Decoding option >green_gain<
    [plustek] >option blue_gain  -1<
    [plustek] Decoding option >blue_gain<
    [plustek] ><
    [plustek] ># for replacing the offset values found during coarse<
    [plustek] ># calibration<
    [plustek] ># (can also be set via frontend)<
    [plustek] >option red_offset   -1<
    [plustek] Decoding option >red_offset<
    [plustek] >option green_offset -1<
    [plustek] Decoding option >green_offset<
    [plustek] >option blue_offset  -1<
    [plustek] Decoding option >blue_offset<
    [plustek] ><
    [plustek] >#<
    [plustek] ># for replacing the default lampoff settings, this<
    [plustek] ># works only for CIS devices like CanoScan LiDE20<
    [plustek] ># (can also be set via frontend)<
    [plustek] >option red_lampoff   -1<
    [plustek] Decoding option >red_lampoff<
    [plustek] >option green_lampoff -1<
    [plustek] Decoding option >green_lampoff<
    [plustek] >option blue_lampoff  -1<
    [plustek] Decoding option >blue_lampoff<
    [plustek] ><
    [plustek] >#<
    [plustek] ># for adjusting the default gamma values<
    [plustek] ># (can also be set via frontend)<
    [plustek] >option redGamma         1.0<
    [plustek] Decoding option >redGamma<
    [plustek] >option greenGamma       1.0<
    [plustek] Decoding option >greenGamma<
    [plustek] >option blueGamma        1.0<
    [plustek] Decoding option >blueGamma<
    [plustek] >option grayGamma        1.0<
    [plustek] Decoding option >grayGamma<
    [plustek] ><
    [plustek] >#<
    [plustek] ># to enable TPA (EPSON or UMAX, if autodetection fails)<
    [plustek] ># 0 means default behaviour as specified in the internal tables<
    [plustek] ># 1 means enable (needed for UMAX 3450)<
    [plustek] >option enableTPA 0<
    [plustek] Decoding option >enableTPA<
    [plustek] ><
    [plustek] >#<
    [plustek] ># model override functionality, currently only available for<
    [plustek] ># Mustek devices, using NSCs' vendor ID: 0x0400 and<
    [plustek] ># also their product ID: 0x1000 (LM9831) 0x1001 (LM9832)<
    [plustek] >#<
    [plustek] ># mov/PID    |    0x1000   |   0x1001<
    [plustek] ># ---------------------------------------<
    [plustek] ># 0 (default)| BearPaw1200 | BearPaw 2400<
    [plustek] ># 1          |   ignored   | BearPaw 1200<
    [plustek] >#<
    [plustek] >option mov 0<
    [plustek] Decoding option >mov<
    [plustek] ><
    [plustek] >#<
    [plustek] ># and of course the device-name<
    [plustek] >#<
    [plustek] ># device /dev/usbscanner<
    [plustek] >device auto<
    [plustek] Decoding device name >auto<
    [plustek] ><
    [plustek] >#<
    [plustek] ># to define a new device, start with a new section:<
    [plustek] ># [usb]<
    [plustek] >#<
    [plustek] attach (auto, 0x7ffdc9adc760, (nil))
    [plustek] Device configuration:
    [plustek] device name  : >auto<
    [plustek] USB-ID       : ><
    [plustek] model ovr.   : 0
    [plustek] warmup       : -1s
    [plustek] lampOff      : 300
    [plustek] lampOffOnEnd : yes
    [plustek] cacheCalData : no
    [plustek] altCalibrate : no
    [plustek] skipCalibr.  : no
    [plustek] skipFine     : no
    [plustek] skipFineWhite: no
    [plustek] skipDarkStrip: no
    [plustek] incDarkTarget: yes
    [plustek] invertNegs.  : no
    [plustek] dis.Speedup  : no
    [plustek] pos_x        : 0
    [plustek] pos_y        : 0
    [plustek] pos_shading_y: -1
    [plustek] neg_x        : 0
    [plustek] neg_y        : 0
    [plustek] neg_shading_y: -1
    [plustek] tpa_x        : 0
    [plustek] tpa_y        : 0
    [plustek] tpa_shading_y: -1
    [plustek] red gain     : -1
    [plustek] green gain   : -1
    [plustek] blue gain    : -1
    [plustek] red offset   : -1
    [plustek] green offset : -1
    [plustek] blue offset  : -1
    [plustek] red lampoff  : -1
    [plustek] green lampoff: -1
    [plustek] blue lampoff : -1
    [plustek] red Gamma    : 1.00
    [plustek] green Gamma  : 1.00
    [plustek] blue Gamma   : 1.00
    [plustek] gray Gamma   : 1.00
    [plustek] ---------------------
    [plustek] usbDev_open(auto,) - 0x5555ca4dbe90
    [plustek] Vendor ID=0x04A9, Product ID=0x2220
    [plustek] usbio_DetectLM983x
    [plustek] usbio_DetectLM983x: found LM9832/3
    [plustek]  * setting device to idle state!
    [plustek] Detected vendor & product ID: 0x04A9-0x2220
    [plustek] Device description for >0x04A9-0x2220< found.
    [plustek] usb_initDev(43,0x04a9,-1)
    [plustek] Device WAF  : 0x00004002
    [plustek] Transferrate: 1000000 Bytes/s
    [plustek] Device Flags: 0x00000000
    [plustek] Vendor adjusted to: >Canon<
    [plustek] LAMP-STATUS: 0x00000000 (off)
    [plustek] RESETTING REGISTERS(-1) - 0x80
    [plustek] MISC I/O after RESET: 0x66, 0x16, 0x91
    [plustek] Calibration file-names set to:
    [plustek] >/home/manuel/.sane/Canon_CanoScan_LiDE25-coarse.cal<
    [plustek] >/home/manuel/.sane/Canon_CanoScan_LiDE25-fine.cal<
    [plustek] usb_SetScanParameters()
    [plustek] usb_GetMCLKDivider()
    [plustek] usb_GetMCLKDiv()
    [plustek] * PhyBytes   = 6
    [plustek] * PhyLines   = 4
    [plustek] * TotalBytes = 24
    [plustek] * Scansteps=72 (9*1200/150)
    [plustek] usb_SetScanParameters() done.
    [plustek] usbDev_getCaps()
    [plustek] Scanner information:
    [plustek] Vendor : Canon
    [plustek] Model  : CanoScan LiDE25
    [plustek] Flags  : 0x00000000
    [plustek] drvclose()
    [plustek] usbDev_stopScan()
    [plustek] usbDev_ScanEnd(), start=0, park=0
    [plustek] usbDev_close()
    [plustek] attach: model = >CanoScan LiDE25<
    [plustek] sane_get_devices (0x7ffdc9ade8e0, 0)
    device `plustek:libusb:001:008' is a Canon CanoScan LiDE25 flatbed scanner
    [plustek] sane_exit
    [plustek] Shutdown called (dev->fd=-1, libusb:001:008)
    [plustek] Waiting for scanner-ready...
    [plustek] Switching lamp off...
    [plustek] LAMP-STATUS: 0x00000000 (off)
    [plustek] LAMP-STATUS: 0x00000000 (off)
    [plustek] Lamp-Timer stopped
    

    Here is the output when scanning

    scanimage -p --resolution 150 --mode Gray -x 210 -y 297 > image.pnm
    [sanei_debug] Setting debug level of dll to 0.
    [sanei_debug] Setting debug level of plustek to 12.
    [plustek] Plustek backend V0.52-12, part of sane-backends 1.0.25git
    [plustek] Retrieving all supported and conntected devices
    [plustek] Available and supported devices:
    [plustek] Device: >libusb:001:008< - 0x04a9x0x2220
    [plustek] ># Plustek-SANE Backend configuration file<
    [plustek] ># For use with LM9831/2/3 based USB scanners<
    [plustek] >#<
    [plustek] ><
    [plustek] ># each device needs at least two lines:<
    [plustek] ># - [usb] vendor-ID and product-ID<
    [plustek] ># - device devicename<
    [plustek] ># i.e. for Plustek (0x07B3) UT12/16/24 (0x0017)<
    [plustek] ># [usb] 0x07B3 0x0017<
    [plustek] ># device /dev/usbscanner<
    [plustek] ># or<
    [plustek] ># device libusb:bbb:ffffd<
    [plustek] ># where bbb is the busnumber and ffffd the device number<
    [plustek] ># make sure that your user has access to /proc/bus/usb/bbb/ffffd<
    [plustek] >#<
    [plustek] ># additionally you can specify some options<
    [plustek] ># warmup, lOffOnEnd, lampOff<
    [plustek] >#<
    [plustek] ># For autodetection use<
    [plustek] ># [usb]<
    [plustek] ># device /dev/usbscanner<
    [plustek] >#<
    [plustek] ># or simply<
    [plustek] ># [usb]<
    [plustek] >#<
    [plustek] ># or if you want a specific device but you have no idea about the<
    [plustek] ># device node or you use libusb, simply set vendor- and product-ID<
    [plustek] ># [usb] 0x07B3 0x0017<
    [plustek] ># device auto<
    [plustek] >#<
    [plustek] ># NOTE: autodetection is safe, as it uses the info it got<
    [plustek] >#       from the USB subsystem. If you're not using the<
    [plustek] >#       autodetection, you MUST have attached that device<
    [plustek] >#       at your USB-port, that you have specified...<
    [plustek] >#<
    [plustek] ><
    [plustek] >[usb]<
    [plustek] next device uses autodetection
    [plustek] ... next device
    [plustek] ><
    [plustek] >#<
    [plustek] ># options for the previous USB entry<
    [plustek] >#<
    [plustek] ># switch lamp off after xxx secs, 0 disables the feature<
    [plustek] ># (can also be set via frontend)<
    [plustek] >option lampOff 300<
    [plustek] Decoding option >lampOff<
    [plustek] ><
    [plustek] ># warmup period in seconds, 0 means no warmup, -1 means auto-warmup<
    [plustek] ># (can also be set via frontend)<
    [plustek] >option warmup -1<
    [plustek] Decoding option >warmup<
    [plustek] ><
    [plustek] ># 0 means leave lamp-status untouched, not 0 means switch off<
    [plustek] ># on sane_close<
    [plustek] ># (can also be set via frontend)<
    [plustek] >option lOffOnEnd 1<
    [plustek] Decoding option >lOffOnEnd<
    [plustek] ><
    [plustek] >#<
    [plustek] ># options to tweak the image start-position<
    [plustek] ># (WARNING: there's no internal range check!!!)<
    [plustek] >#<
    [plustek] ># for the normal scan area<
    [plustek] >#<
    [plustek] >option posOffX 0<
    [plustek] Decoding option >posOffX<
    [plustek] >option posOffY 0<
    [plustek] Decoding option >posOffY<
    [plustek] ><
    [plustek] ># for transparencies<
    [plustek] >option tpaOffX 0<
    [plustek] Decoding option >tpaOffX<
    [plustek] >option tpaOffY 0<
    [plustek] Decoding option >tpaOffY<
    [plustek] ><
    [plustek] ># for negatives<
    [plustek] >option negOffX 0<
    [plustek] Decoding option >negOffX<
    [plustek] >option negOffY 0<
    [plustek] Decoding option >negOffY<
    [plustek] ><
    [plustek] >#<
    [plustek] ># for setting the calibration strip position<
    [plustek] ># (WARNING: there's no internal range check!!!)<
    [plustek] ># -1 means use built in<
    [plustek] ># (can also be set via frontend)<
    [plustek] >option posShadingY -1<
    [plustek] Decoding option >posShadingY<
    [plustek] >option tpaShadingY -1<
    [plustek] Decoding option >tpaShadingY<
    [plustek] >option negShadingY -1<
    [plustek] Decoding option >negShadingY<
    [plustek] ><
    [plustek] >#<
    [plustek] ># to invert the negatives, 0 disables the feature<
    [plustek] >#<
    [plustek] >option invertNegatives 0<
    [plustek] Decoding option >invertNegatives<
    [plustek] ><
    [plustek] >#<
    [plustek] ># to disable the internal sensor speedup function,<
    [plustek] ># 1 disables the feature<
    [plustek] >#<
    [plustek] >option disableSpeedup 0<
    [plustek] Decoding option >disableSpeedup<
    [plustek] ><
    [plustek] >#<
    [plustek] ># to save/restore coarse calibration data<
    [plustek] ># (can also be set via frontend)<
    [plustek] >option cacheCalData 0<
    [plustek] Decoding option >cacheCalData<
    [plustek] ><
    [plustek] >#<
    [plustek] ># use alternate calibration routines<
    [plustek] >#<
    [plustek] >option altCalibration 0<
    [plustek] Decoding option >altCalibration<
    [plustek] ><
    [plustek] >#<
    [plustek] ># for skipping whole calibration step<
    [plustek] >#<
    [plustek] >option skipCalibration 0<
    [plustek] Decoding option >skipCalibration<
    [plustek] ><
    [plustek] >#<
    [plustek] ># for skipping entire fine calibration step<
    [plustek] ># coarse calibration is done<
    [plustek] >#<
    [plustek] >option skipFine 0<
    [plustek] Decoding option >skipFine<
    [plustek] ><
    [plustek] >#<
    [plustek] ># discard the result of the fine white calibration<
    [plustek] >#<
    [plustek] >option skipFineWhite 0<
    [plustek] Decoding option >skipFineWhite<
    [plustek] ><
    [plustek] >#<
    [plustek] ># some scanners have a dark calibration strip, in<
    [plustek] ># general this one should be used for calibration.<
    [plustek] ># As this could cause some trouble, this option<
    [plustek] ># overrides that and the dark calibration will be<
    [plustek] ># done by switching the lamp off<
    [plustek] >#<
    [plustek] >option skipDarkStrip 0<
    [plustek] Decoding option >skipDarkStrip<
    [plustek] ><
    [plustek] ># for replacing the gain values found during coarse<
    [plustek] ># calibration<
    [plustek] ># (can also be set via frontend)<
    [plustek] >option red_gain   -1<
    [plustek] Decoding option >red_gain<
    [plustek] >option green_gain -1<
    [plustek] Decoding option >green_gain<
    [plustek] >option blue_gain  -1<
    [plustek] Decoding option >blue_gain<
    [plustek] ><
    [plustek] ># for replacing the offset values found during coarse<
    [plustek] ># calibration<
    [plustek] ># (can also be set via frontend)<
    [plustek] >option red_offset   -1<
    [plustek] Decoding option >red_offset<
    [plustek] >option green_offset -1<
    [plustek] Decoding option >green_offset<
    [plustek] >option blue_offset  -1<
    [plustek] Decoding option >blue_offset<
    [plustek] ><
    [plustek] >#<
    [plustek] ># for replacing the default lampoff settings, this<
    [plustek] ># works only for CIS devices like CanoScan LiDE20<
    [plustek] ># (can also be set via frontend)<
    [plustek] >option red_lampoff   -1<
    [plustek] Decoding option >red_lampoff<
    [plustek] >option green_lampoff -1<
    [plustek] Decoding option >green_lampoff<
    [plustek] >option blue_lampoff  -1<
    [plustek] Decoding option >blue_lampoff<
    [plustek] ><
    [plustek] >#<
    [plustek] ># for adjusting the default gamma values<
    [plustek] ># (can also be set via frontend)<
    [plustek] >option redGamma         1.0<
    [plustek] Decoding option >redGamma<
    [plustek] >option greenGamma       1.0<
    [plustek] Decoding option >greenGamma<
    [plustek] >option blueGamma        1.0<
    [plustek] Decoding option >blueGamma<
    [plustek] >option grayGamma        1.0<
    [plustek] Decoding option >grayGamma<
    [plustek] ><
    [plustek] >#<
    [plustek] ># to enable TPA (EPSON or UMAX, if autodetection fails)<
    [plustek] ># 0 means default behaviour as specified in the internal tables<
    [plustek] ># 1 means enable (needed for UMAX 3450)<
    [plustek] >option enableTPA 0<
    [plustek] Decoding option >enableTPA<
    [plustek] ><
    [plustek] >#<
    [plustek] ># model override functionality, currently only available for<
    [plustek] ># Mustek devices, using NSCs' vendor ID: 0x0400 and<
    [plustek] ># also their product ID: 0x1000 (LM9831) 0x1001 (LM9832)<
    [plustek] >#<
    [plustek] ># mov/PID    |    0x1000   |   0x1001<
    [plustek] ># ---------------------------------------<
    [plustek] ># 0 (default)| BearPaw1200 | BearPaw 2400<
    [plustek] ># 1          |   ignored   | BearPaw 1200<
    [plustek] >#<
    [plustek] >option mov 0<
    [plustek] Decoding option >mov<
    [plustek] ><
    [plustek] >#<
    [plustek] ># and of course the device-name<
    [plustek] >#<
    [plustek] ># device /dev/usbscanner<
    [plustek] >device auto<
    [plustek] Decoding device name >auto<
    [plustek] ><
    [plustek] >#<
    [plustek] ># to define a new device, start with a new section:<
    [plustek] ># [usb]<
    [plustek] >#<
    [plustek] attach (auto, 0x7ffeffed9fa0, (nil))
    [plustek] Device configuration:
    [plustek] device name  : >auto<
    [plustek] USB-ID       : ><
    [plustek] model ovr.   : 0
    [plustek] warmup       : -1s
    [plustek] lampOff      : 300
    [plustek] lampOffOnEnd : yes
    [plustek] cacheCalData : no
    [plustek] altCalibrate : no
    [plustek] skipCalibr.  : no
    [plustek] skipFine     : no
    [plustek] skipFineWhite: no
    [plustek] skipDarkStrip: no
    [plustek] incDarkTarget: yes
    [plustek] invertNegs.  : no
    [plustek] dis.Speedup  : no
    [plustek] pos_x        : 0
    [plustek] pos_y        : 0
    [plustek] pos_shading_y: -1
    [plustek] neg_x        : 0
    [plustek] neg_y        : 0
    [plustek] neg_shading_y: -1
    [plustek] tpa_x        : 0
    [plustek] tpa_y        : 0
    [plustek] tpa_shading_y: -1
    [plustek] red gain     : -1
    [plustek] green gain   : -1
    [plustek] blue gain    : -1
    [plustek] red offset   : -1
    [plustek] green offset : -1
    [plustek] blue offset  : -1
    [plustek] red lampoff  : -1
    [plustek] green lampoff: -1
    [plustek] blue lampoff : -1
    [plustek] red Gamma    : 1.00
    [plustek] green Gamma  : 1.00
    [plustek] blue Gamma   : 1.00
    [plustek] gray Gamma   : 1.00
    [plustek] ---------------------
    [plustek] usbDev_open(auto,) - 0x55e6fbc6e5a0
    [plustek] Vendor ID=0x04A9, Product ID=0x2220
    [plustek] usbio_DetectLM983x
    [plustek] usbio_DetectLM983x: found LM9832/3
    [plustek]  * setting device to idle state!
    [plustek] Detected vendor & product ID: 0x04A9-0x2220
    [plustek] Device description for >0x04A9-0x2220< found.
    [plustek] usb_initDev(43,0x04a9,-1)
    [plustek] Device WAF  : 0x00004002
    [plustek] Transferrate: 1000000 Bytes/s
    [plustek] Device Flags: 0x00000000
    [plustek] Vendor adjusted to: >Canon<
    [plustek] LAMP-STATUS: 0x00000000 (off)
    [plustek] RESETTING REGISTERS(-1) - 0x80
    [plustek] MISC I/O after RESET: 0x66, 0x16, 0x91
    [plustek] Calibration file-names set to:
    [plustek] >/home/manuel/.sane/Canon_CanoScan_LiDE25-coarse.cal<
    [plustek] >/home/manuel/.sane/Canon_CanoScan_LiDE25-fine.cal<
    [plustek] usb_SetScanParameters()
    [plustek] usb_GetMCLKDivider()
    [plustek] usb_GetMCLKDiv()
    [plustek] * PhyBytes   = 6
    [plustek] * PhyLines   = 4
    [plustek] * TotalBytes = 24
    [plustek] * Scansteps=72 (9*1200/150)
    [plustek] usb_SetScanParameters() done.
    [plustek] usbDev_getCaps()
    [plustek] Scanner information:
    [plustek] Vendor : Canon
    [plustek] Model  : CanoScan LiDE25
    [plustek] Flags  : 0x00000000
    [plustek] drvclose()
    [plustek] usbDev_stopScan()
    [plustek] usbDev_ScanEnd(), start=0, park=0
    [plustek] usbDev_close()
    [plustek] attach: model = >CanoScan LiDE25<
    [plustek] sane_get_devices (0x7ffeffedc120, 0)
    [plustek] sane_open - libusb:001:008
    [plustek] Presetting Gamma tables (len=4096)
    [plustek] * Channel[0], gamma 2.000
    [plustek] * Channel[1], gamma 2.000
    [plustek] * Channel[2], gamma 2.000
    [plustek] * Channel[3], gamma 2.000
    [plustek] ----------------------------------
    [plustek] sane_start
    [plustek] usbDev_open(libusb:001:008,) - (nil)
    [plustek] Vendor ID=0x04A9, Product ID=0x2220
    [plustek] usbio_DetectLM983x
    [plustek] usbio_DetectLM983x: found LM9832/3
    [plustek] Detected vendor & product ID: 0x04A9-0x2220
    [plustek] Device description for >0x04A9-0x2220< found.
    [plustek] usb_initDev(43,0x04a9,43)
    [plustek] Device WAF  : 0x00004002
    [plustek] Transferrate: 1000000 Bytes/s
    [plustek] Device Flags: 0x00000006
    [plustek] Vendor adjusted to: >Canon<
    [plustek] LAMP-STATUS: 0x00000000 (off)
    [plustek] RESETTING REGISTERS(43) - 0x80
    [plustek] MISC I/O after RESET: 0x66, 0x16, 0x91
    [plustek] usbDev_getCaps()
    [plustek] scanmode = 1
    [plustek] usbDev_getCropInfo()
    [plustek] usb_GetImageInfo()
    [plustek] PPL = 1240
    [plustek] LPA = 1753
    [plustek] BPL = 1240
    [plustek] brightness 0, contrast 0
    [plustek] usbDev_setScanEnv()
    [plustek] usb_SaveImageInfo()
    [plustek] * dwFlag = 0x00000400
    [plustek] usb_GetImageInfo()
    [plustek] * Preview Mode NOT set!
    [plustek] Setting map[3] at 0x55e6fbcf7254
    [plustek] usbDev_startScan()
    [plustek] LAMP-STATUS: 0x00000000 (off)
    [plustek] Switching Lamp on
    [plustek] Warmup-Timer started
    [plustek] LAMP-STATUS: 0x00000001 (on)
    [plustek] Lamp-Timer stopped
    [plustek] dwflag = 0x40000400 dwBytesLine = 1240
    [plustek] Lines          = 1753
    [plustek] Bytes per Line = 1240
    [plustek] Bitdepth       = 8
    [plustek] TIME START
    [plustek] local_sane_start done
    [plustek] reader_process started (as thread)
    [plustek] reader_process:starting to READ data (2173720 bytes)
    [plustek] buf = 0x7f1864447010
    [plustek] usbDev_PrepareScan()
    [plustek] sane_start done
    [plustek] cano_DoCalibration()
    [plustek] #########################
    [plustek] usb_SpeedTest(43,1000000)
    [plustek] GETMCLK[10/1], using entry 8: 12.000, 1200
    [plustek] SETMCLK[10/1]: 12.000
    [plustek] usb_SetScanParameters()
    [plustek] usb_GetMCLKDivider()
    [plustek] usb_GetMCLKDiv()
    [plustek] * PhyBytes   = 30606
    [plustek] * PhyLines   = 1
    [plustek] * TotalBytes = 30606
    [plustek] usb_SetScanParameters() done.
    [plustek] usb_ScanBegin()
    [plustek] usb_DownloadShadingData(1)
    [plustek] usb_ScanBegin() done.
    [plustek] usb_IsDataAvailableInDRAM()
    [plustek] Data is available
    [plustek] usbDev_ScanEnd(), start=1, park=0
    [plustek] usb_SetScanParameters()
    [plustek] usb_GetMCLKDivider()
    [plustek] usb_GetMCLKDiv()
    [plustek] * PhyBytes   = 30606
    [plustek] * PhyLines   = 1
    [plustek] * TotalBytes = 30606
    [plustek] usb_SetScanParameters() done.
    [plustek] usb_ScanBegin()
    [plustek] usb_DownloadShadingData(1)
    [plustek] usb_ScanBegin() done.
    [plustek] usb_IsDataAvailableInDRAM()
    [plustek] Data is available
    [plustek] usbDev_ScanEnd(), start=1, park=0
    [plustek] usb_SetScanParameters()
    [plustek] usb_GetMCLKDivider()
    [plustek] usb_GetMCLKDiv()...
    

    Hope that helps a little bit Manuel

    0 讨论(0)
  • 2021-01-13 17:46

    I'm hoping this will be helpful, though it's not a direct answer to the question.

    After spending a lot of time trying to get WebUSB to work try researching other options, I found a solution that works well for my web app. Simply use scanimage to scan to the server. The client sends and AJAX request, the server builds a command string to run with shell_exec in PHP, then use file_get_contents or whatever with the scanned image. In my situation, there's no reason for the scanner to talk to the client, since the image is going to end up in a database on the server anyway.

    See also: Browser based document scanning

    0 讨论(0)
提交回复
热议问题