开发者

OPOS PosExplorer.GetDevice() returns null when executed in Windows Service

开发者 https://www.devze.com 2023-01-12 01:01 出处:网络
The code snippet below makes use of OPOS .NET to open a POS printer for 开发者_如何学JAVAprinting. It works fine when executed as part of a standalone application. When executed by a Windows Service t

The code snippet below makes use of OPOS .NET to open a POS printer for 开发者_如何学JAVAprinting. It works fine when executed as part of a standalone application. When executed by a Windows Service the call to GetDevice(...) always returns 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;

The printer happens to be an Epson TM-U220B. Is there a security issue that needs to be overcome before a service has access to POS devices? Can anyone recommend a good source of information regarding the development of Windows Services that use OPOS .NET?


Ah OPOS, it's been a while ... ;)

It sounds like security. The way to test if it is: 1. Run the service under a user account that you know works from the standalone app 2. Check the setting in the service configuration that allows it to interact with the desktop.


Your code looks good. I see the variable name PrinterName. This variable should contain the Logical Name assigned to the printer. The Logical Name assignment is a seperate step that may be overlooked. You can confirm the proper existance of the Logical Name using POSDM available from the POS for .Net SDK. The command path would be

C:\Program Files\Microsoft Point Of Service\POSDM LISTNAMES

If the device and assigned Logical Name do not appear then that would explain your current situation.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号