You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

EPSON TM-U220B打印机调用Open()报错,无法打印Hello World求助

解决POS打印机Open()前需定义DevicePath的问题

问题原因

这个错误是因为POS服务对象在调用Open()前必须明确指定DevicePath属性值,部分场景下PosExplorer.GetDevices()返回的DeviceInfo不会自动填充该属性,需要手动设置。

解决方案

1. 确认驱动与配置正确性

确保你已安装对应打印机的OPOS驱动(比如EPSON TM-U220B的官方OPOS驱动),并且通过POS for .NET设备管理器完成了设备配置,验证设备的DevicePath已正确设置。

2. 修改代码手动设置DevicePath

在创建打印机实例后、调用Open()前,从DeviceInfo的属性中提取并设置DevicePath,修改后的代码如下:

using Microsoft.PointOfService;
using System;

namespace PrinterTest
{
    class Program
    {
        static void Main(string[] args)
        {
            PosExplorer explorer = new PosExplorer();
            DeviceCollection devices = explorer.GetDevices(DeviceType.PosPrinter);

            Console.WriteLine("Checking for connected POS Printers...");
            foreach (DeviceInfo device in devices)
            {
                if (device.ServiceObjectName.IndexOf("TM-U220B", StringComparison.OrdinalIgnoreCase) >= 0)
                {
                    Console.WriteLine("TM-U220B printer is connected!");

                    PosPrinter printer = (PosPrinter)explorer.CreateInstance(device);
                    
                    // 新增:从DeviceInfo属性中获取并设置DevicePath
                    if (device.Properties.ContainsKey("DevicePath"))
                    {
                        printer.DevicePath = device.Properties["DevicePath"].ToString();
                    }

                    printer.Open();

                    printer.Claim(1000);

                    printer.DeviceEnabled = true;

                    printer.PrintNormal(PrinterStation.Receipt, "Hello World\n");

                    //printer.Cut(PosPrinterCutType.FullCut);

                    printer.Release();
                    printer.Close();

                    Console.WriteLine("Printed 'Hello World' successfully.");
                    break;
                }
            }

            Console.WriteLine("Press any key to exit...");
            Console.ReadKey();
        }
    }
}

3. 额外排查点

  • 如果上述代码仍报错,可尝试直接指定DevicePath(比如EPSON打印机的DevicePath通常为LPT1:或USB001:,根据实际连接方式调整);
  • 确保程序以管理员权限运行,避免设备访问权限不足;
  • 验证POS for .NET版本与.NET Framework 4.8兼容。

内容的提问来源于stack exchange,提问作者NOOB14

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 02:48:22