【问题标题】:Printing Code 128 C barcode through C++ code interacting with OPOS Common Controls 1.8通过与 OPOS Common Controls 1.8 交互的 C++ 代码打印 Code 128 C 条形码
【发布时间】:2012-05-13 00:30:21
【问题描述】:

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

通常,我使用以下代码 sn-p 打印条形码:

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 上找到有关扩展代码的更多信息。

我们将非常感谢您在这方面的任何帮助。

提前致谢。 普罗苏

【问题讨论】:

  • 128C 仅编码 00-99 的数字。如果您尝试添加 ASCII 文本,则需要使用 128A 或 128B - 或将 ASCII 转换为数字 ('{C' = 91 35 ),并记得在扫描时将其转换回。

标签: c++ printing barcode epson opos


【解决方案1】:

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

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

您应该与爱普生核实。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-04-21
    • 2017-01-08
    • 2014-04-22
    • 2015-05-06
    • 2011-01-28
    • 2013-03-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多