0

我正在尝试使用 OPOS Common Controls 1.8 通过 Epson TM-H6000III 收据打印机打印 Code 128 C 型条形码(因为 A/B 型对于我的要求来说太宽了)。我的代码是用 C++ 编写的。

通常,我使用以下代码段打印条形码:

const LONG PTR_BCS_Code128 = 110;
lOposBarcodeType = PTR_BCS_Code128;
lReturn = m_PosPrinter.PrintBarCode(2,*lpszTextline,lOposBarcodeType,120,5,PTR_BC_CENTER,PTR_BC_TEXT_BELOW);

这里,*lpszTextline表示要打印为条形码的数据。

根据在线找到的建议,我尝试进行以下更改以打印 Code 128 C 格式的条形码:

const LONG PTR_BCS_Code128_Parsed = 123;
lOposBarcodeType = PTR_BCS_Code128_Parsed;
lReturn = m_PosPrinter.PrintBarCode(2,*lpszTextline,lOposBarcodeType,120,5,PTR_BC_CENTER,PTR_BC_TEXT_BELOW);

并尝试以各种方式格式化条形码数据:

  • 前导“{C”
  • 前导“{C”,尾随“H”
  • 没有。数据中的字符数

但没有一种方法奏效。它总是导致 ResultCodeExtended = 300003 的 OPOS_E_ILLEGAL 错误。我也无法在 Internet 上找到有关扩展代码的更多信息。

在这方面的任何帮助将不胜感激。

提前致谢。普罗苏

4

1 回答 1

0

该模式通常由打印机固件根据您尝试打印的数据确定。最好的行为是它尝试尽可能紧凑地打印:如果数据都是数字,则使用模式 C,如果数据是字母等,则使用模式 A,并根据需要从模式切换到模式:17 位数字前 16 位可能打印为模式 C,然后切换到第 17 位的模式 A。

如果您的打印机固件直接处理此问题,您甚至可能无法自己选择模式。或者,某些热敏打印机只能打印模式 C,如果您尝试打印字母字符,则会返回错误。(我们有一些只能打印模式 C 的旧 IBM Suremark 打印机。)

你应该去爱普生看看。

于 2012-06-06T17:00:20.893 回答