我正在使用“.NET v1.14 的 Microsoft 服务点”。用于连接 Posiflex 热敏打印机(PP8800 型号)的 dll。我正在使用的代码片段也粘贴在下面。我正在从 WPF 应用程序运行此代码。
但我面临一个奇怪的问题。如果打印机通电并重新启动连接打印机的机器,则下面粘贴的代码无法认领打印机,也不会出现在Claim()
语句中。而如果我关闭打印机电源,然后在运行以下代码段之前打开它,那么它就可以认领打印机。
PosExplorer posExplorer = new PosExplorer();
var printerList = posExplorer.GetDevices(DeviceType.PosPrinter);
foreach (DeviceInfo item in printerList)
{
if (item.ServiceObjectName != printerName)
continue;
posPrinter = (PosPrinter)posExplorer.CreateInstance(item);
posPrinter.Open();
posPrinter.PowerNotify = PowerNotification.Enabled;
posPrinter.FlagWhenIdle = true;
posPrinter.StatusUpdateEvent += PosPrinter_StatusUpdateEvent;
posPrinter.DirectIOEvent += PosPrinter_DirectIOEvent;
posPrinter.ErrorEvent += PosPrinter_ErrorEvent;
posPrinter.OutputCompleteEvent += PosPrinter_OutputCompleteEvent;
try
{
posPrinter.Claim(100);
if (posPrinter.Claimed)
{
isPrinterClaimed = true;
}
else
{
isPrinterClaimed = false;
}
}
catch (Exception ex)
{
isPrinterClaimed = false;
}
break;
}
有人在使用 OPOS 库时遇到过同样的问题吗?