c# - 使用 C# 使用带有 PosExplorer Opos SDK.Net 的打印机的 IP 地址
问题描述
在使用打印机的设备名称之前,我有一个这样的代码,但我们迁移了,现在在打印机上使用 ip 地址,我现有的代码看起来像这样
...
internal void ProcessInformation()
{
PosExplorer posExplorer = new PosExplorer();
DeviceCollection receiptPrinterDevices = posExplorer.GetDevices(DeviceType.PosPrinter);
DeviceInfo receiptPrinterDevice = posExplorer.GetDevice(DeviceType.PosPrinter, "SRP2");
PosPrinter printer = (PosPrinter)posExplorer.CreateInstance(receiptPrinterDevice);
printer.Open();
printer.Claim(10000);
printer.DeviceEnabled = true;
printer.PrintNormal(PrinterStation.Receipt, "test print 1");
}
...
我需要帮助才能开始,例如如何使用 PosExplorer 编写代码,使用 ip 地址将 api 连接到打印机并使用标题和正文格式进行打印?
解决方案
如何指定它取决于打印机供应商提供的服务对象的类型及其设置方式。
似乎没有使用 POS for.NET API 的标准化通用方法。
一种可能的方法是使用本机 POS for.NET 模块作为服务对象并使用PosCommon.DevicePath 属性(POS for .NET v1.12 SDK 文档)。
备注
PosExplorer类尝试使用以下算法将 DevicePath 属性初始化为物理设备的硬件路径:
1和2是通过另一种方式写入要预先设置的信息的方法。
- 如果物理硬件支持即插即用,并且服务对象通过HardwareId自定义属性或配置 XML 文件映射到特定硬件 ID,则PosExplorer类将DevicePath属性设置为物理设备的HardwarePath属性。服务对象通常可以使用此DevicePath属性直接访问设备。
- 如果设备不支持即插即用,但已通过 Posdm.exe 或 WMI 进行配置,则DevicePath属性将设置为配置设备时指定的路径。
可以在应用程序执行时动态设置3。
- 如果设备不支持即插即用且未通过 Posdm.exe 或 WMI 进行配置,则DevicePath属性将设置为空字符串(“”),并且必须由服务对象在base/ 中的Open方法之前设置可以调用基本类。
如果您将 OPOS 用于您的服务对象,您可能需要更改 Windows 注册表设置,因此在运行应用程序时您无能为力。
无论如何,请询问您的打印机供应商是否支持它以及如何做。
推荐阅读
- ruby-on-rails - 使用除非 current_page 时遇到问题?隐藏按钮
- python - Python:如何显示嵌套类型信息?
- java - android中带有路线方向的室内地图
- mapbox-gl - 如何在 Mapbox GL 中创建一条线?
- firebase - 及时从 Firestore 中检索数据
- javascript - 如何在不点击下载链接的情况下从 react-pdf 生成下载的 pdf?
- laravel - 我可以将数据透视表数据合并到父对象中吗?
- javascript - 我可以编辑 MongoDB 对象并取消它的先前值吗?
- html - 使用引导类在具有不同断点的同一行上设置图像和文本的顺序
- r - 从R中的ggplot过滤geom_lines?