VintaSoft Twain .NET SDK 15.0: Documentation for .NET developer
In This Topic
    How to get values of SANE device option?
    In This Topic
    Here is an example that demonstrates how to get information about all options of SANE device:

    /// <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