0

这是一个大问题......但我也有关于我在尝试使用 POS 后遇到的问题的详细信息。我已经在谷歌上搜索了几天......我必须说,我很难把这些整理出来。

因此,我需要在 XP 上使用 VB.NET 2010(最终在 Windows 嵌入式 POSReady 上运行)通过 USB 向我的 EPSON-TM-T88V 热敏 POS 打印机打印一张简单的收据。

我只需要打印一些文字和徽标。我的徽标存储在打印机上。所以,我需要使用爱普生的 ESC/POS 命令。

那么,使用 Microsoft.PointOfService 有意义吗?将一些转义序列发送到打印机似乎需要做很多事情!

显然,PointOfService 系统尚未更新为与 VB.net 2010 无缝协作(详情如下)这就是为什么我想知道我是否走错了路。

=========================

如果这是正确的道路......这就是我所做的以及我陷入困境的地方。

对于尝试使用 VB 2010 中的 PointOfService 类的人:首先,您需要下载并安装 POS.net (Microsoft.PointOfService) - 免费下载 MS。然后你需要在你的 vb.net 项目中添加引用。当您尝试运行它时,您可能会收到如下错误:

{"此方法显式使用 CAS 策略,已被 .NET Framework 淘汰。出于兼容性原因,为了启用 CAS 策略,请使用 NetFx40_LegacySecurityPolicy 配置开关。请参阅http://go.microsoft.com/fwlink/ ?LinkID=155570了解更多信息。”} 到处都有关于如何解决此问题的链接……您需要修复配置文件。这是其中之一: http : //social.msdn.microsoft.com/Forums/en-US/posfordotnet/thread/9b3e6f34-de26-4a36-ab8e-13722f53b9e4/ 对于 2010 年,显然您需要在 QTagent32.exe 中修复.config 和 QTAgent.exe.config。

好的,所以我做了这一切。但是 CAS 策略错误再次出现,在我应用推荐的修复程序后采用了不同的堆栈方式。在第一次调用系统时,我收到 CAS 错误....

at Microsoft.PointOfService.Management.Explorer.CreateExplorer()
   at Microsoft.PointOfService.PosExplorer.LoadExplorer()
   at Microsoft.PointOfService.PosExplorer.Initialize()
   at Microsoft.PointOfService.PosExplorer..ctor()

还有什么想法吗?谢谢 :-)

4

1 回答 1

0

我不需要使用整个 POS 包来打印到 POS 打印机。相反,只需将字节直接写入打印机。这适用于带有 Epson POS/ESC 转义序列的 VB.net 4.0。

以下是说明: http: //support.microsoft.com/kb/322090

基本上,我使用了 rawprinterhelper 类。然后您可以直接发送转义序列。

我确实收到了 PInvokeStackImbalance 错误。rawprinterhelper 需要这一更改才能工作。代码需要看起来像这样(pd 参数是整数而不是长整数):

<DllImport("winspool.Drv", EntryPoint:="OpenPrinterW", _
      SetLastError:=True, CharSet:=CharSet.Unicode, _
       ExactSpelling:=True, CallingConvention:=CallingConvention.StdCall)> _
   Public Shared Function OpenPrinter(ByVal src As String, ByRef hPrinter As  intPtr, ByVal pd As Integer) As Boolean
  End Function

http://social.msdn.microsoft.com/Forums/en-US/csharpgeneral/thread/13fce4f7-e779-4ce1-b421-1de6007595fe/

于 2012-01-25T15:25:47.293 回答