便携式打印机与软件开发

在A4格式文档打印之外,企业界经常需要打印票据、收据和标签,这些可以被条码扫描器扫描。它们显示价格,用于标记包裹内的物品,或用于货物的跟踪。每天在仓储、物流、供应链、维护、制造、医疗保健或公共部门等行业中,全球有数以百万计的此类票据、标签和收据被打印。标准打印机不适合打印这些,因此便携式打印机被广泛使用。Zebra是便携式工业打印机制造商的全球领导者,市场份额超过50%。

如果需要在便携式打印机上打印东西,需要一个额外的设备来告诉打印机要打印什么。可以使用桌面PC或智能手机。显然,如果想要在现场、仓库内或移动中打印东西,不能使用桌面PC。更好的选择是使用智能手机。然而,移动开发者通常发现让打印机工作太困难了。

Zebra的软件开发工具包(SDK)特别适合低级编程。这意味着即使对于高级技能的开发者来说,让打印机工作也需要大量的时间。要通过Zebra打印机打印有用的票据或收据,移动开发者需要深入Zebra的SDK代码,了解其功能。他需要理解各种网络,如蓝牙或Wi-Fi及其协议。当打印东西时,开发者需要使用打印机命令来对齐文本、打印文本、打印图片或条码、插入线条或其他对象。

Resco的解决方案将显著减少开发者需要编码的时间,以便在Windows Mobile或CE设备上通过Zebra打印机打印东西。查看在实际设备上演示样本使用的视频:

它包括打印接口和报告接口。

打印接口使用Zebra的SDK连接到打印机并发送打印命令。它是Zebra的SDK的扩展,它提供了额外的代码模型。开发者现在不需要直接向打印机发送命令。这是通过Resco的接口确保的。

报告接口与打印接口紧密合作。它直接与C#语言合作。开发者可以定义一个报告,形式为XML模板,可以绑定到任何数据源。在Resco MobileForms Toolkit中包含了一个样本应用程序,其中有一个订单和客户列表。

下面是一个样本XML模板,用于打印一些文本、线条、列表和条码。

<? xml version = "1.0" encoding = "utf-8" ?> < page Width = "400" Mode = "Journal" > <! Print some information > < panel Height = "26" DataSource = "Header" > < text X = "0" Y = "0" Font = "7" FontSize = "0" MaxLength = "14" Width = "170" HAlign = "Left" > Count: </text > < text X = "170" Y = "0" Font = "7" FontSize = "0" MaxLength = "19" Width = "230" HAlign = "Right" DataMember = "(Default)" / > < line X = "0" Y = "24" X1 = "400" Y1 = "24" LineWidth = "2" / > < /panel > <! Print list > < repeatpanel Height = "24" DataSource = "Data" > < text X = "0" Y = "0" Font = "7" FontSize = "0" DataMember = "(Default)" / > < /repeatpanel > <! Print barcode > < panel Height = "120" DataSource = "Barcode" > < barcode X = "0" Y = "0" Type = "Code128" Width = "400" Height = "96" HAlign = "Center" DataMember = "(Default)" / > < text X = "0" Y = "96" Font = "7" FontSize = "0" Width = "400" HAlign = "Center" DataMember = "(Default)" / > < /panel > < /page >

模板由几个报告对象组成,如'page'、'panel'、'text'等,在报告接口中定义。

开发者也可以添加他需要的一些自定义报告对象。这是一个定义新的'rectangle'报告对象的例子:

using System; namespace Resco.Report { public class ReportRectangle : ReportElement { public ReportRectangle() { } public int Width { get; set; } public int Height { get; set; } public int Thickness { get; set; } public override void Print(Resco.Printer.IPrinter printer) { printer.PrintRectangle( this .X, this .Y, this .Width, this .Height, this .Thickness); } public override void Scale(System.Drawing.SizeF scaleFactor) { this .Width = ( int )( this .Width * scaleFactor.Width); this .Height = ( int )( this .Height * scaleFactor.Height); base .Scale(scaleFactor); } } }

为新命令定义新的打印机接口方法:

using System; using System.Drawing; namespace Resco.Printer { public interface IPrinter : IDisposable { void PrintRectangle( int x, int y, int width, int height, int thickness); } }

在PrinterZebra类中实现新命令方法:

public void PrintRectangle( int x, int y, int width, int height, int thickness) { // BOX {x0} {y0} {x1} {y1} {width} m_toolsUtil.SendCommand( String .Format( " BOX {0} {1} {2} {3} {4}" + NL, x, m_yOffset + y, x + width, m_yOffset + y + height, thickness)); }

这是如何在XML中使用矩形的例子:

<panel Height = " 100" > <rectangle X= " 0" Y= " 0" Width= " 400" Height= " 100" Thickness= " 2" /> </ panel >

开发者可以以类似的方式定义更复杂的对象。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485