Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Important
La plateforme d’impression moderne est le moyen privilégié de Windows pour communiquer avec les imprimantes. Nous vous recommandons d’utiliser le pilote de classe IPP en boîte de Microsoft, ainsi que les applications de support d’impression (PSA), pour personnaliser l’expérience d’impression dans Windows 10 et 11 pour le développement de périphériques d’impression.
Pour plus d’informations, consultez le guide de conception de l’application de support d’impression v1 et v2.
Les fabricants peuvent utiliser l’API JavaScript présentée ici, en combinaison avec un fichier XML Bidi, pour fournir une prise en charge de Bidi sur une connexion USB à un périphérique d’impression.
Pour plus d’informations sur la communication Bidi USB avec un périphérique d’impression, veuillez consulter la section USB Bidi Extender.
Bidi sur USB
méthode getSchemas
Cette méthode gère les requêtes Bidi GET telles que \Printer.Consumables.YellowInk:Level. Le code JavaScript est capable de faire des requêtes à l’imprimante en utilisant le bus USB et de lire les réponses à mesure qu’elles reviennent.
syntax
function getSchemas(scriptContext, printerStream, schemaRequests, printerBidiSchemaResponses);
Paramètres (méthode getSchemas)
scriptContext [in] Objet IPrinterScriptContext qui fournit l’accès aux sacs de propriétés pertinents. printerStream
[in] Objet IPrinterScriptableSequentialStream qui permet l’accès en lecture et en écriture au bus USB. schemaRequests
[in] Objet tableau contenant toutes les chaînes de requêtes Bidi demandées. printerBidiSchemaResponses
[out] Objet que le script utilise pour stocker toutes les réponses aux clés de requête.
Valeurs de retour (méthode getSchemas)
| Valeur retournée | Description |
|---|---|
| 0 | Le script s’est terminé avec succès. |
| 1 | Le périphérique connecté n’était pas prêt à fournir certaines informations demandées. Indique que le système d’impression doit rappeler la fonction en utilisant les clés de requête ajoutées lors du traitement. |
setSchema, méthode
Cette méthode gère les opérations Bidi SET. Le script peut déterminer la valeur du schéma Bidi entrant pour soit définir des données dans le périphérique, soit effectuer une action sur le périphérique comme nettoyer les têtes d’encre.
Si le périphérique n’est pas prêt à traiter les données spécifiées, la méthode peut retourner une valeur de 1 pour indiquer que l’appel doit être réessayé après une période d’attente.
Paramètres (méthode setSchema)
scriptContext [in] Objet IPrinterScriptContext qui fournit l’accès aux sacs de propriétés pertinents. printerStream
[in] Objet IPrinterScriptableSequentialStream qui permet l’accès en lecture et en écriture au bus USB. printerBidiSchemaElement
[in] Objet IPrinterBidiSchemaElement qui contient toutes les données associées à la valeur de schéma Bidi à définir.
Valeurs de retour (méthode setSchema)
| Valeur retournée | Description |
|---|---|
| 0 | Le script s’est terminé avec succès. |
| 1 | Le périphérique connecté n’était pas prêt à fournir certaines informations demandées. Indique que le système d’impression doit rappeler la fonction en utilisant l’élément printerBidiSchemaElement fourni. |
getStatus, méthode
Cette méthode est utilisée pour obtenir le statut non sollicité d’une imprimante pendant que le périphérique est en cours d’impression. Cette fonction est appelée uniquement pendant l’impression. Le périphérique doit fournir des données sur le canal de lecture que ce script peut interpréter en valeurs de schéma Bidi. Comme le canal d’écriture vers le périphérique est bloqué par les données d’impression, seul le statut non sollicité est pris en charge ici.
Cette méthode est appelée à plusieurs reprises pendant l’impression. Il est attendu que le périphérique ne retourne des données que si elles sont disponibles et que le script peut les comprendre. Si l’appareil ne prend pas en charge l’état non sollicité ou qu’il n’est pas nécessaire d’appeler cette fonction à nouveau, le script doit retourner la valeur 2 qui indiquera au thread d’exécution getStatus dans USBMon de quitter correctement.
Paramètres (méthode getStatus)
scriptContext [in] Objet IPrinterScriptContext qui fournit l’accès aux sacs de propriétés pertinents. printerStream
[in] Objet IPrinterScriptableSequentialStream qui permet l’accès en lecture au bus USB. printerBidiSchemaResponses
[out] Objet que le script utilise pour stocker toutes les réponses aux clés de requête.
Valeurs de retour (méthode getStatus)
| Valeur retournée | Description |
|---|---|
| 0 | Le script s’est terminé avec succès. |
| 2 | Le périphérique connecté ne prend plus en charge le statut non sollicité et cette fonction ne doit plus être appelée. |
startPrintJob, méthode
USBMon appelle cette méthode pendant StartDocPort. L’appel de startPrintJob permet au pilote de modifier le flux d’impression ou d’implémenter un protocole de requête/réponse basé sur l’hôte qui est utilisé pendant l’impression d’un travail sur l’appareil d’impression. L’objet de contexte de travail est transmis à la fonction pour permettre au code JavaScript du fabricant de gérer les propriétés du travail et d’accéder aux flux de données persistants. Les données d’impression sont transmises sous forme de tableau JavaScript pour que le code JavaScript les traite. startPrintJob fournit également l’accès à l’appareil d’imprimante de la manière suivante :
Via le flux d’impression
Via un objet qui peut renvoyer des réponses de schéma Bidi pour USBMon à traiter
Syntaxe (méthode startPrintJob)
function startPrintJob(jobScriptContext, printerStream, printerBidiSchemaResponses);
Paramètres (méthode startPrintJob)
jobScriptContext [in] Objet IPrinterScriptUsbJobContext qui permet au code JavaScript du fabricant d’accéder au conteneur de propriétés de travail et aux flux de données persistants. printerStream
[in] Objet IPrinterScriptableSequentialStream , que le code JavaScript du fabricant peut utiliser pour lire et écrire des données sur l’appareil d’impression. printerBidiSchemaResponses
[out] Objet IPrinterBidiSchemaResponses que le code JavaScript du fabricant peut utiliser pour renvoyer les modifications/mises à jour des valeurs de schéma Bidi.
Valeurs de retour (méthode startPrintJob)
| Valeur retournée | Description |
|---|---|
| 0 | Success. |
| 1 | Échec : Nettoyez l’objet de contexte de travail et renvoyez un code d’erreur au spouleur d’impression. |
writePrintData, méthode
USBMon appelle cette méthode pendant writePort. L’appel d’writePrintData permet au pilote de modifier le flux d’impression ou d’implémenter un protocole de demande/réponse basé sur l’hôte qui est utilisé pendant l’impression d’un travail sur l’appareil d’impression. L’objet de contexte de travail est passé dans la méthode pour permettre au code JavaScript du fabricant de gérer les propriétés du travail et d’accéder aux flux de données persistants. Les données d’impression sont transmises sous forme de tableau JavaScript pour que le code JavaScript les traite. writePrintData fournit également l’accès à l’appareil d’imprimante de la manière suivante :
Via le flux d’impression
Via un objet qui peut renvoyer des réponses de schéma Bidi pour USBMon à traiter
function writePrintData(jobScriptContext, writePrintDataProgress, printData, printerStream, printerBidiSchemaResponses);
Paramètres (méthode writePrintData)
jobScriptContext [in] Objet IPrinterScriptUsbJobContext qui permet au code JavaScript du fabricant d’accéder au conteneur de propriétés de travail et aux flux de données persistants. writePrintDataProgress
[in] Objet IPrinterScriptableSequentialStream que le code JavaScript du fabricant peut utiliser pour lire et écrire des données sur l’appareil d’impression. printData
[in] Objet IDispatch , tableau JavaScript des données d’impression actuelles. Le paramètre printData permet au code JavaScript de manipuler les données avant de les mettre en cache sur l’un des flux de données dans jobScriptContext ou de les envoyer à l’imprimante via printerStream. printerStream
[in] Objet IPrinterScriptableSequentialStream que le code JavaScript du fabricant peut utiliser pour lire et écrire des données sur l’appareil d’impression. printerBidiSchemaResponses
[out] Objet IPrinterBidiSchemaResponses que le code JavaScript du fabricant peut utiliser pour retourner les modifications ou mises à jour de toute valeur de schéma Bidi.
Valeurs de retour (méthode writePrintData)
| Valeur retournée | Description |
|---|---|
| 0 | Success. Le nombre d’octets traités à partir du flux de données d’impression (printData) est retourné via writePrintDataProgress. |
| 1 | Échec : Renvoyez un code d’erreur au spouleur d’impression. |
| 2 | Nouvelle tentative : traitez toutes les mises à jour de schéma Bidi (y compris Bidi Events) dans printerBidiSchemaResponses, puis appelez à nouveau la fonction JavaScript pour permettre au code du fabricant de continuer à traiter les données. Le nombre d’octets traités à partir du flux de données d’impression (printData) est retourné via writePrintDataProgress. |
| 3 | DeviceBusy : Le canal de communication du périphérique n’accepte pas les données pour le moment. Cela n’indique pas un échec. USBMon doit informer le spouleur que le périphérique est occupé, puis rappeler la fonction ultérieurement. Le nombre d’octets traités à partir du flux de données d’impression (printData) est retourné via writePrintDataProgress. |
| 4 | AbortTheJob : Le périphérique ne peut pas continuer à traiter le travail, ou l’utilisateur a annulé le travail en utilisant le panneau avant du périphérique d’impression. Lorsque USBMon reçoit le message pour annuler un travail d’impression, il transmet l’information au spouleur d’impression pour annuler le travail, avant de retourner. |
endPrintJob, méthode
USBMon appelle cette méthode pendant endDocPort. L’appel de endPrintJob permet au pilote de modifier le flux d’impression ou d’implémenter un protocole de demande/réponse basé sur l’hôte qui est utilisé pendant l’impression d’un travail sur l’appareil d’impression. L’objet de contexte de travail est transmis à la méthode pour permettre au code JavaScript du fabricant de :
Terminer le traitement de toutes les données d’impression persistantes
Accéder au périphérique d’impression via le flux d’impression
Accéder à un objet qui peut transmettre des réponses de schéma Bidi pour USBMon à traiter
function endPrintJob(jobScriptContext, printerStream, printerBidiSchemaResponses);
Paramètres (méthode endPrintJob)
jobScriptContext [in] Objet IPrinterScriptUsbJobContext qui permet au code JavaScript du fabricant d’accéder au conteneur de propriétés de travail et aux flux de données persistants. printerStream
[in] Un objet IPrinterScriptableSequentialStream que le code JavaScript du fabricant peut utiliser pour lire et écrire des données vers le périphérique d’impression. printerBidiSchemaResponses
[out] Un objet IPrinterBidiSchemaResponses que le code JavaScript du fabricant peut utiliser pour renvoyer toute modification ou mise à jour des valeurs du schéma Bidi.
Valeurs de retour (méthode endPrintJob)
| Valeur retournée | Description |
|---|---|
| 0 | Succès : Nettoyez l’objet de contexte de travail et renvoyez le succès au spouleur d’impression. |
| 1 | Échec : Nettoyez l’objet de contexte de travail et renvoyez un code d’erreur au spouleur d’impression. |
| 2 | Nouvelle tentative : traitez les mises à jour de schéma Bidi (y compris Les événements Bidi) dans printerBidiSchemaResponses, puis appelez à nouveau la fonction JavaScript pour permettre au code JavaScript du fabricant de continuer à traiter les données. |
Bidi sur USB secondaire
Si l’appareil prend en charge une interface USB secondaire, l’appareil peut utiliser les méthodes getSchemas et setSchema décrites dans les sections précédentes, en plus de la méthode requestStatus .
requestStatus, méthode
Cette méthode est appelée au lieu de getStatus, si la directive BidiUSBStatusInterface a été spécifiée dans le fichier manifeste du pilote v4. requestStatus est utilisé pour obtenir l’état d’un appareil d’impression pendant l’impression de l’appareil.
Le diagramme suivant fournit une vue d’ensemble de l’architecture d’extension BIDI USB, montrant le scénario dans lequel la directive BidiUSBStatusInterface a été spécifiée et la communication est donc routée via une autre interface USB.
Cette méthode est appelée à plusieurs reprises pendant l’impression. Il est attendu que le périphérique ne retourne des données que si elles sont disponibles et que le script peut les comprendre. Si l’appareil ne prend pas en charge l’état sollicité ou qu’il n’est pas nécessaire d’appeler cette méthode à nouveau, le script doit retourner une valeur de 2 qui indiquera au thread d’exécution getStatus dans USBMon de quitter correctement.
Paramètres (méthode requestStatus)
scriptContext [in] Objet IPrinterScriptContext qui fournit l’accès aux sacs de propriétés pertinents. printerStream
[in] Objet IPrinterScriptableSequentialStream qui permet l’accès en lecture et en écriture au bus USB. printerBidiSchemaResponses
[out] Objet que le script utilise pour stocker toutes les réponses aux clés de requête.
Valeurs de retour (méthode requestStatus)
| Valeur retournée | Description |
|---|---|
| 0 | Le script s’est terminé avec succès. |
| 2 | Le périphérique connecté ne prend plus en charge le statut sollicité et cette fonction ne doit plus être appelée. |