windows - Fejl med overføringsfunktion i WIA C #

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg har et problem med nedenstående kode. Jeg vil scanne et dokument ved at klikke på en knap i et WinForms C # -program.


Jeg bruger WIA, Visual Studio og scanner Fujitsu N7100A, der arbejder med Windows 8. Jeg følger en vejledning online for at bruge WIA.


Men programmet løber ikke som forventet. Det ser ud til at bryde ned ved overførselsmetoden.


            // Create a DeviceManager instance 
            var deviceManager = new DeviceManager();
            // Create an empty variable to store the scanner instance
            DeviceInfo firstScannerAvailable = null;
            // Loop through the list of devices to choose the first available 
            AddLogs(deviceManager.DeviceInfos.Count.ToString(), filename);
            foreach (DeviceInfo d in deviceManager.DeviceInfos)
            {
                if (d.Type == WiaDeviceType.ScannerDeviceType)
                {
                    firstScannerAvailable = d;
                }
            }
            // Connect to the first available scanner 
            var device = firstScannerAvailable.Connect();
            // Select the scanner 
            var scannerItem = device.Items[0];
            // Retrieve a image in JPEG format and store it into a variable 
            var imageFile = (ImageFile)scannerItem.Transfer(FormatID.wiaFormatPNG);
            //Save the image in some path with filename 
            var path = @"C:Documentsscan.png";
            if (File.Exists(path))
            {
                File.Delete(path);
            }
            // Save image ! 
            imageFile.SaveFile(path);


Jeg skal bare fjerne tilføjelsen af ​​linjer i logfilen.

Bedste reference


Dette er meget mere af en løsning, da jeg ikke har nogen idé om din scanner.


Jeg antager, at alle scannere har et drev, hvor de gemmer deres scannede dokumenter, ligesom mine. Så jeg foreslår, at du læser alle tilgængelige drevslus gennem dem. Kontroller DriveType og VolumeLabel, og læs derefter s 'filer og kopier dokumentet, hvor du vil have


Noget sådan:


foreach (var item in DriveInfo.GetDrives())
        {
            //VolumeLabel differs from a scanner to another
            if (item.VolumeLabel == "Photo scan" && item.DriveType == DriveType.Removable)
            {
                foreach (var obj in Directory.GetFiles(item.Name))
                {
                    File.Copy(obj, "[YOUR NEW PATH]");
                    break;
                }
                break;
            }
        }

Andre referencer 1


Afslut et TWAIN ansøgning arbejde med denne scanner. Jeg vil arbejde med det. Jeg siger ikke hvorfor, det virker med TWAIN og ikke med WIA, men det er virkeligheden. Undskyld for denne spild af tid. Tak for svarene. Få en god dag.

Andre referencer 2


Jeg løser i øjeblikket dette meget problem. Det ser ud til, at N7100A-driveren sætter Pages -egenskaben til device til 0, hvilket skulle betyde kontinuerlig scanning, men overførselsmetoden kan ikke håndtere denne værdi. Du skal indstille denne ejendom til 1:


var pages = 1;

// Not all devices have this property, but Fujitsu N7100A has.
device.Properties["Pages"]?.set\_Value(ref pages);