下面的代码片段使用OPOS .NET打开POS打印机进行打印。它作为独立应用程序的一部分执行时工作正常。当由Windows服务执行时,对GetDevice(...)的调用始终返回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;
打印机恰好是Epson TM-U220B。在服务访问POS设备之前是否存在需要克服的安全问题?任何人都可以推荐有关使用OPOS .NET的Windows服务开发的良好信息来源吗?
答案 0 :(得分:3)
啊OPOS,已经有一段时间......;)
这听起来像是安全。测试它是否是: 1.在您知道可以在独立应用程序中运行的用户帐户下运行服务 2.检查服务配置中允许其与桌面交互的设置。
答案 1 :(得分:2)
您的代码看起来不错。我看到变量名称PrinterName。此变量应包含分配给打印机的逻辑名称。逻辑名称分配是一个可能被忽略的单独步骤。您可以使用POS for .Net SDK中提供的POSDM确认逻辑名称的正确存在。命令路径为
C:\ Program Files \ Microsoft Point of Service \ POSDM LISTNAMES
如果设备和指定的逻辑名称没有出现,那么这将解释您当前的情况。