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