我正在尝试在我的 winforms 应用程序中实现 POS.NET。我要做的是从我的 EPSON TM-T20 收据打印机打印收据。我已经成功构建了一个打印测试应用程序:
try
{
var posExplorer = new PosExplorer();
DeviceCollection devices = posExplorer.GetDevices((DeviceCompatibilities)Enum.Parse(typeof(DeviceCompatibilities), "Opos", false));
DeviceInfo deviceInfo = devices[0];
var posCommon = (PosCommon)posExplorer.CreateInstance(deviceInfo);
Console.WriteLine("Created instance of device: " + deviceInfo.ServiceObjectName + "\r\n");
posCommon.Open();
Console.WriteLine("Opened device: " + deviceInfo.ServiceObjectName + "\r\n");
var printer = (Microsoft.PointOfService.PosPrinter)posCommon;
printer.Claim(1000);
printer.DeviceEnabled = true;
printer.PrintNormal(PrinterStation.Receipt, text + "\x1B|1lF");
printer.CutPaper(90);
printer.Release();
printer.Close();
}
catch (Exception ae)
{
Console.WriteLine(ae.Message);
}
这在 .NET 2.0 应用程序中运行良好。但是当我将代码复制到我的 4.0 项目时,它会在 printer.Open(); 处引发异常;
异常:捕获:“方法打开引发异常。无法创建服务对象实例,或无法获取其 IDispatch 接口。” (Microsoft.PointOfService.PosControlException) 捕获 Microsoft.PointOfService.PosControlException:“方法 Open 引发异常。无法创建服务对象实例,或无法获取其 IDispatch 接口。” 时间:05.08.2013 23:21:17 线程:主线程[6284]
即使我从我的 testproject 构建一个 dll 并在我的主应用程序中引用它,以及当我将它放在我的解决方案中运行 2.0 的单独项目中时,也会发生这种情况。一个 webserch 只提出这可能与 .NET 版本有关。
我在应用程序配置中将supportedRuntime 设置为2.0.50727,但这没有任何作用。非常欢迎对这里有什么问题提出建议。