2012-05-03 39 views
0

我试图打码128 C类条码(如A/B型是太宽了,我的要求)使用通过爱普生TM-H6000III票据打印机OPOS公共控制1.8。我的代码是用C++编写的。打印代码到C 128ç条码++代码OPOS常见的交互控制1.8

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

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表示数据要被打印为条形码。

从网上找到的建议,我试着做以下修改打印在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”
  • 制作没有。在数据中的字符甚至

但没有的方式工作。它始终导致OPOS_E_ILLEGAL错误,并导致ResultCodeExtended = 300003.我无法在Internet中找到有关扩展代码的更多信息。

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

在此先感谢。 Prosu

+0

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

回答

0

模式往往是由打印机固件决定,根据你要打印的数据。最好的行为是当它尝试打印尽可能紧凑时:如果数据是全部数字,则使用模式C,如果模式A是字母等,则使用模式A,并根据需要从模式切换到模式:17位数字可能会打印为模式C的前16位数字,然后切换到模式A的第17位数字。

如果您的打印机固件直接处理此问题,您甚至可能无法自行选择模式。或者,某些热敏打印机不能打印除模式C以外的任何内容,并且如果尝试打印字母字符将返回错误。 (我们有一些旧的IBM SureMark打印机,只能打印模式下)

你应该爱普生检查。