Как установить пользовательские возможности в Ntwain?C#

Место общения программистов C#
Ответить
Anonymous
 Как установить пользовательские возможности в Ntwain?

Сообщение Anonymous »

Я использую Ntwain для сканирования некоторых документов с сканера Kodak i5850 в простом приложении C# Console. Я могу использовать библиотеку для подключения к сканеру и запустить сканирование, но мне также нужно настроить принтер на сканере, чтобы распечатать некоторые данные в документ. У сканера есть эта функциональность, но он требует, чтобы я установил некоторые нестандартные возможности Twain для его использования. В частности, я не уверен, как создать объект twcapability , который он требует - я хотел бы просто установить идентификатор CAP и значение напрямую, если это возможно. /> Это возможно с Ntwain (или какой -то другой библиотекой C#)? Если это так, пример будет высоко оценен. Спасибо! < /P>
Пример кода для простого сканирования: < /p>
static void Main(string[] args)
{
var appId = TWIdentity.CreateFromAssembly(DataGroups.Image, Assembly.GetExecutingAssembly());
var session = new TwainSession(appId);

if (session.Open() != ReturnCode.Success)
{
Console.WriteLine("ERROR: Failed to open session.");
return;
}

session.TransferReady += (s, e) =>
{
Console.WriteLine("Transfer is ready!");
};

session.DataTransferred += (s, e) =>
{
Console.WriteLine("Data transfer triggered");
if (e.NativeData != IntPtr.Zero)
{
Console.WriteLine("Got scan data!");
}
else
{
Console.WriteLine("Failed to get scan data!");
}
};

session.SourceDisabled += (s, e) =>
{
Console.WriteLine("Source was disabled. Transfer complete.");
session.CurrentSource.Close();
session.Close();
};

Console.WriteLine("Sources:");
foreach (var ds in session)
{
Console.WriteLine(ds.Name);
}
Console.WriteLine("---------------------");

var source = session.First();
Console.WriteLine($"Selected source: {source.Name}");

if (source.Open() != ReturnCode.Success)
{
Console.WriteLine("ERROR: failed to open source.");
return;
}

Console.WriteLine($"supports printing? {source.Capabilities.CapPrinter.IsSupported}");

Console.WriteLine("Available printers: ");
var printers = source.Capabilities.CapPrinter.GetValues();
foreach (var printer in printers)
{
Console.WriteLine(printer.ToString());
}
Console.WriteLine($"Selected printer: {source.Capabilities.CapPrinter.GetCurrent().ToString()}");

// The typical source.Capabilities.CapPrinterEnabled, etc. doesn't work here because I'm using a Kodak scanner
// source.DGControl.CapabilityCustom.Set(0x8001, ); Don't know how to use this

source.Enable(SourceEnableMode.NoUI, false, IntPtr.Zero);

Console.WriteLine("End of main script.");
Console.ReadLine();
}



Подробнее здесь: https://stackoverflow.com/questions/797 ... -in-ntwain
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»