OPOS PosExplorer.GetDevice () renvoie null lorsqu’il est exécuté dans le service Windows

L’extrait de code ci-dessous utilise OPOS .NET pour ouvrir une imprimante PDV à des fins d’impression. Cela fonctionne bien lorsqu’il est exécuté dans le cadre d’une application autonome. Lorsqu’il est exécuté par un service Windows, l’appel à GetDevice (…) renvoie toujours null.

explorer = new PosExplorer(); device_info = explorer.GetDevice(DeviceType.PosPrinter, PrinterName); printer = (PosPrinter)explorer.CreateInstance(device_info); printer.Open(); printer.Claim(1000); printer.DeviceEnabled = true; 

Il se trouve que l’imprimante est une Epson TM-U220B. Existe-t-il un problème de sécurité qui doit être résolu avant qu’un service ait access aux périphériques POS? Quelqu’un peut-il recommander une bonne source d’informations concernant le développement de Windows Services utilisant OPOS .NET?

Ah OPOS, ça fait longtemps …;)

Cela ressemble à la sécurité. Pour vérifier si c’est le cas: 1. Exécutez le service sous un compte d’utilisateur dont vous savez qu’il fonctionne à partir de l’application autonome. 2. Vérifiez le paramètre dans la configuration du service qui lui permet d’interagir avec le bureau.

Votre code a l’air bien. Je vois le nom de variable PrinterName. Cette variable doit contenir le nom logique atsortingbué à l’imprimante. L’atsortingbution de nom logique est une étape distincte qui peut être négligée. Vous pouvez vérifier l’existence correcte du nom logique à l’aide de POSDM disponible dans le kit SDK pour .Net. Le chemin de commande serait

C: \ Fichiers de programme \ Point de service Microsoft \ LISTNAMES POSDM

Si le périphérique et le nom logique atsortingbué n’apparaissent pas, cela expliquerait votre situation actuelle.