VintaSoft Twain .NET SDK 15.3: Руководство для .NET разработчика
В этом разделе
    Как получить информацию обо всех опциях SANE устройства?
    В этом разделе
    Вот C#/VB.NET код, который демонстрирует, как получить информацию обо всех опциях SANE устройства:
    /// <summary>
    /// Displays information about all options of SANE device.
    /// </summary>
    public void DisplayInformationAboutAllOptionsOfSaneDevice()
    {
        // create SANE device manager
        using (Vintasoft.Sane.SaneLocalDeviceManager deviceManager = new Vintasoft.Sane.SaneLocalDeviceManager())
        {
            // open SANE device manager
            deviceManager.Open();
    
            // get count of SANE devices
            int deviceCount = deviceManager.Devices.Count;
            if (deviceCount == 0)
            {
                System.Console.WriteLine("Devices are not found.");
                return;
            }
    
            // select the first SANE device
            Vintasoft.Sane.SaneLocalDevice device = deviceManager.Devices[0];
    
            // open SANE device
            device.Open();
    
            System.Console.WriteLine("Device name: " + device.Name);
    
            // for each option of SANE device
            foreach (Vintasoft.Sane.SaneLocalDeviceOption option in device.Options)
            {
                System.Console.WriteLine(
                    string.Format("- Option Name='{0}', Title='{1}', Description='{2}', Type={3}, Unit={4}, ValueSize={5}, CanSet={6}, CanBeAutomatic={7}, IsActive={8}, Capabilities={9}",
                    option.Name,
                    option.Title,
                    option.Description,
                    option.Type,
                    option.Unit,
                    option.ValueSize,
                    option.CanSet,
                    option.CanBeAutomatic,
                    option.IsActive,
                    option.Capabilities));
    
                object value;
                try
                {
                    value = option.GetValue();
                    System.Console.WriteLine(string.Format("  DefaultValue={0}", value));
                }
                catch (System.Exception ex)
                {
                    System.Console.WriteLine("  Cannot get the default value: " + ex.Message);
                    continue;
                }
    
                switch (option.Type)
                {
                    case Vintasoft.Sane.SaneType.Integer:
                        object supportedIntValues = option.GetSupportedValues();
                        if (supportedIntValues == null)
                        {
                            System.Console.WriteLine("  Supported values are not limited.");
                        }
                        else
                        {
                            if (supportedIntValues is Vintasoft.Sane.SaneIntArray)
                            {
                                Vintasoft.Sane.SaneIntArray array = (Vintasoft.Sane.SaneIntArray)supportedIntValues;
    
                                System.Console.Write("  Supported values: ");
                                for (int i = 0; i < array.Values.Length; i++)
                                {
                                    System.Console.Write(array.Values[i] + " ");
                                }
                                System.Console.WriteLine();
                            }
                            else
                            {
                                Vintasoft.Sane.SaneIntRange range = supportedIntValues as Vintasoft.Sane.SaneIntRange;
    
                                System.Console.WriteLine("  Supported range: Min=" + range.Min + ", Max=" + range.Max + ", Step=" + range.Step);
                            }
                        }
                        break;
    
                    case Vintasoft.Sane.SaneType.Fixed:
                        object supportedFixedValues = option.GetSupportedValues();
                        if (supportedFixedValues == null)
                        {
                            System.Console.WriteLine("  Supported values are not limited.");
                        }
                        else
                        {
                            if (supportedFixedValues is Vintasoft.Sane.SaneFixedArray)
                            {
                                Vintasoft.Sane.SaneFixedArray array = (Vintasoft.Sane.SaneFixedArray)supportedFixedValues;
    
                                System.Console.Write("  Supported values: ");
                                for (int i = 0; i < array.Values.Length; i++)
                                {
                                    System.Console.Write(array.Values[i] + " ");
                                }
                                System.Console.WriteLine();
                            }
                            else
                            {
                                Vintasoft.Sane.SaneFixedRange range = supportedFixedValues as Vintasoft.Sane.SaneFixedRange;
    
                                System.Console.WriteLine("  Supported range: Min=" + range.Min + ", Max=" + range.Max + ", Step=" + range.Step);
                            }
                        }
                        break;
    
                    case Vintasoft.Sane.SaneType.String:
                        object supportedStringValues = option.GetSupportedValues();
                        if (supportedStringValues == null)
                        {
                            System.Console.WriteLine("  Supported values are not limited.");
                        }
                        else
                        {
                            Vintasoft.Sane.SaneStringArray array = supportedStringValues as Vintasoft.Sane.SaneStringArray;
                            if (array != null)
                            {
                                System.Console.Write("  Supported values: ");
                                for (int i = 0; i < array.Values.Length; i++)
                                {
                                    System.Console.Write(string.Format("'{0}' ", array.Values[i]));
                                }
                                System.Console.WriteLine();
                            }
                        }
                        break;
                }
            }
    
    
            // close SANE device
            device.Close();
    
            // close SANE device manager
            deviceManager.Close();
        }
    
        System.Console.ReadLine();
    }
    
    ''' <summary>
    ''' Displays information about all options of SANE device.
    ''' </summary>
    Public Sub DisplayInformationAboutAllOptionsOfSaneDevice()
        ' create SANE device manager
        Using deviceManager As New Vintasoft.Sane.SaneLocalDeviceManager()
            ' open SANE device manager
            deviceManager.Open()
    
            ' get count of SANE devices
            Dim deviceCount As Integer = deviceManager.Devices.Count
            If deviceCount = 0 Then
                System.Console.WriteLine("Devices are not found.")
                Return
            End If
    
            ' select the first SANE device
            Dim device As Vintasoft.Sane.SaneLocalDevice = deviceManager.Devices(0)
    
            ' open SANE device
            device.Open()
    
            System.Console.WriteLine("Device name: " + device.Name)
    
            ' for each option of SANE device
            For Each [option] As Vintasoft.Sane.SaneLocalDeviceOption In device.Options
                System.Console.WriteLine(String.Format("- Option Name='{0}', Title='{1}', Description='{2}', Type={3}, Unit={4}, ValueSize={5}, CanSet={6}, CanBeAutomatic={7}, IsActive={8}, Capabilities={9}", [option].Name, [option].Title, [option].Description, [option].Type, [option].Unit,
                    [option].ValueSize, [option].CanSet, [option].CanBeAutomatic, [option].IsActive, [option].Capabilities))
    
                Dim value As Object
                Try
                    value = [option].GetValue()
                    System.Console.WriteLine(String.Format("  DefaultValue={0}", value))
                Catch ex As System.Exception
                    System.Console.WriteLine("  Cannot get the default value: " & ex.Message)
                    Continue For
                End Try
    
                Select Case [option].Type
                    Case Vintasoft.Sane.SaneType.[Integer]
                        Dim supportedIntValues As Object = [option].GetSupportedValues()
                        If supportedIntValues Is Nothing Then
                            System.Console.WriteLine("  Supported values are not limited.")
                        Else
                            If TypeOf supportedIntValues Is Vintasoft.Sane.SaneIntArray Then
                                Dim array As Vintasoft.Sane.SaneIntArray = DirectCast(supportedIntValues, Vintasoft.Sane.SaneIntArray)
    
                                System.Console.Write("  Supported values: ")
                                For i As Integer = 0 To array.Values.Length - 1
                                    System.Console.Write(array.Values(i) + " ")
                                Next
                                System.Console.WriteLine()
                            Else
                                Dim range As Vintasoft.Sane.SaneIntRange = TryCast(supportedIntValues, Vintasoft.Sane.SaneIntRange)
    
                                System.Console.WriteLine((("  Supported range: Min=" + range.Min & ", Max=") + range.Max & ", Step=") + range.[Step])
                            End If
                        End If
                        Exit Select
    
                    Case Vintasoft.Sane.SaneType.Fixed
                        Dim supportedFixedValues As Object = [option].GetSupportedValues()
                        If supportedFixedValues Is Nothing Then
                            System.Console.WriteLine("  Supported values are not limited.")
                        Else
                            If TypeOf supportedFixedValues Is Vintasoft.Sane.SaneFixedArray Then
                                Dim array As Vintasoft.Sane.SaneFixedArray = DirectCast(supportedFixedValues, Vintasoft.Sane.SaneFixedArray)
    
                                System.Console.Write("  Supported values: ")
                                For i As Integer = 0 To array.Values.Length - 1
                                    System.Console.Write(array.Values(i) + " ")
                                Next
                                System.Console.WriteLine()
                            Else
                                Dim range As Vintasoft.Sane.SaneFixedRange = TryCast(supportedFixedValues, Vintasoft.Sane.SaneFixedRange)
    
                                System.Console.WriteLine((("  Supported range: Min=" + range.Min & ", Max=") + range.Max & ", Step=") + range.[Step])
                            End If
                        End If
                        Exit Select
    
                    Case Vintasoft.Sane.SaneType.[String]
                        Dim supportedStringValues As Object = [option].GetSupportedValues()
                        If supportedStringValues Is Nothing Then
                            System.Console.WriteLine("  Supported values are not limited.")
                        Else
                            Dim array As Vintasoft.Sane.SaneStringArray = TryCast(supportedStringValues, Vintasoft.Sane.SaneStringArray)
                            If array IsNot Nothing Then
                                System.Console.Write("  Supported values: ")
                                For i As Integer = 0 To array.Values.Length - 1
                                    System.Console.Write(String.Format("'{0}' ", array.Values(i)))
                                Next
                                System.Console.WriteLine()
                            End If
                        End If
                        Exit Select
                End Select
            Next
    
    
            ' close SANE device
            device.Close()
    
            ' close SANE device manager
            deviceManager.Close()
        End Using
    
        System.Console.ReadLine()
    End Sub