Поделиться через


Справочник по API JavaScript

Внимание

Современная платформа печати — это предпочтительный способ взаимодействия с принтерами Windows. Рекомендуется использовать драйвер класса "Входящие" Microsoft IPP вместе с приложениями поддержки печати (PSA), чтобы настроить возможности печати в Windows 10 и 11 для разработки устройств принтера.

Дополнительные сведения см. в статье "Современная платформа печати" и руководство по проектированию приложений поддержки печати.

Производители могут использовать API JavaScript, представленный здесь, в сочетании с XML-файлом Bidi, чтобы обеспечить поддержку Bidi через USB-подключение к устройству печати.

Дополнительные сведения о подключении USB Bidi с устройством печати см. в разделе USB Bidi Extender.

Биди по USB

Метод getSchemas

Этот метод обрабатывает запросы Bidi GET, такие как \Printer.Consumables.YellowInk:Level. Код JavaScript может выполнять запросы к принтеру с помощью USB-шины и считывать ответы по мере возвращения.

синтаксис

function getSchemas(scriptContext, printerStream, schemaRequests, printerBidiSchemaResponses);

Parameters (метод getSchemas)

scriptContext [in] Объект IPrinterScriptContext, предоставляющий доступ к соответствующим пакетам свойств. printerStream

[in] Объект IPrinterScriptableSequentialStream , позволяющий читать и записывать доступ к USB-шине. schemaRequests

[in] Объект массива, содержащий все запрошенные строки запроса Bidi. printerBidiSchemaResponses

[out] Объект, который скрипт использует для хранения всех ответов на ключи запроса.

Возвращаемые значения (метод getSchemas)

Возвращаемое значение Description
0 Скрипт успешно завершен.
1 Подключенное устройство не было готово для предоставления некоторых запрошенных сведений. Указывает, что система печати должна снова вызвать функцию с помощью любых ключей Requery, добавленных во время обработки.

Метод setSchema

Этот метод обрабатывает операции Bidi SET. Скрипт может определить входящее значение схемы Bidi для задания данных на устройстве или выполнения некоторых действий на устройстве, таких как чистые рукописные головки.

Если устройство не готово к обработке указанных данных, метод может вернуть значение 1, чтобы указать, что вызов должен быть получен после периода ожидания.

Параметры (метод setSchema)

scriptContext [in] Объект IPrinterScriptContext, предоставляющий доступ к соответствующим пакетам свойств. printerStream

[in] Объект IPrinterScriptableSequentialStream , позволяющий читать и записывать доступ к USB-шине. printerBidiSchemaElement

[in] Объект IPrinterBidiSchemaElement , содержащий все данные, связанные с заданным значением схемы Bidi.

Возвращаемые значения (метод setSchema)

Возвращаемое значение Description
0 Скрипт успешно завершен.
1 Подключенное устройство не было готово для предоставления некоторых запрошенных сведений. Указывает, что система печати должна снова вызвать функцию с помощью предоставленного принтераBidiSchemaElement.

Метод getStatus

Этот метод используется для получения незапрошенного состояния на принтере во время печати устройства. Эта функция вызывается только во время печати. Устройство должно предоставлять данные в канале чтения, который этот скрипт может интерпретировать в значениях схемы Bidi. Так как канал записи на устройство блокируется данными печати, здесь поддерживается только неопрошенное состояние.

Этот метод вызывается многократно во время печати. Ожидается, что устройство вернет данные только в том случае, если оно доступно, и скрипт может его понять. Если устройство не поддерживает незапрошенное состояние или не нужно вызывать эту функцию еще раз, скрипт должен вернуть значение 2, указывающее , что поток выполнения getStatus в USBMon завершится успешно.

Параметры (метод getStatus)

scriptContext [in] Объект IPrinterScriptContext, предоставляющий доступ к соответствующим пакетам свойств. printerStream

[in] Объект IPrinterScriptableSequentialStream , который разрешает доступ на чтение к USB-шине. printerBidiSchemaResponses

[out] Объект, который скрипт использует для хранения всех ответов на ключи запроса.

Возвращаемые значения (метод getStatus)

Возвращаемое значение Description
0 Скрипт успешно завершен.
2 Подключенное устройство больше не поддерживает незапрошенное состояние, и эта функция не должна вызываться снова.

Метод startPrintJob

USBMon вызывает этот метод во время StartDocPort. Вызов startPrintJob позволяет драйверу изменять поток печати или реализовывать протокол запроса и ответа на основе узла, используемый при печати устройства печати. Объект контекста задания передается в функцию, чтобы разрешить коду JavaScript производителя управлять свойствами задания и получать доступ к постоянным потокам данных. Данные печати передаются в виде массива JavaScript для обработки кода JavaScript. startPrintJob также предоставляет доступ к устройству принтера следующим образом:

  • Через поток печати

  • С помощью объекта, который может возвращать ответы схемы Bidi для USBMon для обработки

Синтаксис (метод startPrintJob)

function startPrintJob(jobScriptContext, printerStream, printerBidiSchemaResponses);

Parameters (метод startPrintJob)

jobScriptContext [in] Объект IPrinterScriptUsbJobContext, который предоставляет производителю доступ к контейнеру свойств задания и постоянному потоку данных. printerStream

[in] Объект IPrinterScriptableSequentialStream , который код JavaScript производителя может использовать для чтения и записи данных на устройство печати. printerBidiSchemaResponses

[out] Объект IPrinterBidiSchemaResponses , который код JavaScript производителя может использовать для возврата любых изменений и обновлений значения схемы Bidi.

Возвращаемые значения (метод startPrintJob)

Возвращаемое значение Description
0 Успех.
1 Сбой— очистка объекта контекста задания и возврат кода ошибки в средство spooler печати.

Метод writePrintData

USBMon вызывает этот метод во время записи. Вызов writePrintData позволяет драйверу изменять поток печати или реализовывать протокол запроса и ответа на основе узла, используемый при печати устройства печати. Объект контекста задания передается в метод, позволяющий коду JavaScript производителя управлять свойствами задания и получать доступ к постоянным потокам данных. Данные печати передаются в виде массива JavaScript для обработки кода JavaScript. WritePrintData также предоставляет доступ к устройству принтера следующим образом:

  • Через поток печати

  • С помощью объекта, который может возвращать ответы схемы Bidi для USBMon для обработки

function writePrintData(jobScriptContext, writePrintDataProgress, printData, printerStream, printerBidiSchemaResponses);

Parameters (метод writePrintData)

jobScriptContext [in] Объект IPrinterScriptUsbJobContext, который предоставляет производителю доступ к контейнеру свойств задания и постоянному потоку данных. writePrintDataProgres

[in] Объект IPrinterScriptableSequentialStream , который код JavaScript производителя может использовать для чтения и записи данных на устройство печати. printData

[in] Объект IDispatch , массив JavaScript текущих данных печати. Параметр printData позволяет коду JavaScript управлять данными перед кэшированием в один из потоков данных в jobScriptContext или отправлять его на принтер с помощью printerStream. printerStream

[in] Объект IPrinterScriptableSequentialStream , который код JavaScript производителя может использовать для чтения и записи данных на устройство печати. printerBidiSchemaResponses

[out] Объект IPrinterBidiSchemaResponses , который код JavaScript производителя может использовать для возврата любых изменений или обновлений значения схемы Bidi.

Возвращаемые значения (метод writePrintData)

Возвращаемое значение Description
0 Успех. Количество байтов, обработанных из потока данных печати (printData), возвращается с помощью writePrintDataProgress.
1 Сбой — возвращает код ошибки в средство spooler печати.
2 Повторите попытку. Обработайте любые обновления схемы Bidi (включая события Bidi) в принтереBidiSchemaResponses, а затем снова вызовите функцию JavaScript, чтобы разрешить код производителя продолжать обработку данных. Количество байтов, обработанных из потока данных печати (printData), возвращается с помощью writePrintDataProgress.
3 DeviceBusy — канал связи устройства в настоящее время не принимает данные. Это не указывает на сбой. USBMon должен сообщить о том, что устройство занято, а затем снова вызвать функцию позже. Количество байтов, обработанных из потока данных печати (printData), возвращается с помощью writePrintDataProgress.
4 AbortTheJob — устройство не может продолжить обработку задания, или пользователь отменил задание с помощью передней панели устройства печати. Когда USBMon получает сообщение для прерывания задания печати, оно передает сведения в средство spooler печати, чтобы прервать задание, прежде чем вернуться.

Метод endPrintJob

USBMon вызывает этот метод во время endDocPort. Вызов endPrintJob позволяет драйверу изменять поток печати или реализовывать протокол запроса и ответа на основе узла, используемый при печати устройства печати. Объект контекста задания передается в метод, чтобы разрешить коду JavaScript производителя:

  • Завершение обработки всех сохраненных данных печати

  • Доступ к устройству принтера через поток печати

  • Доступ к объекту, который может передавать ответы схемы Bidi для USBMon для обработки

function endPrintJob(jobScriptContext, printerStream, printerBidiSchemaResponses);

Parameters (метод endPrintJob)

jobScriptContext [in] Объект IPrinterScriptUsbJobContext , который предоставляет производителю доступ к контейнеру свойств задания и постоянному потоку данных. printerStream

[in] Объект IPrinterScriptableSequentialStream, который код JavaScript производителя может использовать для чтения и записи данных на устройство печати. printerBidiSchemaResponses

[out] Объект IPrinterBidiSchemaResponses, который код JavaScript производителя может использовать для возврата любых изменений или обновлений значения схемы Bidi.

Возвращаемые значения (метод endPrintJob)

Возвращаемое значение Description
0 Успешное выполнение— очистка объекта "Контекст задания" и возвращение успеха в средство spooler печати.
1 Сбой— очистка объекта контекста задания и возврат кода ошибки в средство spooler печати.
2 Повторите попытку. Обработайте любые обновления схемы Bidi (включая события Bidi) в принтереBidiSchemaResponses, а затем снова вызовите функцию JavaScript, чтобы позволить коду JavaScript производителя продолжать обработку данных.

Bidi через вторичный USB

Если устройство поддерживает дополнительный USB-интерфейс, устройство может использовать методы getSchemas и setSchema , описанные в предыдущих разделах, в дополнение к методу requestStatus .

Метод requestStatus

Этот метод вызывается вместо getStatus, если директива BidiUSBStatusInterface была указана в файле манифеста драйвера версии 4. requestStatus используется для получения состояния с устройства печати во время печати устройства.

На следующей схеме представлен обзор архитектуры расширения USB Bidi, в котором показан сценарий, в котором указана директива BidiUSBStatusInterface , поэтому обмен данными направляется по альтернативному USB-интерфейсу.

Архитектура расширения usb bidi с методом requeststatus.

Этот метод вызывается многократно во время печати. Ожидается, что устройство вернет данные только в том случае, если оно доступно, и скрипт может его понять. Если устройство не поддерживает запрошенное состояние или не нужно вызывать этот метод снова, скрипт должен вернуть значение 2, которое позволит получить поток выполнения getStatus в USBMon, чтобы завершить работу успешно.

Параметры (метод requestStatus)

scriptContext [in] Объект IPrinterScriptContext, предоставляющий доступ к соответствующим пакетам свойств. printerStream

[in] Объект IPrinterScriptableSequentialStream , позволяющий читать и записывать доступ к USB-шине. printerBidiSchemaResponses

[out] Объект, который скрипт использует для хранения всех ответов на ключи запроса.

Возвращаемые значения (метод requestStatus)

Возвращаемое значение Description
0 Скрипт успешно завершен.
2 Подключенное устройство больше не поддерживает запрошенное состояние, и эта функция не должна вызываться снова.

IPrinterScriptContext

IPrinterScriptableSequentialStream

Расширитель USB-байди