naps2/NAPS2.Sdk.Samples/NetworkSharingSample.cs
2023-12-13 00:52:16 -08:00

51 lines
1.7 KiB
C#

using NAPS2.Escl.Server;
using NAPS2.Images.Gdi;
using NAPS2.Remoting.Server;
using NAPS2.Scan;
namespace NAPS2.Sdk.Samples;
public class NetworkSharingSample
{
public static async Task Server()
{
// NAPS2 can share scanners across the local network using the ESCL protocol with the NAPS2.Escl.Server package.
// On the server, you need to set up ScanServer with the device(s) to share.
// On the client, you just scan as usual using Driver.Escl.
using var scanningContext = new ScanningContext(new GdiImageContext());
// Get the device to share
var controller = new ScanController(scanningContext);
ScanDevice device = (await controller.GetDeviceList()).First();
// Set up the server (you'll need to reference NAPS2.Escl.Server to be able to create an EsclServer object).
using var scanServer = new ScanServer(scanningContext, new EsclServer());
// Register a device to be shared
scanServer.RegisterDevice(device);
// Run the server until the user presses Enter
await scanServer.Start();
Console.ReadLine();
await scanServer.Stop();
}
public static async Task Client()
{
using var scanningContext = new ScanningContext(new GdiImageContext());
var controller = new ScanController(scanningContext);
// Find the shared device using Driver.Escl
ScanDevice device = (await controller.GetDeviceList(Driver.Escl)).First();
// Set up options
var options = new ScanOptions { Device = device };
// Do the scan
await foreach (var image in controller.Scan(options))
{
Console.WriteLine("Scanned a page!");
}
}
}