2012-05-03 43 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打印機,只能打印模式下)

你應該愛普生檢查。