UrlPrinterDiscovererFindPrinters Method (String, DiscoveryHandler)
|
This method will search using a combination of discovery methods to find the printer described by the specified URL. (Windows 10 only)
Namespace:
Zebra.Sdk.Printer.Discovery
Assembly:
SdkApi.Desktop (in SdkApi.Desktop.dll) Version: 2.15.2634
Syntax public static void FindPrinters(
string url,
DiscoveryHandler discoveryHandler
)
Public Shared Sub FindPrinters (
url As String,
discoveryHandler As DiscoveryHandler
)
public:
static void FindPrinters(
String^ url,
DiscoveryHandler^ discoveryHandler
)
Parameters
- url
- Type: SystemString
The URL describing the targeted printer (Typically, this information is encoded on an NFC tag attached
to the printer)
Example:
"http://www.zebra.com/apps/r/nfc?mBL=00225832C75F&mW=000000000000&mE=000000000000&c=QN3-AUBA0E01-00&s=XXQLJ112600422&v=0" - discoveryHandler
- Type: Zebra.Sdk.Printer.DiscoveryDiscoveryHandler
A DiscoveryHandler instance that is used to handle discovery events (e.g. found a
printer, errors, discovery finished).
Exceptions Remarks
This method will invoke the
FoundPrinter(DiscoveredPrinter) method for each interface that
the specified printer is found.
DiscoveryFinished will be invoked when the discovery is
finished and
DiscoveryError(String) will be invoked when any errors are encountered during
discovery. When
DiscoveryError(String) is invoked, the discovery will be canceled and
DiscoveryFinished will not be invoked.
This method will typically be used when reading an NFC tag attached to a Zebra printer. To launch your app when a
Zebra NFC tag is read:
- Register to listen for Zebra NFC Tag scans in your application
- Handle the NFC scan in your application
Examples using System;
using System.Diagnostics;
using Windows.Networking.Proximity;
using Windows.Storage.Streams;
using Zebra.Sdk.Comm;
using Zebra.Sdk.Printer;
using Zebra.Sdk.Printer.Discovery;
public class UrlPrinterDiscovererExample {
private long messageId = -1;
private ProximityDevice proximityDevice = null;
public void SubscribeForNfcMessage() {
proximityDevice = ProximityDevice.GetDefault();
if (proximityDevice != null) {
if (messageId == -1) {
messageId = proximityDevice.SubscribeForMessage("WindowsUri", (device, message) => {
using (var reader = DataReader.FromBuffer(message.Data)) {
reader.UnicodeEncoding = UnicodeEncoding.Utf16LE;
string receivedMessage = reader.ReadString(reader.UnconsumedBufferLength / 2 - 1);
ProcessReceivedMessage(receivedMessage);
}
});
}
}
}
public void UnsubscribeForNfcMessage() {
if (proximityDevice != null) {
proximityDevice.StopSubscribingForMessage(messageId);
messageId = -1;
}
}
private void ProcessReceivedMessage(string message) {
try {
UrlPrinterDiscoveryHandler urlDiscoHandler = new UrlPrinterDiscoveryHandler();
UrlPrinterDiscoverer.FindPrinters(message, urlDiscoHandler);
} catch (DiscoveryException e) {
Debug.WriteLine(e.ToString());
}
}
private class UrlPrinterDiscoveryHandler : DiscoveryHandler {
public void DiscoveryError(string message) {
}
public void DiscoveryFinished() {
}
public void FoundPrinter(DiscoveredPrinter printer) {
Connection connection = null;
try {
connection = printer.GetConnection();
connection.Open();
ZebraPrinter zebraPrinter = ZebraPrinterFactory.GetInstance(connection);
if (zebraPrinter != null) {
zebraPrinter.PrintConfigurationLabel();
}
} catch (Exception e) {
Debug.WriteLine(e.ToString());
} finally {
if (connection != null) {
try {
connection.Close();
} catch { }
}
}
}
}
}
See Also