Beispiel #1
0
        public async Task ScanMultiple(string deviceId, ScanSetting settings)
        {
            using (DeviceClient client = new DeviceClient(_logger))
            {
                RegisterImageScannedEvents(client);

                await TryInvoke(() => client.Scan(deviceId, settings, true));

                await Clients.Caller.SendAsync(ClientMethod.ON_SCAN_FINISHED);
            }
        }
Beispiel #2
0
        private void cbxScannerSettings_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (cbxScannerSettings.SelectedItem == null)
            {
                return;
            }

            _scanSetting = _settingsManager.GetSettingByName(cbxScannerSettings.SelectedItem.ToString());

            lbHomologation.Visible = _scanSetting.Routing.Homologation == 1;

            cbxScanner.SelectedItem    = _scanSetting.Scanner;
            cbxResolution.SelectedItem = _scanSetting.Resolution.ToString();

            switch (_scanSetting.ColorFormat)
            {
            case "Color":
                rbtnRGB.Checked = true;
                break;

            case "Escala de grises":
                rbtnGray.Checked = true;
                break;

            case "Blanco y negro":
                rbtnBW.Checked = true;
                break;

            default:
                break;
            }

            switch (_scanSetting.FileType)
            {
            case ".tiff":
                rbtnTIFF.Checked = true;
                break;

            case ".jpeg":
                rbtnJPG.Checked = true;
                break;

            case ".bmp":
                rbtnBMP.Checked = true;
                break;

            case ".png":
                rbtnPNG.Checked = true;
                break;

            default:
                break;
            }
        }
Beispiel #3
0
        public void BindToControls(ScanSetting scanSetting)
        {
            bindingSource.DataSource   = scanSetting;
            bindingSRouting.DataSource = scanSetting.Routing;

            _folder = new FileFolder()
            {
                id = scanSetting.Routing.Folder
            };

            _community = new UserGroup()
            {
                id   = scanSetting.Routing.Community,
                name = scanSetting.Routing.CommunityName
            };
        }
Beispiel #4
0
        private void btnAdd_Click(object sender, EventArgs e)
        {
            var scanSetting = new ScanSetting();

            using (var form = new ScanSettingForm())
            {
                form.BindToControls(scanSetting);

                if (form.ShowDialog() == DialogResult.OK)
                {
                    _settingsManager.Add(scanSetting);

                    RefreshListView();
                }
            }
        }
Beispiel #5
0
        private async Task ScanMultiple()
        {
            if (SelectedDevice == null)
            {
                MessageBox.Show("Please select a scannr from scanner list", "Select scanner", MessageBoxButton.OK, MessageBoxImage.Information, MessageBoxResult.OK);

                return;
            }

            ScanSetting setting = new ScanSetting()
            {
                Color = SelectedColorMode,
                Dpi   = SelectedDpi
            };

            await Task.Run(() => { Service.Scan(SelectedDevice.DeviceId, setting, true); });

            await Task.CompletedTask;
        }
        public void Scan(string deviceID, ScanSetting setting = null, bool scanAllPages = false)
        {
            if (setting == null)
            {
                setting = new ScanSetting();
            }

            int page = 1;

            IDeviceInfo device = GetDeviceById(deviceID);

            Device connectedDevice = null;

            try
            {
                connectedDevice = device.Connect();

                SetDeviceSettings(connectedDevice, setting);

                do
                {
                    page = ScanImage(connectedDevice, page, setting);
                }while (scanAllPages);
            }
            catch (COMException ex)
            {
                var excpetion = GetException(ex);

                _logger?.LogError(ex.ToString());

                if (page != 1 && excpetion.Code != ScanXExceptionCodes.NoPaper)
                {
                    throw excpetion;
                }
            }
            catch (Exception ex)
            {
                _logger?.LogError(ex.ToString());

                throw new ScanXException($"Error: {ex.ToString()}", ex, ScanXExceptionCodes.UnkownError);
            }
        }
        private void SetDeviceSettings(Device connectedDevice, ScanSetting setting)
        {
            var(width, height) = ScanSetting.GetA4SizeByDpi((int)setting.Dpi);

            var resoultions = ScanSetting.GetResolution(setting.Dpi);

            var properties = connectedDevice.Items[1].Properties;

            SetWIAProperty(properties, ScanSetting.WIA_ITEM_SIZE, 0);

            SetWIAProperty(properties, ScanSetting.WIA_PAGE_SIZE, 3);

            SetWIAProperty(properties, ScanSetting.WIA_HORIZONTAL_RESOLUTION, resoultions);

            SetWIAProperty(properties, ScanSetting.WIA_VERTICAL_RESOLUTION, resoultions);

            SetWIAProperty(properties, ScanSetting.WIA_VERTICAL_EXTENT, height);

            SetWIAProperty(properties, ScanSetting.WIA_HORIZONTAL_EXTENT, width);

            SetWIAProperty(properties, ScanSetting.WIA_COLOR_MODE, (int)setting.Color);
        }
        private int ScanImage(Device connectedDevice, int page, ScanSetting setting)
        {
            var img = (ImageFile)connectedDevice.Items[1].Transfer(FormatID.wiaFormatJPEG);

            byte[] data = (byte[])img.FileData.get_BinaryData();

            byte[] dataConverted = null;

            dataConverted = CompressImageBytes(data);

            var args = new DeviceImageScannedEventArgs(dataConverted, img.FileExtension, page)
            {
                Height   = img.Height,
                Width    = img.Width,
                Settings = setting
            };

            OnImageScanned?.Invoke(this, args);

            page++;
            return(page);
        }