2010-12-05 3 views
0

Я новичок в silverlight, и я экспериментирую с интеграцией wia-сканера. Я знаю, что WIA.CommonDialog, showacquireimage() Я могу получить изображение со сканера. Я пытаюсь получить доступ к устройству напрямую и выполнить команду сканирования, чтобы избежать взаимодействия с пользователем.WIA silverlight Интеграция с сканером

Я могу подключиться к устройству. Но единственная команда, доступная от сканера, синхронизируется. Я пытаюсь использовать ExecuteCommand на объекте устройства, но я не уверен, какую команду использовать. Любое направление будет оценено.

 using (dynamic DeviceManager1 = AutomationFactory.CreateObject("WIA.DeviceManager")) 
     { 
      var deviceInfos = DeviceManager1.DeviceInfos; 
      for(int i= 1;i<=deviceInfos.Count;i++) 
      { 
       //check if the device is a scanner 
       if (deviceInfos.Item(i).Type.ToString() == "1") 
       { 
        var IDevice = deviceInfos.Item(i).Connect(); 
        deviceN.Text = IDevice.Properties("Name").Value.ToString(); 

        var dv = IDevice.Commands; 
        for (int j = 0; j <= dv.Count; j++) 
        { 

         deviceN.Text += " " + dv.Item(i).CommandID.ToString() + " " + dv.Item(i).Description.ToString(); 
        } 

       } 

      }    
     } 

ответ

1

Вам не нужно иметь дело с командами устройства для сканирования документа. Вместо этого вам нужно использовать первый элемент устройства под объектом устройства. Вот небольшой пример, который работает сам по себе, без ошибок проверки для удобства чтения.

//using WIA; 

bool showProgressBar = false; 

DeviceManager deviceManager = new DeviceManagerClass(); 

foreach(DeviceInfo info in deviceManager.DeviceInfos) 
{ 
    if(info.Type == WiaDeviceType.ScannerDeviceType) 
    { 
     Device device = info.Connect(); 

     ImageFile imageFile = null; 

     Item deviceItem = null; 

     //Read through the list of items under the device... 
     foreach(Item item in device.Items) 
     { 
      //Pick the very first one! 
      deviceItem = item; 
      break; 
     } 

     if(showProgressBar == true) 
     { 
      //Scan without GUI, but display the progress bar dialog. 
      CommonDialogClass commonDialog = new CommonDialogClass(); 
      imageFile = (ImageFile)commonDialog.ShowTransfer(deviceItem, FormatID.wiaFormatBMP, false); 
     } 
     else 
     { 
      //Scan without GUI, no progress bar displayed... 
      imageFile = (ImageFile)deviceItem.Transfer(FormatID.wiaFormatBMP); 
     } 

     imageFile.SaveFile("C:\\image.bmp"); 
    } 
} 

Перед сканированием (но после того, как вы подключили к элементу устройства), вы, вероятно, необходимо установить различные свойства устройства, чтобы выбрать разрешение сканирования, глубину цвета и другие вещи, если значения по умолчанию не достаточно для ваших нужд.

Недавно я сделал простой в использовании класс для работы с WIA-совместимыми сканерами, вы можете скачать его с this page ... Это для .Net Framework 2.0, C#. Может быть, это может пригодиться в вашем проекте, вы бы сделали несколько строк кода, включая настройку основных свойств. :)

 Смежные вопросы

  • Нет связанных вопросов^_^