Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Используйте утверждение устройства point of Service и включите API для утверждения устройств и включения их для операций ввода-вывода.
Требование на эксклюзивное использование
После создания объекта устройства PointOfServiceнеобходимо запросить его с помощью соответствующего метода утверждения для типа устройства, прежде чем использовать устройство для ввода или вывода. Заявка предоставляет приложению эксклюзивный доступ ко многим функциям устройства, чтобы одно приложение не мешало использованию устройства другим приложением. Только одно приложение за раз может претендовать на устройство PointOfService для монопольного использования.
Замечание
Операция захвата устанавливает эксклюзивную блокировку устройства, но не переводит его в рабочее состояние. Подробнее см. в разделе Включение устройства для операций ввода-вывода.
API, используемые для захвата и освобождения ресурсов
Устройство | Требование | Релиз |
---|---|---|
BarcodeScanner | BarcodeScanner.ClaimScannerAsync | Закрыть захваченный сканер штрихкода |
CashDrawer | CashDrawer.ClaimDrawerAsync | ClaimedCashDrawer.Close |
Линейный дисплей | LineDisplay.ClaimAsync | ClaimedineDisplay.Close |
считыватель магнитных полос | MagneticStripeReader.ClaimReaderAsync | claimedMagneticStripeReader.Close |
Печатающее устройство POS | PosPrinter.ClaimPrinterAsync | ClaimedPosPrinter.Close |
Включение устройств для операций ввода-вывода
Заявка устанавливает эксклюзивные права на устройство, не переводя его в рабочее состояние. Чтобы получать события или выполнять любые выходные операции, необходимо включить устройство с помощью EnableAsync. Напротив, вы можете вызвать DisableAsync, чтобы прекратить прослушивание событий с устройства или остановить вывод данных. Вы также можете использовать IsEnabled для определения состояния устройства.
API, используемые для включения / отключения
Устройство | Включить | Отключить | Включено? |
---|---|---|---|
Захваченный сканер штрихкодов | EnableAsync | DisableAsync | IsEnabled (Включено) |
Захваченный кассовый ящик | EnableAsync | DisableAsync | IsEnabled (Включено) |
Экран заявленной линии | Неприменимое | Неприменимое | Неприменимое |
ClaimedMagneticStripeReader | EnableAsync | DisableAsync | IsEnabled (Включено) |
Захваченный POS-принтер | EnableAsync | DisableAsync | IsEnabled (Включено) |
Отображение строк не требует явного включения устройства для операций ввода-вывода. Включение выполняется автоматически API PointOfService LineDisplay, которые выполняют операции ввода-вывода.
Пример кода: запрос и включение
В этом примере показано, как запросить устройство сканера штрихкодов после успешного создания объекта сканера штрихкодов.
BarcodeScanner barcodeScanner = await BarcodeScanner.FromIdAsync(DeviceId);
if(barcodeScanner != null)
{
// after successful creation, claim the scanner for exclusive use
claimedBarcodeScanner = await barcodeScanner.ClaimScannerAsync();
if(claimedBarcodeScanner != null)
{
// after successful claim, enable scanner for data events to fire
await claimedBarcodeScanner.EnableAsync();
}
else
{
Debug.WriteLine("Failure to claim barcodeScanner");
}
}
else
{
Debug.WriteLine("Failure to create barcodeScanner object");
}
Предупреждение
Требование может быть потеряно в следующих обстоятельствах:
- Другое приложение запросило предоставление того же устройства, и ваше приложение не выполнило RetainDevice в ответ на событие ReleaseDeviceRequested. (Дополнительную информацию см. ниже в разделе урегулирование требований.)
- Приложение было приостановлено, что привело к закрытию объекта устройства, в результате чего запрос больше не является действительным. (Дополнительные сведения см. в жизненном цикле объектов устройства .)
Переговоры по урегулированию требований
Так как Windows — это среда с несколькими задачами, можно использовать несколько приложений на одном компьютере для совместного доступа к периферийным устройствам. API PointOfService предоставляют модель согласования, которая позволяет нескольким приложениям совместно использовать периферийные устройства, подключенные к компьютеру.
Когда второе приложение на том же компьютере запрашивает утверждение для периферийного устройства PointOfService, которое уже утверждается другим приложением, публикуется уведомление о событии ReleaseDeviceRequested. Приложение с активным требованием должно отвечать на уведомление о событии, вызвав RetainDevice, чтобы избежать потери требования, если оно в данный момент использует устройство.
Если приложение с активным утверждением не отвечает с RetainDevice сразу, предположительно, это означает, что приложение приостановлено или не нуждается в устройстве, и утверждение отозвано и передано новому приложению.
Первым шагом является создание обработчика событий, который отвечает на событие ReleaseDeviceRequested с RetainDevice.
/// <summary>
/// Event handler for the ReleaseDeviceRequested event which occurs when
/// the claimed barcode scanner receives a Claim request from another application
/// </summary>
void claimedBarcodeScanner_ReleaseDeviceRequested(object sender, ClaimedBarcodeScanner myScanner)
{
// Retain exclusive access to the device
myScanner.RetainDevice();
}
Затем зарегистрируйте обработчик событий в связи с указанным устройством.
BarcodeScanner barcodeScanner = await BarcodeScanner.FromIdAsync(DeviceId);
if(barcodeScanner != null)
{
// after successful creation, claim the scanner for exclusive use
claimedBarcodeScanner = await barcodeScanner.ClaimScannerAsync();
if(claimedBarcodeScanner != null)
{
// register a release request handler to prevent loss of scanner during active use
claimedBarcodeScanner.ReleaseDeviceRequested += claimedBarcodeScanner_ReleaseDeviceRequested;
// after successful claim, enable scanner for data events to fire
await claimedBarcodeScanner.EnableAsync();
}
else
{
Debug.WriteLine("Failure to claim barcodeScanner");
}
}
else
{
Debug.WriteLine("Failure to create barcodeScanner object");
}
API, используемые для согласования утверждений
Заявленное устройство | Уведомление о выпуске | Удержание устройства |
---|---|---|
Захваченный сканер штрихкодов | Запрошено освобождение устройства | Сохранить Устройство |
Захваченный кассовый ящик | Запрошено освобождение устройства | Сохранить Устройство |
Экран заявленной линии | Запрошено освобождение устройства | Сохранить Устройство |
ClaimedMagneticStripeReader | Запрошено освобождение устройства | Сохранить Устройство |
Захваченный POS-принтер | Запрошено освобождение устройства | Сохранить Устройство |